LINUX:Routage statique

De WIKI sur Linux (ADB)
Aller à la navigation Aller à la recherche

retour aux Notions de réseau


But

Quelques notions de base de routage statique IPV4. Celles-ci sont applicables sur tous réseaux mais sont appliquées dans les faits plutôt aux petits et moyens réseaux privés.


Principe

Toute machine a par défaut la capacité de converser avec toute autre machine se trouvant sur son propre réseau ou LAN.

Par contre, pour échanger de l'information entre des machines se trouvant sur des réseaux ou LAN différents, il faut que ces deux LAN soient reliés par un router. Mais ces machines ne peuvent converser entre elles. Il faut lui indiquer le chemin ou route à suivre. C'est le routage.

En pratique, on indique quel interface réseau utiliser pour atteindre tel réseau via tel router désigné par son adresse IP se trouvant sur le même réseau que notre machine.

Par exemple, si on a une machine Linux (192.168.1.3) sur le réseau 192.168.1.0/24 ayant l'interface réseau se nommant "enp0s25", on ajoute une route statique sur l'interface "enp0s25" pour atteindre le réseau 192.168.3.0/24 par le router ayant l'adresse IP 192.168.1.75 (router Linux). (voir le schéma plus bas)


On peut diviser le routage en deux catégories:

  • le routage dirigé; c'est à dire qu'on indique par quel router, il faut passer pour atteindre un réseau ou LAN spécifique.
  • le routage par défaut; quand on ne trouve pas son chemin dans la table de routage statique ci-dessus, on se dirige vers le router désigné par défaut qui est censé pouvoir effectuer cette tâche de transmission.


Consultation de la table de routage

Il existe des commandes de lignes pour afficher le contenu de la table de routage.


Sous Windows:

route print -4

ou

netstat -r


Sous Linux:

route -n

ou

netstat -rn

L'option "n" correspond à "numérique" pour ne pas transcrire les adresses IP en son nom.


Ajout de routes par défaut et statiques

Habituellement cette tâche est effectuée par le serveur DHCP. Notons qu'en ce qui concerne le routage, le router BBOX ne le permet plus.

En remplacement d'un adressage dynamique, on peut effectuer un adressage statique. Consultez l'article Routeur.

Sous Linux, lancez l'utilitaire:

nmtui

Ensuite "Modifiez une connexion". Dans l'écran qui s'ouvre, sélectionnez l'interface réseau désiré et cliquez sur "Modifier". Dans l'écran qui suit, la zone "Passerelle" correspond à la route par défaut.


LINUX:Nmtui.ajout.route.1.png


Au niveau de la zone "Routage", cliquez sur le bouton "Modifier" pour ajouter une route statique en suivant les écrans qui suivent:


LINUX:Nmtui.ajout.route.2.png


LINUX:Nmtui.ajout.route.3.png


LINUX:Nmtui.ajout.route.4.png


Il reste à "Valider" les changements.


Réseau privé simple

Chez vous, en privé, l'infrastructure informatique classique est constituée d'un réseau ou LAN privé relié à Internet par un router/modem (une BBOX dans mon cas) fourni par votre fournisseur d'accès à Internet (ISP) comme le montre le schéma suivant:


LINUX:Sous-reseau0.pdf


Classiquement l'adressage de ce réseau va de l'adresse 192.168.1.1 à 192.168.1.254 d'où la notation de réseau 192.168.1.0/24 ou 192.168.1.0 avec un subnetmask de 255.255.255.0. La route par défaut nous renvoie vers la BBOX qui nous donne accès à Internet.

Exemple de sortie sous Linux:


Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 enp0s25
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s25

La route par défaut est reprise en troisième ligne. le ligne suivante pour notre réseau local.

Exemple de sortie sous Windows (limitée à IPV4):


IPv4 Table de routage
===========================================================================
Itinéraires actifs :
Destination réseau    Masque réseau  Adr. passerelle   Adr. interface Métrique
          0.0.0.0          0.0.0.0      192.168.1.1      192.168.1.2     40
        127.0.0.0        255.0.0.0         On-link         127.0.0.1    331
        127.0.0.1  255.255.255.255         On-link         127.0.0.1    331
  127.255.255.255  255.255.255.255         On-link         127.0.0.1    331
      192.168.1.0    255.255.255.0         On-link       192.168.1.2    296
      192.168.1.2  255.255.255.255         On-link       192.168.1.2    296
    192.168.1.255  255.255.255.255         On-link       192.168.1.2    296
        224.0.0.0        240.0.0.0         On-link         127.0.0.1    331
        224.0.0.0        240.0.0.0         On-link       192.168.1.2    296
  255.255.255.255  255.255.255.255         On-link         127.0.0.1    331
  255.255.255.255  255.255.255.255         On-link       192.168.1.2    296
