Guide pratique de l'IP masquerade simplifié

Nouvelles versions de ce document

Version française du Masquerading made simple HOWTO

John Tapsell

Thomas Spellman

Matthias Grimm

Version : 0.09.fr.1.0

10 octobre 2007

Revision History
Revision 0.09.fr.1.0 2007-10-07 Revised by: EM
Première traduction française
Revision 0.09 2004-07-21 Revised by: TS
Revision 0.08 2002-07-11 Revised by: JPT
Revision 0.07 2002-02-27 Revised by: JPT
Revision 0.06 2001-09-08 Revised by: JPT
Revision 0.05 2001-09-07 Revised by: JPT
Revision 0.04 2001-09-01 Revised by: JPT
Revision 0.03 2001-07-06 Revised by: JPT

Ce guide pratique NE REMPLACE PAS le 'guide pratique de l'IP masquerade', mais le complète. Ces deux documents devraient être lus en parallèle. Je n'y ai inclu aucun élément déjà détaillé dans cet autre guide pratique, ni aucune explication sur leur fonctionnement et leur signification. Veuillez vous reporter à l'adresse http://ipmasq.webhop.net/ et lisez le 'guide pratique du masquerade standard', pour une bien meilleure aide.

Résumé

Ce document décrit l'activation du dispositif dIP Masquerading sur une machine hôte Linux. Le masquage d'adresse IP est une forme de traduction d'adresse réseau ( Network Address Translation ou NAT en anglais ),permettant aux ordinateurs d'un réseau privé n'ayant aucune adresse IP d'accéder à Internet via l'adresser IP unique d'une machine Linux.

Tous les auteurs sont joignables sur le canal #debian sur irc.opensource.net

John Tapsell (JohnFlux) est le responsable officiel.

Contactez-moi (John Tapsell) pour toutes demandes, réactions, réclamations, rendez-vous, etc. !!!!!!!!!

Impudemment tiré du travail de David Ranch -

Ce document est placé sous la GNU Free Documentation License, consultable sur

http://www.gnu.org/copyleft/fdl.html pour la version originale. La version française est consultable sur //="http://www.rodage.org/gpl-3.0.fr.html"> http://www.rodage.org/gpl-3.0.fr.html. Attention! La version française de la Gnu Free Documentation License est une version non officielle, traduite afin d'améliorer la compréhension de cette licence. Elle ne fait pas foi au-niveau juridique!


Introduction

Cette introduction est volontairement courte et ciblée.

Admettons que vous aviez un réseau que vous voulez raccorder à l'extérieur:


Sommaire (J'aime bien débuter par un sommaire!)

Considérons que l'interface réseau externe est eth0, l'adresse IP 123.12.23.43 et l'interface réseau interne est eth1 :

$> modprobe ipt_MASQUERADE # Si cela échoue, essayez tout-de-même de continuer
$> iptables -F; iptables -t nat -F; iptables -t mangle -F
$> iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to 123.12.23.43
$> echo 1 > /proc/sys/net/ipv4/ip_forward

Ou pour une connexion par modem:

$> modprobe ipt_MASQUERADE # Si cela échoue, essayez tout-de-même de continuer
$> iptables -F; iptables -t nat -F; iptables -t mangle -F
$> iptables -t nat -A POSTROUTING -o ppp0 -j MASQUERADE
$> echo 1 > /proc/sys/net/ipv4/ip_forward

Pour sécuriser cela:

$> iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$> iptables -A INPUT -m state --state NEW -i ! eth0 -j ACCEPT
$> iptables -P INPUT DROP   #seulement si les deux commandes précédentes ont abouties
$> iptables -A FORWARD -i eth0 -o eth0 -j REJECT

Ou pour une connexion par modem (avec eth0 comme interface réseau interne):

$> iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$> iptables -A INPUT -m state --state NEW -i ! ppp0 -j ACCEPT
$> iptables -P INPUT DROP   #seulement si les deux commandes précédentes ont abouties
$> iptables -A FORWARD -i ppp0 -o ppp0 -j REJECT

Et voilà! Pour visualiser les règles tapez "iptables -t nat -L"


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".


Instructions post-installation

Cela devrait fonctionner maintenant. N'oubliez pas de :

Pour le tester:

Où eth0 est l'interface réseau externe, et 123.12.23.43 est l'adresse ip de ce client.


FAQ - Foire aux réclama**** Questions