Routage sous Linux
Le routage est fort utile pour créer un sous-réseau et cacher ainsi des ordinateurs derrière un seul.
- Il n'est pas question de routage dynamique (utilisation de RIP, OSPF, etc. et du démon routed), pour le routage dynamique voir la page routage_dynamique.
Pré-requis
Pour faire un routeur de votre ordinateur, il vous faut :
- deux cartes réseau installées (si vous voulez séparer les réseaux)
- deux réseaux différents à relier (vous pouvez les créer vous-même)
- activer le routage dans le fichier /etc/sysctl.conf
Cette façon de faire est recommandée si vous voulez séparer physiquement 2 réseaux distincts et permet un contrôle total au niveau de votre ordinateur des échanges entre les 2 réseaux.
Installation d'un réseau
Pour créer un réseau, il suffit d'associer une adresse IP à une des interfaces de votre système. Par exemple, je peux associer l'adresse IP 190.1.1.173 à mon interface eth0.
Il suffit de taper la commande suivante :
sudo ifconfig eth0 add 190.1.1.173
Pour vérifier votre association tapez :
ifconfig
sudo ip addr add 190.1.1.173 dev eth0
ip -c add
les noms des interfaces par défaut ont également changé. Au lieu de eth0 vous trouverez plus certainement quelque chose du type enp2s0f1
Vous pouvez associer autant de réseaux que vous souhaitez à une interface. (c'est ça la fameuse magie du noyau Linux )
Vous pouvez maintenant communiquer avec toutes les machines qui sont sur le même réseau que vous (ayant une autre adresse IP du réseau et reliées directement ou indirectement à votre carte réseau)
Par exemple, pour supprimer la route default, rajoutez dans le fichier interface :
ip route del default
Description du routage
Demander la table de routage actuelle :
route -n
Le tableau ci-dessus s'affiche avec une ligne par route.
Les colonnes indiquent chacune une information sur la route paramétrée.
- La destination (Réseau) : c'est une adresse IP qui indique quels sont les paquets de données qui vont suivre cette route selon leur destination.
- La passerelle (Gateway) : c'est une adresse IP qui indique par où les paquets vont passer pour arriver à destination. Ils seront envoyés à cette adresse.
- Le masque de sous-réseau (Genmask) : c'est une suite de 4 octets (comme une adresse IP) qui permet d'indiquer quelle est la taille de chaque partie de l'adresse IP (partie réseau et partie hôte). Par exemple, 255.255.255.0 comme ci-dessus indique que les 3 premiers octets seront utilisés pour le réseau et le dernier pour les adresses d'hôtes (ici la première ligne correspond à toutes les adresses comprises entre 193.17.1.1 et 193.17.1.254).
- Les indicateurs : Ils correspondent à l'état de la route (ici U signifie que la route est active (Up) et G que la route est une passerelle (Gateway). Il existent d'autres indicateurs mais ils sont moins courants (tapez man route pour les découvrir)
- Les sauts (Metric) : C'est un nombre qui indique combien d'intermédiaires il reste avant d'arriver à la destination. Cette information n'est plus utilisée (sauf par des programmes comme routed (RIP)).
- Les références (Ref) : C'est un nombre qui indique le nombre de références associées à cette route. Cette information n'est pas utilisée.
- L'utilisation (Use) : C'est un compteur d'utilisation de la route.
- L'interface réseau (Iface) : C'est le nom de l'interface réseau qui sera utilisée pour cette route. (pour avoir la liste des interfaces disponibles tapez ifconfig)
Nous pouvons voir que cette table de routage :
- Envoie à l'adresse 190.1.1.1 tous les paquets qui sont destinés au réseau 193.17.1.0 (de 193.17.1.1 à 193.17.1.254) ainsi que ceux destinés au réseau 10.226.7.0 (de 10.226.7.1 à 10.226.7.254) en passant par l'interface eth0. (lignes 1 et 3)
- Envoie à l'adresse 190.1.1.249 tous les paquets qui sont destinés au réseau 192.22.1.0 (de 192.22.1.1 à 192.22.1.254) en passant par l'interface eth0. (ligne 2)
- Envoi tous les paquets destinés au réseau 190.1.1.0 (de 190.1.1.1 à 190.1.1.254) directement aux adresses concernées en passant par l'interface eth0. (ligne 4)
- Envoie tous les paquets destinés au réseau 169.254.0.0 (de 169.254.0.1 à 169.254.255.254) directement aux adresses concernées en passant par l'interface eth0. (ligne 5)
- Envoie tous les paquets ne correspondant pas à l'une des routes précédentes vers l'adresse 190.1.1.245 en passant par l'interface eth0. (dernière ligne)
Modification du routage
Nous allons maintenant voir comment mettre en œuvre le routage entre 2 réseaux.
C'est en utilisant la commande ifconfig
Objectif
Nous voulons pouvoir faire communiquer 2 ordinateurs qui ne sont pas sur le même réseau mais qui sont tous les 2 connectés au même routeur. ajouter l'@ aux ordinateurs pour accéder aux partages qui sont développés par ubuntu
Données
- Le réseau A : 190.1.1.0/255.255.255.0 (de 190.1.1.1 à 190.1.1.254)
- L'adresse IP du poste A sur le réseau A : 190.1.1.2
- Le réseau B : 193.17.1.0/255.255.255.0 (de 193.17.1.1 à 193.17.1.254)
- L'adresse IP du poste B sur le réseau B : 193.17.1.2
Solution
Il faut tout d'abord avoir une adresse IP sur le réseau de destination afin de communiquer avec par le biais de l'interface qui y est connectée.
- Sur le routeur, paramétrez votre interface réseau connectée au réseau A comme dit précedemment. (par exemple : 190.1.1.1)
- Sur le routeur, paramétrez votre interface réseau connectée au réseau B. (par exemple : 193.17.1.1)
- Si besoin est, configurez la table de routage du poste A :
sudo route add -net 193.17.1.0 netmask 255.255.255.0 gw 190.1.1.1
ou
sudo ip route add 193.17.1.0/24 via 190.1.1.1
- Si besoin est, configurez la table de routage du poste B :
sudo route add -net 190.1.1.0 netmask 255.255.255.0 gw 193.17.1.1
ou
sudo ip route add 190.1.1.0/24 via 193.17.1.1
Lien externe Maintenant, si vous faites un ping du poste A ou du poste B vers son homologue du réseau opposé vous pouvez remarquer qu'ils peuvent maintenant communiquer entre eux.
Contributeurs : …