===========================================================================

La route par défaut est reprise en cinquième ligne.


NAT

Dans le schéma ci-dessus, le router de l'ISP, la BBOX, a sur son autre interface côté Internet une adresse IP publique et une route vers le router suivant (que nous ne pouvons consulter); elles sont fournies automatiquement. De ce côté, la BBOX est connue et accessible; par contre, notre réseau privé est par défaut, inconnu et donc inaccessible.

Tout message transmis comporte l'adresse de l'émetteur afin que la réponse puisse lui être retournée. Un message venant d'une machine de notre réseau privé partira bien pour rejoindre la machine cible se trouvant sur Internet via la BBOX mais la réponse ne pourra revenir que jusqu'à l'interface public de la BBOX.

C'est là qu'intervient la notion de NAT (Network address translation). Lorsque me message transite par le router BBOX, le router BBOX remplace l'adresse de l'émetteur par la sienne, côté public. Au retour, il effectue l'opération inverse pour que la réponse puisse arriver à son destinataire.


Second réseau privé

Adressage IP

Dans le schéma suivant, nous avons ajouté un second réseau privé: 192.168.3.0/25 relié au premier par un router Linux. Ce router Linux n'est rien d'autre qu'un PC ayant deux interfaces réseaux, équipé de Linux et configuré pour le transfert des messages réseaux. Ce schéma affiche l'adressage IP des différentes machines.


LINUX:Sous-reseau1.pdf


Sur le router Linux, il ne faut pas oublier d'activer le transfert inter-réseaux en ajoutant un fichier, par exemple "router.conf", dans le répertoire "/etc/sysctl.d". Ce fichier doit contenir la ligne:


net.ipv4.ip_forward = 1

On active cette configuration soit en redémarrant la machine, soit avec la commande suivante:

sysctl -p /etc/sysctl.d/router.conf


Routage idéal

Côté routage, idéalement on devrait ajouter une route statique sur le router BBOX pour ce second réseau vers le router Linux à l'adresse 192.168.1.75. Voyez le schéma qui suit. Le router Linux a une route par défaut vers le router BBOX. Toute machine se situant dans le second réseau (192.168.3.0/24) a une route par défaut vers le router Linux à l'adresse 192.168.3.1.


Liste des routes sur le router Linux:


Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 eth1
192.168.3.0     0.0.0.0         255.255.255.0   U     101    0        0 eth2

On voit en troisième ligne la route par défaut pour atteindre Internet et que les deux réseaux privés sont connus. Les noms des interfaces réseaux sont "eth1" du côté du réseau "192.168.1.0/24" et "eth2" du côté du réseau "192.168.3.0/24"


Sur le réseau 192.168.3.0/24, les tables de routages des autres machines sont:

Sous Linux:


Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
0.0.0.0         192.168.3.1     0.0.0.0         UG    100    0        0 enp0s5
192.168.3.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s5

Et sous Windows (partie très réduite):


IPv4 Table de routage
===========================================================================
Itinéraires actifs :
Destination réseau    Masque réseau  Adr. passerelle   Adr. interface Métrique
         0.0.0.0          0.0.0.0      192.168.3.1      192.168.3.71    40
     192.168.3.0    255.255.255.0         On-link       192.168.3.71   296
===========================================================================


Donc la route logique pour envoyer un message à partir de la machine 192.168.1.2 vers la machine 192.168.3.72 sera la suivante:

  • le message est envoyé par sa route par défaut au router BBOX
  • qui le renvoie au router Linux selon la route statique du réseau 192.168.3.0/24
  • le router Linux le transfère localement à la machine cible

En retour:

  • la réponse est envoyée par sa route par défaut au router Linux
  • qui le transfère localement à la machine source


LINUX:Sous-reseau2.pdf


Routage alternatif interne

Mais la BBOX ne le permet plus. Donc il faut faire autrement. On ajoute directement une route statique sur les machines, autres que les routers, du réseau 192.168.1.0/24 vers le réseau 192.168.3.0/24 en direction du router Linux 192.168.1.75. La connectivité entre les deux réseaux est dès lors opérationnelle. Voyez le schéma présenté au paragraphe suivant.


Sur le réseau 192.168.1.0/24, les tables de routages des autres machines sont:

Sous Linux:


Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic Metric Ref    Use Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG    100    0        0 enp0s25
192.168.1.0     0.0.0.0         255.255.255.0   U     100    0        0 enp0s25
192.168.3.0     192.168.1.75    255.255.255.0   UG    102    0        0 enp0s25

Et sous Windows (partie très réduite):


