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 - <dranch@trinnet.net>
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!
Cette introduction est volontairement courte et cibl�e.
Admettons que vous aviez un r�seau que vous voulez raccorder � l'ext�rieur:
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"
Compilation du noyau: (Utilisez un noyau 2.4.x ou sup�rieur)
Le noyau doit inclure les supports suivants:
Dans la section Networking Options
Network packet filtering (CONFIG_NETFILTER)
Section Networking Options->Netfilter Configuration
Connection tracking (CONFIG_IP_NF_CONNTRACK)
FTP Protocol support (CONFIG_IP_NF_FTP)
IP tables support (CONFIG_IP_NF_IPTABLES)
Connection state match support (CONFIG_IP_NF_MATCH_STATE)
Packet filtering (CONFIG_IP_NF_FILTER)
REJECT target support (CONFIG_IP_NF_TARGET_REJECT)
Full NAT (CONFIG_IP_NF_NAT)
MASQUERADE target support (CONFIG_IP_NF_TARGET_MASQUERADE)
REDIRECT target support (CONFIG_IP_NF_TARGET_REDIRECT)
Packet mangling (CONFIG_IP_NF_MANGLE)
LOG target support (CONFIG_IP_NF_TARGET_LOG)
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".
Cela devrait fonctionner maintenant. N'oubliez pas de :
Configurer toutes les machines du r�seau interne afin d'indiquer comme passerelle l'adresse r�seau unique de la machine Linux. (Sous Windows, clic droit sur le voisinage r�seau ->propri�t�s->connexion au r�seau local -> propri�t�s -> Protocol Internet (TCP/IP) -> passerelle, et remplacez-la par l'adresse IP interne de la machine Linux.)
Configurer tous vos clients afin d'utiliser le serveur proxy http de votre fournisseur d'acc�s si vos clients en ont un, et utiliser un proxy en mode transparent (ATTENTION - Certains rapports font �tat de proxy en mode transparent engendrant un ralentissement tr�s important sur les tr�s grands r�seaux ), ou activez le squid sur votre passerelle Linux (ceci est facultatif mais pr�f�rable pour les grands r�seaux)
Sp�cifier un serveur de DNS sur les machines clientes. Sinon vous obtiendrez un message d'erreur indiquant 'cannot resolve address' etc. Si la r�solution d'adresse DNS fonctionnait (adresse URL fonctionnelle) avant d'avoir configur� le MASQUERADING, cela signifie que le serveur DHCP de votre fournisseur d'acc�s n'arrive plus � vous indiquer quelle est l'adresse DNS.
[Apart�] Je me demande si vous ne pourriez pas simplement envoyer un broadcast DHCP qui sera achemin� vers le serveur dns ( et vers le proxy http pendant qu'on y est) sans avoir � configurer un serveur DHCP (ou m�me si vous le faites). Quelqu'un pourrait-il me renseigner � ce sujet? :)
Merci � Richard Atcheson pour me l'avoir fait remarquer
A pr�sent, vous devriez commencer � s�curiser un peu tout cela! Premi�rement, d�sactivez le routage : "iptables -P FORWARD DROP", puis apprenez � utiliser les r�gles de filtrage iptables, /etc/hosts.allow et /etc/hosts.deny afin de s�curiser votre syst�me. ATTENTION - N'essayez pas d'appliquer ces r�gles iptables avant d'avoir un masquerading op�rationnel. Vous devez explicitement autoriser chaque transfert de paquet si vous param�trez la derni�re r�gle avec l'option DENY. (Annulez avec "iptables -P FORWARD ACCEPT")
Autorisez les acc�s provenant d'Internet pour chaque service.
Par exemple, pour autoriser l'acc�s au serveur web, vous faites:
$> iptables -A INPUT --protocol tcp --dport 80 -j ACCEPT $> iptables -A INPUT --protocol tcp --dport 443 -j ACCEPT
Pour autoriser l'authentification ( Se connecter sur les channels IRC etc...), faites
$> iptables -A INPUT --protocol tcp --dport 113 -j ACCEPT
Pour le tester:
Essayez de vous connecter sur Internet depuis une machine cliente en utilisant une adresse IP. L'adresse IP de Google est 64.233.183.103 (enfin, l'une d'entre elles) et vous devriez obtenir une r�ponse en retour Par exemple "ping 64.233.183.103" "lynx 64.233.183.103".
Essazyez une connexion par nom, par exemple "ping google.fr" "lynx google.fr" ou depuis Internet Explorer / netscape.
O� eth0 est l'interface r�seau externe, et 123.12.23.43 est l'adresse ip de ce client.
Comment lister les r�gles appliqu�es?
- Essayez
$> iptables -L $> iptables -t nat -L
Je ne peux r�soudre les adresses IP! Je tape 'www.microsoft.com' et cela m'indique qu'il ne le trouve pas!
- Assurez-vous d'avoir ajout� l'adresse IP du serveur dns sur les machines clientes
Cela ne fonctionne pas! Il ne supporte pas iptables / NAT / SNAT / MASQ
- T�l�chargez le dernier noyau et compilez-le avec le support iptables et full NAT.
Cela ne marche pas! Le masquerading ne fonctionne pas du tout! Meurs pourriture!
- Essayez echo 1 > /proc/sys/net/ipv4/ip_forward
Cela ne fonctionne pas! Je ne peux plus utiliser le r�seau et je vous hais!
- Essayez
$> iptables -F $> iptables -t nat -F $> iptables -t mangle -F
(Toutes les r�gles sont effac�es) puis red�marrez les autres r�gles iptables.
- Essayeziptables -P FORWARD ACCEPT
Cela ne marche toujours pas!
- Hmm, la commande "dmesg | tail" vous renvoie-t'elle des erreurs? ou bien "cat /var/log/messages | tail" ? Comme je le crains...
Cela ne renvoit rien. Et cela ne fonctionne toujours pas!
- Je ne sais pas... mais vous devriez est capable de :
1) pinguer l'ext�rieur depuis la passerelle 2) pinguer les machines locales depuis la passerelle 3) pinguer la passerelle depuis les machines locales
Et cela avant que vous n'appliquiez le masquerading
O� dois-placer ces trucs?
- Dans le fichier /etc/network/interfaces, ou firewall.rc. Si vous le placez dans le fichier interfaces, mettez le avant l'activation de l'interface r�seau externe, et placez "iptables -t nat -F" apr�s la d�sactivation de celle-ci.
How do I get it to only bring the ppp up on demand?
- Consid�rant que l'adresse IP de votre passerelle FAI est 23.43.12.43 pour le bien-fond� de l'argument, then rajoutez une ligne comme celle-ci:
:23.43.12.43
� la fin du fichier/etc/ppp/peers/provider. (Pour une adresse IP dynamique). Pour une adresse IP statique : external.ip.number:23.43.12.43 )
A la fin de ce fichier, rajoutez une nouvelle ligne:
demand
Le d�mon pppd restera en arri�re-plan pour relancer la connection si elle est d�sactiv�e, jusqu'� ce que vous faites un "ifdown ppp0" ou un "poff", � moins que vous n'ajoutiez une option "nopersist" , dans chaque cas pppd s'arr�tera une fois la connection activ�e. Vous pouvez �galement ajouter une ligne "idle 600" pour d�connecter apr�s 10 minutes d'inactivit�.
La connection reste inactive!
- Tout d'abord, avez-vous effectu� la proc�dure de connection? Est-ce que cela fonctionne comme cela est suppos�? V�rifiez le fichier/etc/ppp/peers/provider, et assurez-vous que votre connection marche bien avant d'essayer le masquerading.
- Deuxi�mement, si cela ne marche pas ( cela m'est arriv� ), cela devient peut-�tre �trange, et vous devrez revenir � un noyau 2.4.3 et voir si cela marche � la place.. je ne sais pas pourquoi.
Je n'aime pas faire cela moi-m�me! Je voudrais un script tout fait, une interface graphique.
- Bien s�r: http://shorewall.sourceforge.net/
A d�guster sans restrictions!
Dois-je consid�rer les modems comme ayant une adresse IP statique ou dynamique?
- Bonne question.. Vous devriez la placer en dynamique.
Dois-je consid�rer les cartes r�seaux DHCP comme ayant des adresses IP statiques ou dynamiques?
- Elles sont dynamiques.
Comment traiter les services entrants?
- Essayez de laisser passer ou de rediriger les requ�tes en provenance de ces ports IP - encore une fois, assurez-vous de les bloquer si n�cessaire.
Depuis les machines clientes, je peux pinguer l'adresse IP externe de la passerelle Linux, mais je ne peux acc�der � internet.
- Okay, essayez un "rmmod iptable_filter" - Plus d'info lorsque je les recevrai.
- Assurez-vous de ne pas avoir activ� le routage ou la passerelle - pour v�rifier l'activation : "ps aux | grep -e routed -e gated".
- Reportez-vous au site http://ipmasq.webhop.net/
Comment visualiser les connections �tablies? Avec netstat...
- Essayez la commande cat /proc/net/ip_conntrack
Je d�sire plus d'information sur le filtrage, le routage et autres trucs!
- Lisez le Guide Pratique du routage avanc� http://ftp.traduc.org/doc-vf/HOWTO/telechargement/html-1page/Adv-Routing-HOWTO.html
Ce guide pratique est une foutaise! Comment puis-je engueler le gars qui l'a �crit?
- Allez sur le canal #debian sur irc.opensource.net, et d�nichez JohnFlux. - Envoyez-moi un email (JohnFlux) � tapselj0@cs.man.ac.uk
Cet How-To est nul! Comment puis-je obtenir de meilleurs versions?
- Essayez http://ipmasq.cjb.net
- Consultez la LDP Masq-HOWTO.
Sur quoi d'autres travaillez-vous?
Actuellement j'�cris un guide simplifi� pour Linux sur des missiles anti-missile. Il n'existe pas de bons guides pour d�butants concernant la protection de votre syst�me en cas d'attaque nucl�aire Les gens semblent penser que c'est une science arm�e ou autre..