3. Version un peu plus détaillée

Compilation du noyau: (Utilisez un noyau 2.4.x ou supérieur)

Le noyau doit inclure les supports suivants:

Tout d'abord, si les modules iptables et masq ne sont pas compilés dans le noyau ni installés, mais présents en tant que modules, il faut les installer. Si vous chargez le module ipt_MASQUERADE,les modules ip_tables, ip_conntrack et iptable_nat seront aussi chargés.

$> modprobe ipt_MASQUERADE

Que votre réseau interne soit vaste, ou bien que vous vouliez connecter deux ou trois machines sur Internet, cela ne fera aucune différence dans tous les cas.

Ok, je vais suppposer que vous n'avez aucune autre règle à rajouter, donc vous tapez:

$> iptables -F; iptables -t nat -F; iptables -t mangle -F

Si vous obtenez un message d'erreur indiquant "can't find iptables", téléchargez-le et installez-le. Si le message d'erreur indique "no such table 'nat'", recompilez le noyau avec le support nat. Si le message d'erreur indique "no such table as 'mangle'", ne vous inquiétez pas, cette table n'est pas nécessaire pour le Masquerading. Si le message d'erreur indique "iptables is incompatible with your kernel", téléchargez une version de noyau supérieure à 2.4 et compilez-le avec le support iptables.

Ensuite si vous avez une adresse IP statique(Par exemple une interface réseau n'utilisant pas le DHCP):

$> iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 123.12.23.43

ou pour une adresse dynamique (Par exemple un modem rtc - vous devez appelez un numéro tout d'abord):

$> iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE

Enfin, afin d'indiquer au noyau que vous voulez activer le routage de packets : ( A faire après chaque redémarrage de la session - pas trop contraignant)

$> echo 1 > /proc/sys/net/ipv4/ip_forward

Une fois vérifié que tout fonctionne (voir section Post-install) vous n'allez autoriser l'IP masquerade que pour le réseau interne - vous ne souhaitez pas autoriser des personnes sur Internet à l'utiliser après tout :)

En premier lieu, autorisez toutes les connections existantes, ou les connections en dépendant ( par exemple un serveur ftp vous renvoyant une réponse)

$> iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Si vous obtenez une erreur, vous n'avez probablement pas activé le marquage d'état sur les paquets dans le noyau - vous devrez le recompiler avec cette option. Nous allons ensuite n'autoriser que les nouvelles connections venant de notre réseau interne (réseau interne ou local). Remplacez ppp0 par eth0, ou par le nom de votre interface réseau externe (Le caractère ! signifie "tout sauf")

$> iptables -A INPUT -m state --state NEW -i ! ppp0 -j ACCEPT

Et bloquez maintenant tout le reste:

$> iptables -P INPUT DROP   #seulement si les deux commandes précédentes ont abouties

Si l'une des deux premières commandes échoue, cette règle empêchera le masquerading de fonctionner Pour annuler cette règle : "iptables -P INPUT ACCEPT".