Translation d'IP

Le but du masquage IP (forme de translation d'adresses) est de permettre à des machines d'un réseau doté d'adresses IP privées non routables d'accéder à Internet en passant par une autre machine effectuant la translation. Le trafic sortant du réseau privé pour aller vers Internet doit être manipulé pour que les réponses puissent être acheminées vers la machine qui a fait la requête correspondante. Pour cela, le noyau doit modifier l'adresse IP source de chaque paquet pour que les réponses lui soient renvoyées à lui plutôt qu'à l'adresse privée qui a fait la requête, ce qui est impossible sur Internet. Linux utilise Connection Tracking (conntrack) pour savoir à chaque instant quelle connexion appartient à quelle machine, et rerouter ensuite les paquets vers la bonne machine. Le trafic sortant du réseau privé apparaît donc « masqué », comme s'il provenait de la passerelle Ubuntu. Ce procédé est appelé « Partage de connexion Internet » dans la documentation de Microsoft.

Cela peut être effectué à l'aide d'une simple règle iptables, qui pourra éventuellement changer suivant la configuration de votre réseau :

sudo iptables -t nat -A POSTROUTING -s 192.168.0.0/16 -o ppp0 -j MASQUERADE

La commande ci-dessus considère que votre adresse de réseau privé est 192.168.0.0/16 et que votre interface reliée à Internet est ppp0. La syntaxe est construite comme ceci :

Chaque chaîne dans la table des filtres (la table par défaut, où la quasi-totalité des filtrages de paquets se passent) a une politique par défaut d'acceptation (ACCEPT). Mais si vous voulez créer un pare-feu en plus d'une passerelle, vous pouvez alors changer cette politique en une politique d'abandon (DROP) ou de rejet (REJECT). Dans ce cas, le trafic masqué doit être autorisé par la chaîne FORWARD pour que la règle ci-dessus fonctionne :

sudo iptables -A FORWARD -s 192.168.0.0/16 -o ppp0 -j ACCEPT
sudo iptables -A FORWARD -d 192.168.0.0/16 -m state --state ESTABLISHED,RELATED -i ppp0 -j ACCEPT

Les commandes ci-dessus vont autoriser toutes les connexions du réseau local vers Internet, ainsi que tout le trafic en réponse à ces connexions jusqu'à la machine réelle qui a initié le trafic.