8.9. Routage du trafic d'un sous-réseau spécifique vers une passerelle par défaut différente en utilisant le rôle de système RHEL du réseau
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.
Pour configurer le routage basé sur des stratégies à distance et sur plusieurs nœuds, vous pouvez utiliser le rôle système RHEL network
. Effectuez cette procédure sur le nœud de contrôle Ansible.
Cette procédure suppose la topologie de réseau suivante :
Conditions préalables
- Vous avez préparé le nœud de contrôle et les nœuds gérés.
- Vous êtes connecté au nœud de contrôle en tant qu'utilisateur pouvant exécuter des séquences sur les nœuds gérés.
-
Le compte que vous utilisez pour vous connecter aux nœuds gérés dispose des autorisations
sudo
sur ces nœuds. - Les nœuds gérés ou les groupes de nœuds gérés sur lesquels vous souhaitez exécuter cette séquence sont répertoriés dans le fichier d'inventaire Ansible.
-
Les nœuds gérés utilisent les services
NetworkManager
etfirewalld
. Les nœuds gérés que vous souhaitez configurer possèdent 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.
Procédure
Créez un fichier playbook, par exemple
~/pbr.yml
, avec le contenu suivant :--- - name: Configuring policy-based routing hosts: managed-node-01.example.com tasks: - name: Routing traffic from a specific subnet to a different default gateway include_role: name: rhel-system-roles.network vars: network_connections: - name: Provider-A interface_name: enp7s0 type: ethernet autoconnect: True ip: address: - 198.51.100.1/30 gateway4: 198.51.100.2 dns: - 198.51.100.200 state: up zone: external - name: Provider-B interface_name: enp1s0 type: ethernet autoconnect: True ip: address: - 192.0.2.1/30 route: - network: 0.0.0.0 prefix: 0 gateway: 192.0.2.2 table: 5000 state: up zone: external - name: Internal-Workstations interface_name: enp8s0 type: ethernet autoconnect: True ip: address: - 10.0.0.1/24 route: - network: 10.0.0.0 prefix: 24 table: 5000 routing_rule: - priority: 5 from: 10.0.0.0/24 table: 5000 state: up zone: trusted - name: Servers interface_name: enp9s0 type: ethernet autoconnect: True ip: address: - 203.0.113.1/24 state: up zone: trusted
Exécutez le manuel de jeu :
# ansible-playbook ~/pbr.yml
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.
Sur le routeur RHEL que vous avez configuré à l'aide du rôle de système 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
-
/usr/share/ansible/roles/rhel-system-roles.network/README.md
fichier