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.

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 ci-dessus, on se dirige vers le router désigné par défaut.


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 route

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.


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


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.

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

Liste des routes sur le router Linux:


Table de routage IP du noyau
Destination     Passerelle      Genmask         Indic   MSS Fenêtre irtt Iface
0.0.0.0         192.168.1.1     0.0.0.0         UG        0 0          0 eth1
192.168.1.0     0.0.0.0         255.255.255.0   U         0 0          0 eth1
192.168.3.0     0.0.0.0         255.255.255.0   U         0 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"

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 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 de 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
  • 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


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        0 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'
===========================================================================

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.



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,...).

Exemple de configuration simplifiée:


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.


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


LINUX:Sous-reseau4.pdf


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


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.

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 d'y ajouter des règles de filtrage additionnelles si nécessaire.




retour aux Notions de réseau