Rechercher

21.2. 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

download PDF

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 :

routage basé sur une politique

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 et firewalld.
  • 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 est 198.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 est 192.0.2.2, et le réseau utilise un masque de réseau /30.
    • L'interface enp8s0 est connectée au sous-réseau 10.0.0.0/24 avec des postes de travail internes.
    • L'interface enp9s0 est connectée au sous-réseau 203.0.113.0/24 où se trouvent les serveurs de l'entreprise.
  • 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éseau enp8s0 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éseau enp9s0 du routeur.

Procédure

  1. 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
  2. Exécutez le manuel de jeu :

    # ansible-playbook ~/pbr.yml

Vérification

  1. Sur un hôte RHEL dans le sous-réseau des stations de travail internes :

    1. Installez le paquetage traceroute:

      # dnf install traceroute
    2. 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.

  2. Sur un hôte RHEL dans le sous-réseau du serveur :

    1. Installez le paquetage traceroute:

      # dnf install traceroute
    2. 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.

  3. Sur le routeur RHEL que vous avez configuré à l'aide du rôle de système RHEL :

    1. 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, et default.

    2. 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
    3. Affichez les interfaces et les zones de pare-feu :

      # firewall-cmd --get-active-zones
      external
        interfaces: enp1s0 enp7s0
      trusted
        interfaces: enp8s0 enp9s0
    4. 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
Red Hat logoGithubRedditYoutubeTwitter

Apprendre

Essayez, achetez et vendez

Communautés

À propos de la documentation Red Hat

Nous aidons les utilisateurs de Red Hat à innover et à atteindre leurs objectifs grâce à nos produits et services avec un contenu auquel ils peuvent faire confiance.

Rendre l’open source plus inclusif

Red Hat s'engage à remplacer le langage problématique dans notre code, notre documentation et nos propriétés Web. Pour plus de détails, consultez leBlog Red Hat.

À propos de Red Hat

Nous proposons des solutions renforcées qui facilitent le travail des entreprises sur plusieurs plates-formes et environnements, du centre de données central à la périphérie du réseau.

© 2024 Red Hat, Inc.