6. Lire une table de routage simple et changer la passerelle par défaut

Couche réseau

Le routage est une fonction essentielle de la couche réseau. Les données du trafic utilisateur sont encapsulées en allant de la couche application jusqu'à la couche réseau dans des paquets IP. Ces paquets sont routés jusqu'à l'hôte correspondant à l'adresse IP destination. En fonctionnement normal, un routeur prend ses décisions d'acheminement en analysant l'adresse IP destination de chaque paquet. Ces prises de décisions se font à partir des informations présentes dans la table de routage.

Cela peut paraître surprenant, mais tout hôte disposant d'un sous-système réseau dans le noyau ou dans un composant équivalent, utilise une table de routage. Bien sûr, pour un système avec une interface Ethernet unique, le nombre d'entrées dans la table de routage est limité.

Dans cette section, le principal outil utilisé est la commande ip du paquet iproute2.

Comment visualiser la table de routage ?

Dans l'exemple ci-dessous, on visualise les tables de routage IPv4 et IPv6 d'un hôte dont l'interface Ethernet est nommée eth0.

$ ip route ls
default1 via 192.0.2.1 dev eth0
192.0.2.0/262 dev eth0 proto3 kernel scope link src 192.0.2.30

$ ip -6 route ls | fmt -t -w80
2001:db8:8083:c41e::/644 dev eth0 proto5 kernel metric 256 expires 86049sec
        pref medium
fe80::/646 dev eth0 proto kernel metric 256 pref medium
default7 via fe80::b8f1:b6ff:fee4:a0bd dev eth0 proto ra8 metric 1024 expires
        1449sec hoplimit 64 pref medium

1 7

Route par défaut. L'entrée de table de routage qui débute par le mot clé default désigne la passerelle par défaut. Cette passerelle est un routeur voisin qui permet de joindre tous les réseaux inconnus de l'hôte qui émet le paquet. La plupart du temps il s'agit du routeur qui permet de joindre le reste de l'Internet.

Le mot clé via pointe vers l'adresse IPv4 ou IPv6 de ce routeur voisin.

Dans la table de routage IPv4, on trouve en fin de ligne le nom de l'interface à partir de laquelle les paquets sont émis vers la passerelle par défaut.

2 4

Réseau local. Le réseau local auquel est raccordé l'hôte est défini automatiquement lors de la configuration de l'interface Ethernet. Ces entrées de table de routage apparaissent automatiquement dès qu'une interface est configurée et active.

Dans le cas de la table de routage IPv4 uniquement, la portée de l'information est précisée avec le mot clé scope. Ici, le réseau 192.0.2.0/26 correspond au réseau local sur lequel l'interface eth0 est raccordé. En fin de ligne on retrouve l'adresse IPv4 source utilisée lors de l'émission des paquets.

3 5 8

Apprentissage des routes. Le mot clé proto informe sur le mécanisme d'apprentissage de l'entrée de table de routage. Dans les deux exemples, toutes les informations proviennent du sous-système réseau du noyau Linux de l'hôte. C'est pourquoi on voit apparaître la réponse clé kernel.

Dans le cas de la table de routage IPv6, l'indicateur ra signifie Router Advertisement. Cette entrée de la table de routage a été obtenue via la configuration automatique sans état ou SLAAC. Voir IPv6.

6

Route de lien local. Avec le protocole IPv6, la notion de trafic de diffusion (broadcast) disparaît. C'est le trafic anycast associé au Neighbor Discovery Protocol qui permet de contacter les hôtes du voisinage réseau. Pour que les messages ICMPv6 du protocole NDP puissent être échangés, il est nécessaire de disposer d'une route vers le réseau auquel une interface active est raccordé. Cette route utilise toujours le préfixe fe80::/64.

La syntaxe de l'ensemble des options de configuration d'une interface réseau est décrite dans les pages de manuels : $ man ip-route.

Comment changer de passerelle par défaut ?

En reprenant la table de routage affichée ci-dessus, imaginons que la passerelle par défaut IPv4 ne soit plus à l'adresse 192.0.2.1 mais à l'adresse 192.0.2.20. Voici la syntaxe à utiliser pour réaliser ce changement.

Pour IPv6, la nouvelle passerelle par défaut est à l'adresse fe80::20.

$ sudo ip route del default

$ sudo ip route add default via 192.0.2.20

$ sudo ip -6 route del default

$ sudo ip -6 route add default via fe80::20 dev eth0

Comment ajouter ou supprimer une route statique ?

Imaginons que l'on veuille ajouter une entrée dans la table de routage présentée ci-dessus vers un nouveau réseau dont on connaît l'adresse. Voici la syntaxe à utiliser pour ajouter puis supprimer une entrée de table de routage avec les protocoles IPv4 et IPv6.

$ sudo ip route add 10.1.2.0/26 via 192.0.2.1

$ sudo ip route del 10.1.2.0/26

$ sudo ip -6 route add 2001:db8:2::/64 via fe80::b8f1:b6ff:fee4:a0bd dev eth0

$ sudo ip -6 route del 2001:db8:2::/64