Contenu | Rechercher | Menus

Routage sous Linux

Le routage est fort utile pour créer un sous-réseau et cacher ainsi des ordinateurs derrière un seul.

Ce que ne présente pas cet article : 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)

Il n'est pas obligatoire d'utiliser 2 cartes réseau ou plus afin de séparer les réseaux. L'utilisation de plusieurs cartes réseau transforme juste votre ordinateur en bastion.

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

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)

Si vous voulez que Ubuntu se souvienne de votre association au redémarrage de l'ordinateur, il vous faut modifier le fichier /etc/network/interfaces, en mettant la commande up suivie de votre nouvelle route.

Par exemple, pour supprimer la route default, rajoutez dans le fichier interface :

up route del default

Indication : Lorsque vous associez une adresse IP à une interface, la table de routage est automatiquement mise à jour.

Pour que les paquets puissent aller d'une carte réseau à une autre, il est indispensable d'activer le forward. Cette procédure est expliquée dans : Comment partager une connexion internet ? dans la section Activation du partage

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.

  1. 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.
  2. 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.
  3. 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).
  4. 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)
  5. 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)).
  6. 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.
  7. L'utilisation (Use) : C'est un compteur d'utilisation de la route.
  8. 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.1.1 à 169.254.254.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)

Indication : La dernière ligne correspond à ce que l'on nomme plus couramment la passerelle par défaut (vous comprenez pourquoi ! :-) )

Modification du routage

Nous allons maintenant voir comment mettre en œuvre le routage entre 2 réseaux.

C'est en utilisant les commandes 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.

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.

Attention de ne pas prendre une adresse IP déjà utilisée !

  1. 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)
  2. Sur le routeur, paramétrez votre interface réseau connectée au réseau B. (par exemple : 193.17.1.1)
  3. 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
  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

Astuce : Il est possible de ne pas toucher aux tables de routage des postes client si le routeur est déjà leur route par défaut.

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 ensembles.

La commande route sous Windows "route print" n'est que similaire. Renseignez-vous sur la commande à taper.


Contributeurs : …



Le contenu de ce wiki est sous licence : CC BY-SA v3.0