Chapitre 21. Configuration du routage basé sur des règles pour définir des itinéraires alternatifs
Par défaut, le noyau de RHEL décide où transmettre les paquets réseau en fonction de l'adresse de destination à l'aide d'une table de routage. Le routage basé sur des règles vous permet de configurer des scénarios de routage complexes. Par exemple, vous pouvez acheminer les paquets en fonction de divers critères, tels que l'adresse source, les métadonnées du paquet ou le protocole.
Sur les systèmes qui utilisent NetworkManager, seul l'utilitaire nmcli
permet de définir des règles de routage et d'affecter des itinéraires à des tables spécifiques.
21.1. Routage du trafic d'un sous-réseau spécifique vers une passerelle par défaut différente à l'aide de nmcli
Vous pouvez utiliser le routage basé sur des règles pour configurer une passerelle par défaut différente pour le trafic provenant de certains sous-réseaux. Par exemple, vous pouvez configurer RHEL comme un routeur qui, par défaut, achemine tout le trafic vers le fournisseur d'accès Internet A à l'aide de la route par défaut. Toutefois, le trafic reçu du sous-réseau des postes de travail internes est acheminé vers le fournisseur B.
La procédure suppose la topologie de réseau suivante :
Conditions préalables
-
Le système utilise
NetworkManager
pour configurer le réseau, ce qui est la valeur par défaut. Le routeur RHEL que vous souhaitez configurer dans la procédure possède quatre interfaces réseau :
-
L'interface
enp7s0
est connectée au réseau du fournisseur A. L'IP de la passerelle dans le réseau du fournisseur est198.51.100.2
, et le réseau utilise un masque de réseau/30
. -
L'interface
enp1s0
est connectée au réseau du fournisseur B. L'IP de la passerelle dans le réseau du fournisseur est192.0.2.2
, et le réseau utilise un masque de réseau/30
. -
L'interface
enp8s0
est connectée au sous-réseau10.0.0.0/24
avec des postes de travail internes. -
L'interface
enp9s0
est connectée au sous-réseau203.0.113.0/24
où se trouvent les serveurs de l'entreprise.
-
L'interface
-
Les hôtes du sous-réseau des postes de travail internes utilisent
10.0.0.1
comme passerelle par défaut. Dans la procédure, vous attribuez cette adresse IP à l'interface réseauenp8s0
du routeur. -
Les hôtes du sous-réseau du serveur utilisent
203.0.113.1
comme passerelle par défaut. Dans la procédure, vous attribuez cette adresse IP à l'interface réseauenp9s0
du routeur. -
Le service
firewalld
est activé et actif.
Procédure
Configurez l'interface réseau vers le fournisseur A :
# nmcli connection add type ethernet con-name Provider-A ifname enp7s0 ipv4.method manual ipv4.addresses 198.51.100.1/30 ipv4.gateway 198.51.100.2 ipv4.dns 198.51.100.200 connection.zone external
La commande
nmcli connection add
crée un profil de connexion NetworkManager. La commande utilise les options suivantes :-
type
ethernet
: Définit que le type de connexion est Ethernet. -
con-name
connection_name
: Définit le nom du profil. Utilisez un nom significatif pour éviter toute confusion. -
ifname
network_device
: Définit l'interface réseau. -
ipv4.method
manual
permet de configurer une adresse IP statique. -
ipv4.addresses
IP_address/subnet_mask
: Définit les adresses IPv4 et le masque de sous-réseau. -
ipv4.gateway
IP_address
: Définit l'adresse de la passerelle par défaut. -
ipv4.dns
IP_of_DNS_server
: Définit l'adresse IPv4 du serveur DNS. -
connection.zone
firewalld_zone
: Affecte l'interface réseau à la zone définiefirewalld
. Notez quefirewalld
active automatiquement le masquage pour les interfaces assignées à la zoneexternal
.
-
Configurez l'interface réseau vers le fournisseur B :
# nmcli connection add type ethernet con-name Provider-B ifname enp1s0 ipv4.method manual ipv4.addresses 192.0.2.1/30 ipv4.routes "0.0.0.0/0 192.0.2.2 table=5000" connection.zone external
Cette commande utilise le paramètre
ipv4.routes
au lieu deipv4.gateway
pour définir la passerelle par défaut. Ceci est nécessaire pour assigner la passerelle par défaut de cette connexion à une table de routage (5000
) différente de la table par défaut. NetworkManager crée automatiquement cette nouvelle table de routage lorsque la connexion est activée.Configurez l'interface réseau vers le sous-réseau des postes de travail internes :
# nmcli connection add type ethernet con-name Internal-Workstations ifname enp8s0 ipv4.method manual ipv4.addresses 10.0.0.1/24 ipv4.routes "10.0.0.0/24 table=5000" ipv4.routing-rules "priority 5 from 10.0.0.0/24 table 5000" connection.zone trusted
Cette commande utilise le paramètre
ipv4.routes
pour ajouter une route statique à la table de routage avec l'ID5000
. Cette route statique pour le sous-réseau10.0.0.0/24
utilise l'IP de l'interface réseau locale vers le fournisseur B (192.0.2.1
) comme prochain saut.En outre, la commande utilise le paramètre
ipv4.routing-rules
pour ajouter une règle de routage avec la priorité5
qui achemine le trafic du sous-réseau10.0.0.0/24
vers la table5000
. Les valeurs faibles ont une priorité élevée.Notez que la syntaxe du paramètre
ipv4.routing-rules
est la même que celle d'une commandeip rule add
, sauf queipv4.routing-rules
exige toujours la spécification d'une priorité.Configurez l'interface réseau vers le sous-réseau du serveur :
# nmcli connection add type ethernet con-name Servers ifname enp9s0 ipv4.method manual ipv4.addresses 203.0.113.1/24 connection.zone trusted
Vérification
Sur un hôte RHEL dans le sous-réseau des stations de travail internes :
Installez le paquetage
traceroute
:# dnf install traceroute
Utilisez l'utilitaire
traceroute
pour afficher l'itinéraire vers un hôte sur Internet :# traceroute redhat.com traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets 1 10.0.0.1 (10.0.0.1) 0.337 ms 0.260 ms 0.223 ms 2 192.0.2.1 (192.0.2.1) 0.884 ms 1.066 ms 1.248 ms ...
La sortie de la commande indique que le routeur envoie des paquets sur
192.0.2.1
, qui est le réseau du fournisseur B.
Sur un hôte RHEL dans le sous-réseau du serveur :
Installez le paquetage
traceroute
:# dnf install traceroute
Utilisez l'utilitaire
traceroute
pour afficher l'itinéraire vers un hôte sur Internet :# traceroute redhat.com traceroute to redhat.com (209.132.183.105), 30 hops max, 60 byte packets 1 203.0.113.1 (203.0.113.1) 2.179 ms 2.073 ms 1.944 ms 2 198.51.100.2 (198.51.100.2) 1.868 ms 1.798 ms 1.549 ms ...
La sortie de la commande indique que le routeur envoie des paquets sur
198.51.100.2
, qui est le réseau du fournisseur A.
Étapes de dépannage
Sur le routeur RHEL :
Affichez la liste des règles :
# ip rule list 0: from all lookup local 5: from 10.0.0.0/24 lookup 5000 32766: from all lookup main 32767: from all lookup default
Par défaut, RHEL contient des règles pour les tables
local
,main
, etdefault
.Afficher les itinéraires dans la table
5000
:# ip route list table 5000 0.0.0.0/0 via 192.0.2.2 dev enp1s0 proto static metric 100 10.0.0.0/24 dev enp8s0 proto static scope link src 192.0.2.1 metric 102
Affichez les interfaces et les zones de pare-feu :
# firewall-cmd --get-active-zones external interfaces: enp1s0 enp7s0 trusted interfaces: enp8s0 enp9s0
Vérifiez que le masquage est activé dans la zone
external
:# firewall-cmd --info-zone=external external (active) target: default icmp-block-inversion: no interfaces: enp1s0 enp7s0 sources: services: ssh ports: protocols: masquerade: yes ...
Ressources supplémentaires
-
nm-settings(5)
page de manuel -
nmcli(1)
page de manuel - Est-il possible de mettre en place un routage basé sur des règles avec NetworkManager dans RHEL ?