Configuration du NAT avec nftables
Activation du routage
Il faut commencer par activer le forwarding IPv4 dans le noyau Linux.
On doit d’abord éditer le fichier /etc/sysctl.d/00.forwarding.conf (le nom du fichier a peu d’importance, seulement l’ordre d’exécution des fichiers du dossier).
/etc/sysctl.d/00.forwarding.confnet.ipv4.ip_forward=1
Puis, on applique la configuration immédiatement (sinon il faudrait redémarrer) avec :
# sysctl --system
Règles de pare-feu du NAT
Configuration temporaire, pour tester :
# nft add table nat
# nft 'add chain nat postrouting { type nat hook postrouting priority 100 ; }'
# nft add rule nat postrouting ip saddr 10.0.X.0/24 oif ens18 snat to 192.168.10.Y(1)
| 1 | ⚠️ Pensez à remplacer ici :
|
On peut vérifier la prise en compte avec :
# nft list ruleset
table ip nat {
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
ip saddr 10.0.X.0/24 oif "ens18" snat to 192.168.10.X
}
}
Pour tester le bon fonctionnement depuis le client, essayer d’atteindre avec ping :
-
Le routeur
-
Le routeur suivant (box SFR)
-
Une IP quelconque sur Internet (par exemple
9.9.9.9)
Si tout fonctionne, on peut appliquer les règles définitivement en écrivant dans le fichier /etc/nftables.conf le résultat de nft list ruleset :
/etc/nftables.conf#!/usr/sbin/nft -f
flush ruleset
table ip nat {
chain postrouting {
type nat hook postrouting priority srcnat; policy accept;
ip saddr 10.0.X.0/24 oif "ens18" snat to 192.168.10.Y
}
}
Il faut également activer le service nftables au démarrage pour que le fichier soit pris en compte :
systemctl enable nftables
On peut maintenant redémarrer le routeur et tester si le client a toujours accès à tout.