====== TP4 (NAT) ====== __Préliminaires__ : Pour afficher la table NAT : $ iptables -t nat -L Pour remettre la table à zéro : $ iptables -t nat -F L'écriture des règles NAT n'est pas symétrique ! On translate les adresses privés en publique en sortant du rx privé. Par ailleurs la configuration du NAT s'effectue avec 'iptables' sur la passerelle uniquement ! __NAT Statique__ : association 1 @priv et 1 @pub (action SNAT / DNAT) a) Paquet Entrant dans le Réseau Privé On modifie l'adresse de destination (DNAT) avant le routage (PREROUTING). $ iptables -t nat -A PREROUTING -d @pub -i ethin -j DNAT --to-destination @priv La translation inverse est implicite lors de la réponse. b) Paquet Sortant vers le Réseau extérieur On modifie l'adresse source (SNAT) après le routage (POSTROUTING). $ iptables -t nat -A POSTROUTING -s @priv -o ethout -j SNAT --to-source @pub La translation inverse est implicite lors de la réponse. __NAT Dynamique__ : association N @priv et 1 @pub (action MASQUERADE) avec @priv une adresse de réseau et mask un masque en nb de bits $ iptables -t nat -A POSTROUTING -s @priv/mask -j MASQUERADE __En résumé__ : * Connexion initié depuis l'intérieur => POSTROUTING / SNAT ou MASQUERADE * Connexion initié depuis l'extérieur => PREROUTING / DNAT (MASQUERADE impossible) __Exemple__ Considérons les réseaux privés 192.168.0.0/24 et 192.168.1.0/24 connectés à la passerelle immortal d'adresse publique 140.77.13.2 (eth1). Pour mettre en place du NAT dynamique pour ces réseaux privés, je recommande : immortal$ iptables -t nat -A POSTROUTING -s 192.168.0.0/23 -o eth1 -j MASQUERADE __Port Forwarding__ On veut mettre en place du port forwarding entre la passerelle //immortal// (147.210.20.1) port 2222 et le port 22 (SSH) de //syl// dans le réseau privé (192.168.0.3). immortal$ iptables -t nat -A PREROUTING -d 147.210.20.1 -p tcp --dport 2222 -j DNAT --to 192.168.0.3:22 atg$ ssh toto@147.210.20.1 # SSH vers immortal atg$ ssh -p 2222 toto@147.210.20.1 # SSH vers syl