Les commandes route ou ip permettent de manipuler les tables de routage du noyau. Les modifications apportées sont temporaires, elle ne seront pas rétablies après redémarrage de la machine. Pour que les routes soient permanentes il faut les déclarer dans les fichiers de configuration des interfaces, voir le wiki definir-routes-permanentes.
L'option -n permet d'afficher les adresses sans tentative de résolution des noms:
$ route -n
Ci-dessous un exemple de table de routage
Table de routage IP du noyau
Destination Passerelle Genmask Indic Metric Ref Use Iface
0.0.0.0 192.9.200.199 0.0.0.0 UG 0 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eth0
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
192.9.200.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
192.9.201.0 192.9.200.254 255.255.255.0 UG 0 0 0 eth0
192.9.202.0 192.9.200.254 255.255.255.0 UG 0 0 0 eth0
192.9.203.0 192.9.200.254 255.255.255.0 UG 0 0 0 eth0
192.9.204.0 192.9.200.254 255.255.255.0 UG 0 0 0 eth0
192.9.205.0 192.9.200.254 255.255.255.0 UG 0 0 0 eth0
192.168.254.0 192.9.200.9 255.255.255.0 UG 0 0 0 eth0
A propos de la table:
Dans l'exemple ci-dessous on spécifie que le réseau 172.16.1.0 est atteignable via l'interface lo (boucle locale)
route add -net 172.16.1.0 netmask 255.255.255.0 dev lo
Ici on indique que pour joindre tout réseau non explicitement déclaré il faudra envoyer vers l’hôte 192.168.0.254 (passerelle par défaut):
route add default gw 192.168.0.254
route del default
Dans l'exemple ci-dessous on renseigne quelle interface utiliser pour joindre un hôte en particulier. Le cas s'est présenté lors du paramétrage d'une connexion VPN. Ici on indique que pour joindre l’hôte 10.50.0.1 il faudra utiliser l'interface tun0
$ sudo route add -host 10.50.0.1 dev tun0
Maintenant que cet hote est joignable par l'interface tun0, si l'on souhaite rediriger le trafic vers le tunnel VPN on peut supprimer l'ancienne route par défaut et la redéfinir avec cet hote:
Il existe un cache de routage, pour afficher les valeurs dans le cache
route -Cn
Pour forcer le vidage du cache de routage:
echo 0 > /proc/sys/net/ipv4/route/flush