IPv4 Table de routage
===========================================================================
Itinéraires actifs :
Destination réseau    Masque réseau  Adr. passerelle   Adr. interface Métrique
          0.0.0.0          0.0.0.0      192.168.1.1      192.168.1.2     40
      192.168.1.0    255.255.255.0         On-link       192.168.1.2    296
      192.168.3.0    255.255.255.0      192.168.1.75     192.168.1.2     41
===========================================================================
Itinéraires persistants :
  Adresse réseau    Masque réseau  Adresse passerelle Métrique
      192.168.3.0    255.255.255.0     192.168.1.75       1
===========================================================================

Donc la route logique pour envoyer un message à partir de la machine 192.168.1.2 vers la machine 192.168.3.72 sera la suivante:

  • le message est envoyé par sa route statique au router Linux
  • qui le transfère localement à la machine cible

En retour:

  • la réponse est envoyée par sa route par défaut au router Linux
  • qui le transfère localement à la machine source


Mais un problème apparaît; les machines du réseau 192.168.3.0/24 ne peuvent accéder à Internet en effet la réponse de retour ne peut leur revenir car le router BBOX ne connait pas de second réseau 192.168.3.0/24.


Accès à Internet: SQUID

Ce Problème apparaît dès qu'on veut par exemple effectuer les mises à jour du système.

Une première solution consiste à installer et activer un proxy tel SQUID sur le router Linux. Il est orienté vers les accès de type WEB (HTTP, HTTPS, FTP,...).


LINUX:Sous-reseau4.pdf


La commande d'installation est la suivante:

dnf install squid


Un exemple de configuration simplifiée de ce serveur peut être la suivante et se trouve dans le fichier "/etc/squid/squid.conf":


acl localnet src 192.168.3.0/24
 
acl SSL_ports port 443
 
acl Safe_ports port 80	  # http
acl Safe_ports port 21	  # ftp
acl Safe_ports port 443  # https
 
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access deny to_localhost
http_access allow localnet
 
http_access deny all
 
http_port 3128
 
coredump_dir /var/spool/squid

Le port TCP de ce proxy est 3128 et est destiné à être utilisé par les machines du réseau 192.168.3.0/24.


On active et lance ce service:

systemctl enable squid
systemctl start squid


Dès lors toute requête de ce type de la part des machines du réseau 192.168.3.0/24, devra être envoyée à ce proxy (router Linux) par une configuration adaptée.

Par exemple pour une mise à jour du système Linux avec le logiciel DNF, on ajoute la ligne suivante au fichier "/etc/dnf/dnf.conf":


proxy=192.168.3.1:3128

C'est donc au final le serveur proxy, le router Linux dont l'adresse IP est connue du router BBOX, qui effectue la requête WEB et non la machine source initiale.


Mais cette solution est très partielle et la configuration d'un serveur proxy peut s'avérer difficile dans certains cas.


Routage vers Internet: NAT

Nous avons en réserve une autre solution. Comme sur le router BBOX, nous allons configurer le NAT sur le router Linux.


LINUX:Sous-reseau3.pdf


Cette configuration se fait au niveau du Firewall; dans notre cas, nous utilisons Iptables.

Il faut s'assurer que le service d'Iptables est installé:

dnf install iptables-services


Voici la configuration d'Iptables dans le fichier "/etc/sysconfig/iptables":


#****************************************************************
#****************************************************************
# FILTER
#****************************************************************
#****************************************************************
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
 
COMMIT
 
#****************************************************************
#****************************************************************
# NAT
#****************************************************************
#****************************************************************
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:INPUT ACCEPT [0:0]
 
-A POSTROUTING -o eth1     -j MASQUERADE
 
COMMIT

L'interface réseau du côté du réseau 192.168.1.0/24 se nomme "eth1".

Notons que cette configuration est totalement ouverte. A charge pour vous d'y ajouter des règles de filtrage et de redirection additionnelles si nécessaire.


On active et on lance ce service:

systemctl enable iptables
systemctl start iptables


Donc le cheminement logique pour envoyer un message à partir de la machine 192.168.3.72 vers un serveur se trouvant sur Internet sera la suivante:

  • le message est envoyé par sa route par défaut au router Linux.
  • le router Linux remplace l'adresse source par la sienne 192.168.1.75
  • le router Linux envoie le message par sa route par défaut au router BBOX
  • le router BBOX remplace l'adresse du router Linux par la sienne côté public
  • le router BBOX le transfère à son router Internet par défaut
  • et de proche en proche, le message arrivera au serveur cible sur Internet

En retour:

  • le serveur cible sur Internet envoie sa réponse
  • qui transite de proche en proche par divers routers Internet
  • la réponse est reçue au final par le router BBOX
  • le router BBOX remet l'adresse du router Linux
  • le router BBOX envoie la réponse au router Linux censé être la source
  • le router Linux remet l'adresse de la source
  • finalement le router Linux le transfère localement à la machine source




retour aux Notions de réseau