Il est commun de vouloir faire de la Translation d'Adresses
Réseaux (voir le NAT HOWTO) et le filtrage de paquets. La bonne
nouvelle est qu'ils se mixent extrèmement bien.
Tu configures complètement ton filtrage de paquets en ignorant
tout le NAT que tu feras. Les sources et destinations vues par le
filtre de paquets seront les sources et destination `réelles'. Par
exemple, si tu effectues du DNAT pour envoyer toutes les
connections du port 80 de 1.2.3.4 à travers le port 8080 de
10.1.1.1, le filtre de paquets verra les paquets allant au port
8080 de 10.1.1.1 (la destination réelle), pas le port 80 de
1.2.3.4. Similairement tu peux ignorer le 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.
Tu peux utiliser la concordance `state' sans faire faire du
travail supplémentaire au filtre de paquets, puisque le NAT
requiert le suivi de connections de toutes façons. Pour étendre le
simple exemple de masquerading dans le NAT HOWTO qui rejète toutes
les nouvelles connection venant de l'interface ppp0, tu ferais ceci
:
# Masquerader ppp0
iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
# Rejeter les paquets NEW et INVALID venant ou forwardés de ppp0.
iptables -A INPUT -i ppp0 -m state --state NEW,INVALID -j DROP
iptables -A FORWARD -i ppp0 0 -m state --state NEW,INVALID -j DROP
# Activer le forwarding IP
echo 1 > /proc/sys/net/ipv4/ip_forward