Rechercher

2.4. Configuration du NAT à l'aide de nftables

download PDF

Avec nftables, vous pouvez configurer les types de traduction d'adresses réseau (NAT) suivants :

  • Mascarade
  • Source NAT (SNAT)
  • NAT de destination (DNAT)
  • Redirection
Important

Vous ne pouvez utiliser que des noms d'interface réels dans les paramètres iifname et oifname. Les noms alternatifs (altname) ne sont pas pris en charge.

2.4.1. Types de NAT

Il s'agit des différents types de traduction d'adresses réseau (NAT) :

Masquerading et NAT à la source (SNAT)

Utilisez l'un de ces types de NAT pour modifier l'adresse IP source des paquets. Par exemple, les fournisseurs d'accès à Internet n'acheminent pas les plages d'adresses IP privées, telles que 10.0.0.0/8. Si vous utilisez des plages d'adresses IP privées dans votre réseau et que les utilisateurs doivent pouvoir accéder à des serveurs sur Internet, mappez l'adresse IP source des paquets provenant de ces plages vers une adresse IP publique.

La mascarade et le SNAT sont très semblables l'un à l'autre. Les différences sont les suivantes :

  • Le masquage utilise automatiquement l'adresse IP de l'interface sortante. Par conséquent, il convient d'utiliser le masquage si l'interface sortante utilise une adresse IP dynamique.
  • SNAT fixe l'adresse IP source des paquets à une IP spécifiée et ne recherche pas dynamiquement l'IP de l'interface sortante. Le SNAT est donc plus rapide que le masquage. Utilisez SNAT si l'interface sortante utilise une adresse IP fixe.
NAT de destination (DNAT)
Ce type de NAT permet de réécrire l'adresse et le port de destination des paquets entrants. Par exemple, si votre serveur web utilise une adresse IP d'une plage IP privée et n'est donc pas directement accessible depuis Internet, vous pouvez définir une règle DNAT sur le routeur pour rediriger le trafic entrant vers ce serveur.
Redirection
Ce type est un cas particulier de DNAT qui redirige les paquets vers la machine locale en fonction du crochet de la chaîne. Par exemple, si un service fonctionne sur un port différent de son port standard, vous pouvez rediriger le trafic entrant du port standard vers ce port spécifique.

2.4.2. Configuration du masquage à l'aide de nftables

Le masquage permet à un routeur de changer dynamiquement l'adresse IP source des paquets envoyés par une interface pour l'adresse IP de l'interface. Cela signifie que si l'interface se voit attribuer une nouvelle IP, nftables utilise automatiquement la nouvelle IP pour remplacer l'IP source.

Remplacer l'IP source des paquets quittant l'hôte via l'interface ens3 par l'IP définie sur ens3.

Procédure

  1. Créer un tableau :

    # nft add table nat
  2. Ajoutez les chaînes prerouting et postrouting au tableau :

    # nft add chain nat postrouting { type nat hook postrouting priority 100 \; }
    Important

    Même si vous n'ajoutez pas de règle à la chaîne prerouting, le cadre nftables exige que cette chaîne corresponde aux réponses des paquets entrants.

    Notez que vous devez passer l'option -- à la commande nft pour éviter que le shell n'interprète la valeur négative de la priorité comme une option de la commande nft.

  3. Ajoutez une règle à la chaîne postrouting qui correspond aux paquets sortants sur l'interface ens3:

    # nft add rule nat postrouting oifname "ens3" masquerade

2.4.3. Configuration de la NAT à la source à l'aide de nftables

Sur un routeur, le NAT de source (SNAT) vous permet de changer l'IP des paquets envoyés par une interface en une adresse IP spécifique. Le routeur remplace alors l'IP source des paquets sortants.

Procédure

  1. Créer un tableau :

    # nft add table nat
  2. Ajoutez les chaînes prerouting et postrouting au tableau :

    # nft add chain nat postrouting { type nat hook postrouting priority 100 \; }
    Important

    Même si vous n'ajoutez pas de règle à la chaîne postrouting, le cadre nftables exige que cette chaîne corresponde aux réponses des paquets sortants.

    Notez que vous devez passer l'option -- à la commande nft pour éviter que le shell n'interprète la valeur négative de la priorité comme une option de la commande nft.

  3. Ajoutez une règle à la chaîne postrouting qui remplace l'IP source des paquets sortants via ens3 par 192.0.2.1:

    # nft add rule nat postrouting oifname "ens3" snat to 192.0.2.1

2.4.4. Configuration de la NAT de destination à l'aide de nftables

Le NAT de destination (DNAT) permet de rediriger le trafic d'un routeur vers un hôte qui n'est pas directement accessible depuis l'internet.

Par exemple, avec DNAT, le routeur redirige le trafic entrant envoyé aux ports 80 et 443 vers un serveur web dont l'adresse IP est 192.0.2.1.

Procédure

  1. Créer un tableau :

    # nft add table nat
  2. Ajoutez les chaînes prerouting et postrouting au tableau :

    # nft -- add chain nat prerouting { type nat hook prerouting priority -100 \; }
    # nft add chain nat postrouting { type nat hook postrouting priority 100 \; }
    Important

    Même si vous n'ajoutez pas de règle à la chaîne postrouting, le cadre nftables exige que cette chaîne corresponde aux réponses des paquets sortants.

    Notez que vous devez passer l'option -- à la commande nft pour éviter que le shell n'interprète la valeur négative de la priorité comme une option de la commande nft.

  3. Ajoutez une règle à la chaîne prerouting qui redirige le trafic entrant vers les ports 80 et 443 sur l'interface ens3 du routeur vers le serveur web avec l'adresse IP 192.0.2.1:"

    # nft add rule nat prerouting iifname ens3 tcp dport { 80, 443 } dnat to 192.0.2.1
  4. En fonction de votre environnement, ajoutez une règle SNAT ou de masquage pour modifier l'adresse source des paquets renvoyés par le serveur web à l'expéditeur :

    1. Si l'interface ens3 utilise une adresse IP dynamique, ajoutez une règle de masquage :

      # nft add rule nat postrouting oifname "ens3" masquerade
    2. Si l'interface ens3 utilise une adresse IP statique, ajoutez une règle SNAT. Par exemple, si l'interface ens3 utilise l'adresse IP 198.51.100.1:

      # nft add rule nat postrouting oifname "ens3" snat to 198.51.100.1
  5. Activer le transfert de paquets :

    # echo "net.ipv4.ip_forward=1" > /etc/sysctl.d/95-IPv4-forwarding.conf
    # sysctl -p /etc/sysctl.d/95-IPv4-forwarding.conf

Ressources supplémentaires

2.4.5. Configuration d'une redirection à l'aide de nftables

La fonction redirect est un cas particulier de traduction d'adresse de réseau de destination (DNAT) qui redirige les paquets vers la machine locale en fonction du crochet de la chaîne.

Par exemple, vous pouvez rediriger le trafic entrant et transféré envoyé au port 22 de l'hôte local vers le port 2222.

Procédure

  1. Créer un tableau :

    # nft add table nat
  2. Ajoutez la chaîne prerouting à la table :

    # nft -- add chain nat prerouting { type nat hook prerouting priority -100 \; }

    Notez que vous devez passer l'option -- à la commande nft pour éviter que le shell n'interprète la valeur négative de la priorité comme une option de la commande nft.

  3. Ajoutez une règle à la chaîne prerouting qui redirige le trafic entrant sur le port 22 vers le port 2222:

    # nft add rule nat prerouting tcp dport 22 redirect to 2222

Ressources supplémentaires

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.