2.8. Configuration de la redirection de port à l'aide de nftables
La redirection de port permet aux administrateurs de rediriger les paquets envoyés à un port de destination spécifique vers un autre port local ou distant.
Par exemple, si votre serveur web n'a pas d'adresse IP publique, vous pouvez définir une règle de transfert de port sur votre pare-feu qui transfère les paquets entrants sur les ports 80
et 443
du pare-feu vers le serveur web. Grâce à cette règle de pare-feu, les utilisateurs sur internet peuvent accéder au serveur web en utilisant l'IP ou le nom d'hôte du pare-feu.
2.8.1. Transférer les paquets entrants vers un autre port local
Vous pouvez utiliser nftables
pour transférer des paquets. Par exemple, vous pouvez transférer les paquets IPv4 entrants sur le port 8022
vers le port 22
sur le système local.
Procédure
Créez une table nommée
nat
avec la famille d'adressesip
:# nft add table ip nat
Ajoutez les chaînes
prerouting
etpostrouting
au tableau :# nft -- add chain ip nat prerouting { type nat hook prerouting priority -100 \; }
NotePassez l'option
--
à la commandenft
pour éviter que le shell n'interprète la valeur négative de la priorité comme une option de la commandenft
.Ajoutez une règle à la chaîne
prerouting
qui redirige les paquets entrants sur le port8022
vers le port local22
:# nft add rule ip nat prerouting tcp dport 8022 redirect to :22
2.8.2. Transférer les paquets entrants sur un port local spécifique vers un autre hôte
Vous pouvez utiliser une règle de traduction d'adresse réseau de destination (DNAT) pour transférer les paquets entrants sur un port local vers un hôte distant. Cela permet aux utilisateurs sur Internet d'accéder à un service qui s'exécute sur un hôte avec une adresse IP privée.
Par exemple, vous pouvez transférer les paquets IPv4 entrants sur le port local 443
vers le même numéro de port sur le système distant avec l'adresse IP 192.0.2.1
.
Conditions préalables
-
Vous êtes connecté en tant qu'utilisateur
root
sur le système qui doit transférer les paquets.
Procédure
Créez une table nommée
nat
avec la famille d'adressesip
:# nft add table ip nat
Ajoutez les chaînes
prerouting
etpostrouting
au tableau :# nft -- add chain ip nat prerouting { type nat hook prerouting priority -100 \; } # nft add chain ip nat postrouting { type nat hook postrouting priority 100 \; }
NotePassez l'option
--
à la commandenft
pour éviter que le shell n'interprète la valeur négative de la priorité comme une option de la commandenft
.Ajoutez une règle à la chaîne
prerouting
qui redirige les paquets entrants sur le port443
vers le même port sur192.0.2.1
:# nft add rule ip nat prerouting tcp dport 443 dnat to 192.0.2.1
Ajoutez une règle à la chaîne
postrouting
pour masquer le trafic sortant :# nft add rule ip nat postrouting daddr 192.0.2.1 masquerade
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