Le routage est la façon dont les ordinateurs communiquent sur un réseau local ou sur Internet. Pour communiquer sur un réseau, les ordinateurs doivent savoir à quelle passerelle ils doivent envoyer le trafic. Une passerelle peut être un routeur de votre réseau.
La commande route est utilisée sous Linux pour afficher et modifier la table de routage IP.
Dans ce tutoriel, je vais vous expliquer comment utiliser la commande route pour ajouter des routes statiques via une passerelle pour envoyer du trafic.
1) Afficher la table de routage
Avant de modifier la table de routage, il est bon de voir la table par défaut avec les routes existantes sur votre noyau Linux.
Utilisez la commande route avec le -n
option pour afficher la table de routage IP actuelle du noyau. Cette commande permet d'identifier les réseaux connectés localement avec sa route.
La commande suivante affiche la table de routage :
$ route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 eno1
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1
172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441
192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 eno1
192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
Vous pouvez également utiliser netstat -nr
commande pour imprimer les connexions réseau, les tables de routage, les statistiques d'interface, les connexions masquées et les adhésions à la multidiffusion.
Affichez la table de routage avec la commande netstat :
$ netstat -nr
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eno1
169.254.0.0 0.0.0.0 255.255.0.0 U 0 0 0 eno1
172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eno1
192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
Maintenant, nous avons la commande ip pour afficher les routes
$ ip route show
2) Ajouter un nouvel itinéraire
Comme nous l'avons dit plus haut, pour manipuler la table de routage, nous utilisons le route add
( add est l'option) pour indiquer manuellement un chemin statique que les paquets utiliseront via le réseau. Il est utilisé pour attribuer une route statique temporaire qui ne changera que si l'administrateur modifie manuellement les valeurs de la nouvelle route.
Il existe de nombreuses possibilités d'utilisation de l'ajout d'itinéraire commande.
Nous devons indiquer le réseau de destination, le masque de sous-réseau du réseau et la passerelle à utiliser.
route add -net <network_address> gw <gateway> <interface_name>
Alternativement, vous pouvez maintenant utiliser ip route
commande, syntaxe comme suit :
ip route add <network_address> via <gateway> dev <interface_name>
Par exemple, ajoutons un nouveau réseau de route 10.0.0.0/8 et via l'adresse IP de la passerelle 192.168.1.1 :
# route add -net 10.0.0.0/8 gw 192.168.1.1 eno1
Nous pouvons maintenant afficher la table de routage en utilisant route -n
:
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 eno1
10.0.0.0 192.168.1.1 255.0.0.0 UG 0 0 0 eno1
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1
172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441
192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 eno1
192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
Vous pouvez ajouter netmask
option si vous souhaitez ajouter une valeur de masque de réseau. S'il n'est pas fourni, la commande route trouve automatiquement la valeur de netmask.
# route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.100 eth0
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
192.168.1.0 192.168.1.100 255.255.255.0 UG 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 0 0 0 eth0
169.254.0.0 * 255.255.0.0 U 0 0 0 eth0
10.0.0.0 192.168.1.254 255.0.0.0 UG 0 0 0 eth0
default 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
Pour ajouter une route vers un hôte spécifique, utilisez -host
option. Nous devons seulement indiquer la passerelle à utiliser.
route add -host <host_IP_address> gw <gateway>
Par exemple, ajoutons un hôte spécifique '10.0.0.10' puis affichons la table de routage
# route add -host 10.0.0.10 gw 192.168.1.1 eno1
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 eno1
10.0.0.0 192.168.1.1 255.0.0.0 UG 0 0 0 eno1
10.0.0.10 192.168.1.1 255.255.255.255 UGH 0 0 0 eno1
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1
172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441
192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 eno1
192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
Dans les exemples ci-dessus, la colonne flag a des valeurs différentes et cela peut être incompréhensible.
Les drapeaux possibles et sa définition :
U
- l'itinéraire est en place
H
- la cible est un hôte
G
- utiliser la passerelle
R
- rétablir la route pour le routage dynamique
D
- installé dynamiquement par démon ou par redirection
M
- modifié à partir du démon de routage ou de la redirection
A
- installé par addrconf
C
- entrée de cache
!
- rejeter l'itinéraire
3) Rejeter et supprimer un itinéraire
Nous pouvons manipuler la table de routage non seulement pour ajouter des routes statiques, mais également pour supprimer ou rejeter une route que nous insérons plus tôt.
Pour supprimer un réseau de destination de la table de routage, utilisez route del
commande :
route del -net <network_address> gw <gateway> <interface_name>
Par exemple pour supprimer la route vers notre réseau 10.0.0.0/8 :
# route del -net 10.0.0.0/8 gw 192.168.1.1 eno1
Sortie
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 eno1
10.0.0.10 192.168.1.1 255.255.255.255 UGH 0 0 0 eno1
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1
172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441
192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 eno1
192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
Pour interdire une adresse IP mais elle est toujours sur la table de routage. Notez que nous utilisons toujours le paramètre add option mais à la fin de la commande, nous devons utiliser reject
option. Nous pouvons conserver ou non notre passerelle mais nous ne mentionnons pas l'interface de sortie.
route add -host <host_IP_address> reject
Dans la commande suivante, nous rejetterons notre hôte '10.0.0.10' :
# route add -host 10.0.0.10 reject
Afficher la table de routage après les modifications :
# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 600 0 0 eno1
10.0.0.10 - 255.255.255.255 !H 0 - 0 -
10.0.0.10 192.168.1.1 255.255.255.255 UGH 0 0 0 eno1
169.254.0.0 0.0.0.0 255.255.0.0 U 1000 0 0 eno1
172.16.20.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet8
172.17.0.0 0.0.0.0 255.255.0.0 U 0 0 0 docker0
172.18.0.0 0.0.0.0 255.255.0.0 U 0 0 0 br-707c8e2f7441
192.168.1.0 0.0.0.0 255.255.255.0 U 600 0 0 eno1
192.168.161.0 0.0.0.0 255.255.255.0 U 0 0 0 vmnet1
Les routes ajoutées à l'aide des commandes ci-dessus ne sont pas persistantes après un redémarrage, nous avons donc ajouté des routes statiques au fichier de configuration pour le garder permanent.
Pour ajouter des routes statiques persistantes pour n'importe quelle distribution Linux, vous pouvez utiliser le fichier générique /etc/rc.local.
Pour Ubuntu et Debian, utilisez le fichier nommé '/etc/network/interfaces' et sur RHEL/CentOS, utilisez '/etc/sysconfig/network-scripts/route-ethX'.
Conclusion
Dans ce didacticiel, nous avons appris à ajouter des routes statiques sous Linux à l'aide de la commande route add. Il faut noter qu'avec cette méthode, la route ne changera pas à moins que vous ne la modifiiez. Il est important de supprimer les itinéraires dont nous n'avons pas besoin.
Related Read: How to Permanently add Static Route in Linux