Il est courant de vouloir faire de la Traduction d'Adresses Réseaux ou NAT (voir le Guide Pratique du NAT) et du filtrage de paquets. La bonne nouvelle est qu'ils se mélangent extrêmement bien.
Configurez complètement votre filtrage de paquets en ignorant le NAT que vous réalisez. Les adresses sources et destinations vues par le filtre à paquets seront les adresses `réelles'. Par exemple, si vous effectuez du DNAT pour envoyer toutes les connexions en direction du port 80 de l'adresse 1.2.3.4, vers le port 8080 de l'adresse 10.1.1.1, le filtre verra les paquets se dirigeant sur le port 8080 de 10.1.1.1 (la destination réelle), et non le port 80 de 1.2.3.4. De la même manière, vous pouvez ignorer le camouflage d'adresses (`masquerading') : les paquets sembleront venir de leurs adresses IP internes réelles (disons 10.1.1.1) et les réponses sembleront retourner là-bas.
Vous pouvez utiliser l'extension de correspondance d'état (`state') sans imposer de travail supplémentaire au filtre à paquets, puisque le NAT requiert de toute façon le traçage de connexions. Pour enrichir l'exemple élémentaire sur le camouflage d'adresses dans le Guide Pratique du NAT (rejetant toute nouvelle connexion issue de l'interface ppp0), vous pourriez faire ceci :
# Camoufler ppp0
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Rejeter les paquets d'états NEW et INVALID venant de ou réexpédiés par ppp0
iptables -A INPUT -i ppp0 -m state --state NEW,INVALID -j DROP
iptables -A FORWARD -i ppp0 -m state --state NEW,INVALID -j DROP
# Activer la réexpedition d'adresse IP (`forwarding')
echo 1 > /proc/sys/net/ipv4/ip_forward