
Petit guide de mise en place d'un mandataire transparent avec Linux et Squid

_Version franaise du Transparent Proxy with Linux and Squid mini-HOWTO _

_Auteur : _Daniel Kiracofe

   Traduction franaise: Genevive Gracian

   <ggracian CHEZ free POINT fr>

   Relecture de la version franaise: Jean-Philippe Gurard

   <jean TIRET philippe POINT guerard CHEZ corbeaunoir POINT org>

   Version 1.15.fr.1.0

   14 juillet 2003
   _Historique des versions_
   Version 1.15.fr.1.0 14 juillet 2003
   Mise  jour de la version franaise.
   Version 1.15        aot 2002
   Version 1.13.fr.1.0 19 janvier 2003
   Premire version franaise.
   Version 1.13        janvier 2002

   _Rsum_

   Ce document dtaille pas  pas la mise en place d'un serveur
   mandataire transparent, en n'utilisant que Linux et Squid. Il traite
   aussi bien de la configuration du noyau, de la configuration des
   rgles iptables, de la configuration rseau, que de la configuration
   du serveur mandataire lui-mme.
     _________________________________________________________________

   _Table des matires_

   1. Introduction

        1.1. Commentaires
        1.2. Droits d'auteur et marques dposes
        1.3. #include <dngation.h>

   2. Vue d'ensemble de l'utilisation d'un mandataire transparent

        2.1. Motivation
        2.2. tendue du document
        2.3. HTTPS
        2.4. Authentification auprs du mandataire

   3. Configurer le noyau
   4. Installer Squid
   5. Installer iptables (Netfilter)
   6. Mandataire transparent pour une machine distante

        6.1. Premire mthode (plus simple, mais non exhaustive) 
        6.2. Seconde mthode (plus complique mais plus gnrale) 
        6.3. Premire mthode... Et dans le cas o la machine iptables a
                une adresse IP dynamique ? 

   7. Mandataire transparent configur sur un pont rseau
   8. Assembler le tout
   9. En cas de problme
   10. Informations complmentaires
   11. Adaptation franaise

        11.1. Traduction
        11.2. Relecture

1. Introduction

1.1. Commentaires

   Les commentaires et ractions gnrales  propos de ce petit guide
   sont les bienvenus et peuvent tre adresss en anglais  son auteur
   Daniel Kiracofe <drk CHEZ unxsoft POINT com>.

   Les commentaires, corrections et suggestions relatifs  la version
   franaise de ce document, et aux liens qu'elle contient sont les
   bienvenus et peuvent tre adresss  <commentaires CHEZ traduc POINT
   org>.

1.2. Droits d'auteur et marques dposes

   Version originale  Daniel Kiracofe 2000-2003.

   Version franaise  Genevive Gracian & Jean-Philippe Gurard
   2002-2003.

   Ce manuel peut tre reproduit pour tout ou partie, sans redevance,
   moyennant les restrictions suivantes :
     * La note de copyright ci-dessus et cette liste de restrictions
       doivent tre intgralement conserves sur toute copie complte ou
       partielle.
     * La traduction en un autre langage est autorise,  condition que
       l'auteur en soit averti avant la traduction.
     * Tout travail driv doit tre approuv par crit par l'auteur
       avant publication.
     * Si vous distribuez ce travail en partie seulement, les indications
       concernant la manire de se procurer l'intgralit de celui-ci
       doivent tre incluses et un moyen d'obtenir cette version complte
       doit tre fourni.
     * De courtes citations peuvent tre reproduites dans d'autres
       travaux,  titre d'exemple ou d'illustration, sans inclure cette
       note d'autorisation,  condition qu'il soit fait rfrence  ce
       document d'une manire approprie.

   Des exceptions  ces rgles peuvent tre concdes dans le cadre de
   projets universitaires. crivez  l'auteur et demandez. Ces
   restrictions sont ici pour nous protger en tant qu'auteurs, pas pour
   vous limiter en tant qu'apprentis et formateurs. Tout code source
   (except le sgml dans lequel cette documentation a t crite) inclus
   dans ce document est plac sous la licence publique gnrale GNU
   (GPL), rcuprable par ftp anonyme depuis l'archive GNU.

1.3. #include <dngation.h>

   Aucune garantie explicite ou implicite, et ctera, et ctera, et
   ctera.

2. Vue d'ensemble de l'utilisation d'un mandataire transparent

2.1. Motivation

   Lors de l'utilisation d'un mandataire (proxy)  ordinaire , le client
   indique  son navigateur le nom d'hte et le numro de port du serveur
   mandataire. Le navigateur dirige alors ses requtes vers le serveur
   mandataire qui les redirige vers les serveurs cibles. Cependant, de
   temps en temps, on se trouve dans l'une des situations suivantes.
   Soit :
     * vous voulez obliger les clients de votre rseau  utiliser le
       serveur mandataire, qu'ils le veuillent ou non ;
     * vous voulez que les clients utilisent le mandataire mais vous ne
       voulez pas qu'ils le sachent ;
     * vous voulez que les clients passent par le serveur mandataire,
       mais vous ne voulez pas faire tout le travail ncessaire  la mise
        jour des rglages de centaines ou de milliers de navigateurs.

   C'est ici que le mandataire transparent entre en scne. Une requte
   _web_ peut tre intercepte de faon transparente par le mandataire.
   Pour autant que le sache le client, il est en train de parler au
   serveur d'origine, alors qu'il communique en ralit avec le
   mandataire. (Notez que la transparence ne s'applique qu'au client ; le
   serveur sait qu'un serveur mandataire est mis en oeuvre et voit son
   adresse IP, et non celle de l'utilisateur. De plus, Squid a la
   possibilit de transmettre un en-tte X-Forwarder-For au serveur, afin
   que celui-ci puisse dterminer l'adresse IP relle du client).

   Les routeurs Cisco peuvent tre utiliss comme mandataires
   transparents ainsi que de multiples commutateurs. D'une manire assez
   patante, Linux peut tre configur comme routeur, et servir de
   mandataire transparent en redirigeant les connexions TCP vers des
   ports locaux. Cependant, il est ncessaire de s'assurer que le serveur
   mandataire soit au courant de cette redirection, afin qu'il puisse se
   connecter aux vritables serveurs de destination. Il existe deux
   moyens gnraux pour cela :
     * Tout d'abord, lorsque le serveur mandataire n'est pas capable
       d'agir en tant que mandataire transparent, vous pouvez utiliser un
       petit dmon astucieux appel Transproxy qui sige devant le
       mandataire et s'occupe de tous les dtails triviaux  votre place.
       Transproxy a t crit par John Saunders, et peut tre trouv sur
       http://www.transproxy.nlc.net.au/. Transproxy ne sera pas prsent
       plus en dtail dans ce document.
     * Une solution plus propre est d'utiliser un serveur mandataire
       directement capable d'agir en tant que mandataire transparent.
       Celui sur lequel nous allons nous pencher est Squid. Squid est un
       serveur mandataire pour Unix, dont les sources sont publiques, et
       qui est capable de mmoriser les pages _web_. On peut le trouver
       sur http://www.squid-cache.org.

   Il est galement possible, au lieu de rediriger les connexions vers
   des ports locaux, de les rediriger vers des ports distants. Ceci sera
   trait dans Section 6. Les lecteurs intresss par ce sujet devraient
   aller directement  cette section. Les lecteurs qui souhaitent mettre
   en place sur une mme machine la redirection et le mandataire peuvent
   faire l'impasse sur cette section.

2.2. tendue du document

   Ce document se concentre sur la version 2.4 de Squid ainsi que sur la
   version 2.4 du noyau. Ces versions sont les plus rcentes versions
   stables au moment de son criture (aot 2002). Il devrait galement
   s'appliquer  la plupart des noyaux 2.3 les plus rcents. Si vous
   souhaitez utiliser des versions antrieures de Squid ou de Linux, vous
   pouvez vous rfrer  http://users.gurulink.com/drk/transproxy/. Notez
   que ce site a dmnag.

   Si vous utilisez une version de dveloppement du noyau ou de Squid,
   vous serez livr  vous-mme. Ce document peut vous aider mais c'est
   vous qui voyez.

   Notez que ce document ne traitera que des mandataires HTTP. Je reois
   une foule de messages au sujet de la mise en place de mandataires FTP
   transparents. Squid ne possde pas cette capacit. Il semblerait qu'un
   programme nomm Frox le puisse. Je ne l'ai pas essay, donc j'ignore
   s'il fonctionne bien. Vous pourrez le trouver sur
   http://frox.sourceforge.net/.

   Ce document se consacre essentiellement  Squid. Cependant, Apache
   peut aussi tre utilis comme mandataire avec mmoire des pages. (Si
   vous hsitez sur le serveur mandataire  adopter, je vous recommande
   Squid. En effet, Squid a t pens ds le dpart comme serveur
   mandataire. Apache, de son ct, ne s'est vu rajouter les
   fonctionnalits de mandataire qu'aprs coup). Si vous dsirez utiliser
   Apache au lieu de Squid, suivez toutes les instructions de ce document
   relatives au noyau et aux rgles iptables. Ne tenez pas comptes des
   sections spcifiques  Squid, et allez voir les sources et le mode
   d'emploi du module mandataire transparent pour Apache sur
   http://lupo.campus.uniroma2.it/progetti/mod_tproxy/. (Merci 
   Cristiano Paris <c POINT paris CHEZ libero POINT it> pour sa
   contribution sur ce point).

2.3. HTTPS

   Enfin, en ce qui concerne la mise en place d'un mandataire transparent
   pour HTTPS (par exemple, pour les pages _web_ utilisant SSL, TSL, et
   ctera), _vous ne pouvez pas le faire_. Ne le demandez mme pas. Pour
   comprendre pourquoi, effectuez une recherche avec les mots clefs
    attaque de l'intermdiaire cach  (_man-in-the-middle attack_).
   Remarquez que, de toutes manires, vous n'avez probablement pas
   rellement besoin de rediriger les requtes HTTPS vers Squid, dans la
   mesure o celui-ci ne mmorise pas les pages scuriss.

2.4. Authentification auprs du mandataire

   Il n'est pas possible de s'authentifier auprs d'un mandataire
   transparent. Voyez la FAQ Squid pour (un peu) plus de dtails.

3. Configurer le noyau

   D'abord, il est ncessaire de s'assurer que notre noyau comporte les
   bonnes options de configuration. Si vous utilisez un noyau
    prt--porter  fourni par votre distribution, la gestion de
   mandataires transparents peut -- ou non -- tre active. Si vous n'en
   tes pas sr, le mieux  faire est de sauter cette section et, si les
   commandes de la prochaine section vous renvoient des erreurs bizarres,
   c'est probablement parce que votre noyau n'est pas correctement
   configur.

   Si votre noyau n'a pas t compil avec les options de configuration
   permettant la gestion des mandataires transparents, vous devrez le
   recompiler. Recompiler un noyau est un processus complexe (du moins la
   premire fois), et sort du sujet de ce document. Si vous avez besoin
   d'aide pour la compilation du noyau, reportez-vous au Guide pratique
   du noyau Linux

   Les options que vous devez slectionner lors de la configuration du
   noyau sont les suivantes (remarque : si vous prfrez des modules,
   certaines -- mais pas toutes -- peuvent tre compiles comme modules.
   Heureusement, tout ce qui n'est pas modularisable peut tre intgr 
   votre noyau) :
+ Dans  General setup 
        +  Networking support 
        +  Sysctl support 

+ Dans  Networking Options 
        +  Network packet filtering 
        +  TCP/IP networking 

+ Dans  Networking options  ->  IP : Netfilter configuration 
        +  Connection tracking 
        +  IP tables support 
        +  Full NAT 
        +  REDIRECT target support 

+ Dans  File system 
        +  /proc filesystem support 

   Vous devez rpondre _non_   Fast switching  dans  Networking
   options .

   Une fois que vous aurez un nouveau noyau en tat de fonctionner, vous
   pourrez avoir besoin d'activer le routage IP. Celui-ci permet  votre
   ordinateur de faire office de routeur. Dans la mesure o ce n'est pas
   ce que l'utilisateur moyen veut faire, cette option n'est pas activ
   par dfaut et doit tre activ de manire explicite au dmarrage.
   Nanmoins, il est possible que votre distribution le fasse dj pour
   vous. Pour le savoir, faites _cat /proc/sys/net/ipv4/ip_forward_. Si
   vous voyez  1  c'est bon. Sinon, faites
   _echo '1' > /proc/sys/net/ipv4/ip_forward_. Vous aurez certainement
   intrt  ajouter cette commande dans le script de dmarrage appropri
   (en fonction de votre distribution, il peut se trouver dans /etc/rc.d,
   /etc/init.d, ou carrment ailleurs).

4. Installer Squid

   Il faut maintenant faire fonctionner Squid. Tlchargez l'archive la
   plus rcente du code source depuis http://www.squid-cache.org.
   Assurez-vous que vous avez bien une version _stable_ et non une
   version de dveloppement. La version la plus rcente  l'heure o
   j'cris ces lignes est squid-2.4.STABLE4.tar.gz. Remarquez qu' ma
   connaissance vous devez utiliser squid-2.4 pour les noyaux Linux 2.4.
   La raison en est que le mcanisme par lequel le processus dtermine
   l'adresse originale de destination a chang depuis Linux 2.2, et que
   le code ncessaire n'est prsent qu' partir de squid-2.4 (pour ceux
   que cela intresse, auparavant l'appel getsockname() tait bidouill
   pour obtenir l'adresse originale de destination, alors que l'on
   utilise maintenant l'appel getsockopt() avec le niveau SOL_IP et
   l'option SO_ORIGINAL_DST).

   Dcompactez et extrayez l'archive (utilisez _tar xzf nom_du_fichier_).
   Excutez le script d'auto-configuration et dites-lui d'inclure le code
   destin  Netfilter (_./configure --enable-linux-netfilter_), compilez
   (_make_) puis installez (_make install_).

   Modifiez le fichier squid.conf (il devrait tre sous
   /usr/local/squid/etc/squid.conf,  moins que vous n'ayez chang son
   chemin par dfaut). Le fichier squid.conf est abondamment comment. Il
   constitue pour certains sujets l'une des meilleures sources
   d'information sur Squid. Une fois que tout fonctionnera, je vous
   recommande de revenir en arrire et de le relire compltement. Mais
   pour l'instant, contentons-nous du minimum requis. Trouvez les
   directives suivantes, dcommentez-les, et donnez-leur les valeurs
   appropries :
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

   Ensuite, jetez un oeil aux directives cache_effective_user et
   cache_effective_group. Si le couple utilisateur-groupe nobody/nogroup
   n'existe pas sur votre systme (autant que je sache, ce n'est pas le
   cas dans de nombreuse distributions, y compris dans la RedHat 7.1),
   vous devrez le mettre en place, ou en crer un autre pour excuter
   Squid. Je vous recommande chaudement de crer un couple
   utilisateur-groupe squid/squid pour faire tourner Squid, mais vous
   pouvez utiliser n'importe quel compte existant si vous le souhaitez.

   Enfin, jetez un oeil  la directive http_access. Sa valeur par dfaut
   est habituellement http_access deny all. Ce qui empche quiconque
   d'accder  Squid. Provisoirement, vous pouvez changer cette valeur en
   http_access allow all, mais une fois le systme oprationnel, il est
   fortement recommand de lire la documentation consacre aux listes de
   contrle d'accs (ACL), et de configurer le mandataire de manire  ce
   que seules les personnes de votre rseau local (par exemple) puisse y
   accder. Ceci peut paratre idiot, mais il est important de mettre en
   place de telles restrictions sur l'accs  votre cache. Les personnes
   bloques par des pare-feu filtrants (tels que des filtres
   anti-pornographie, ou les filtres de pays totalitaires) font souvent
   de l'auto-stop sur les mandataires ouverts  tous vents et consomment
   votre bande passante.

   Initialisez le rpertoire utilis pour la mmorisation des pages via
   la commande _squid -z_ (vous devriez passer cette tape si Squid tait
   dj install sur votre machine).

   Maintenant, excutez Squid en utilisant le script _RunCache_ du
   rpertoire /usr/local/squid/bin/. Si cela fonctionne, vous devriez
   tre en mesure de rgler les paramtres proxy de votre navigateur sur
   l'adresse IP de la machine o tourne Squid, et sur le port 3128 (
   moins que vous n'ayez chang le numro de port par dfaut) et
   d'accder  Squid comme  un mandataire normal.

   Pour obtenir une aide complmentaire sur la configuration de Squid,
   reportez-vous  la FAQ de Squid sur http://www.squid-cache.org.

5. Installer iptables (Netfilter)

   Iptables est une nouveaut des noyaux Linux 2.4, et remplace ipchains.
   Si votre distribution est fournie avec un noyau 2.4, iptables est
   probablement dj install. Dans le cas contraire vous devrez le
   tlcharger (et probablement le compiler). Il est disponible sur
   http://netfilter.samba.org. Il est sans doute possible de trouver des
   paquets RPM binaires quelque part ailleurs, mais je n'ai pas cherch.
   Pour les curieux, le site de netfilter contient beaucoup de
   documentation.

   Pour mettre en place les rgles, vous devez connatre deux choses :
   l'interface par laquelle arrivent les requtes des clients devant tre
   transmises au serveur mandataire (j'utiliserai eth0 dans l'exemple) et
   le port sur lequel Squid attend ( titre d'exemple, j'utiliserai la
   valeur par dfaut 3128).

   Maintenant, voici les mots magiques de la mise en place d'un
   mandataire transparent :
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 \
         -j REDIRECT --to-port 3128

   Vous devrez ajouter les commandes ci-dessus au script de dmarrage
   appropri sous /etc/rc.d. Les lecteurs procdant  une mise  jour
   depuis un noyau 2.2 noteront que c'est la seule commande ncessaire.
   Les noyaux 2.2 exigeaient deux commandes supplmentaires pour empcher
   les boucles de routage. L'infrastructure de netfilter est plus
   perfectionne, et n'a besoin que de cette commande.

6. Mandataire transparent pour une machine distante

   Maintenant, une question se pose naturellement, si l'on peut raliser
   toutes ces astucieuses manoeuvres pour rediriger les connexions HTTP
   vers des ports locaux, ne pourrait-on pas faire la mme chose mais
   vers une machine distante (par exemple, dans le cas o la machine qui
   excute Squid n'est pas la mme que celle qui fait tourner
   _iptables_). La rponse est oui, mais cela demandes des mots magiques un
   peu diffrents. Si vous souhaitez uniquement une redirection vers la
   machine locale, ce qui est la cas habituel, vous pouvez ignorer ce
   chapitre.

   Pour les besoins de l'exemple, supposons que nous ayons deux machines
   nommes _machine-squid_ et _machine-iptables_, et qu'elles soient sur
   le rseau _rseau-local_. Dans les commandes ci-dessous, remplacez ces
   chanes par les adresses ou les noms rels de vos rseau et machines.

   Je prsenterai ici deux approches diffrentes.

6.1. Premire mthode (plus simple, mais non exhaustive)

     * Sur laquelle tournera Squid, _machine-squid_, vous n'avez ni
       besoin d'iptables, ni d'indiquer au noyau une option spcifique.
       La seule chose ncessaire est Squid. Vous aurez en revanche
       _besoin_[1] d'indiquer  Squid l'option http_accel telle qu'elle
       est dcrite ci-dessus.
     * Sur la machine sur laquelle tournera iptables, _machine-iptables_,
       vous devrez configurer le noyau comme dcrit dans Section 3
       ci-dessus,  une exception prs : vous n'avez pas besoin de
       l'option  REDIRECT target support . Pour ce qui est des
       commandes iptables, vous aurez besoin de trois d'entre elles :

iptables -t nat -A PREROUTING -i eth0 -s !_machine-squid_ \
         -p tcp --dport 80 -j DNAT --to _machine-squid_:3128

iptables -t nat -A POSTROUTING -o eth0 -s _rseau-local_ \
         -d _machine-squid_ -j SNAT --to _machine-iptables_

iptables -A FORWARD -i eth0 -o eth0 -s _rseau-local_ \
         -d _machine-squid_ -p tcp --dport 3128 -j ACCEPT

       La premire envoie les paquets de _machine-iptables_ vers
       _machine-squid_. La seconde s'assure que la rponse soit renvoye
       via _machine-iptables_, plutt que directement au client (c'est
       trs important !). La dernire s'assure que _machine-iptables_
       redirigera les paquets appropris vers _machine-squid_. Il est
       possible qu'elle ne soit pas ncessaire.  vous de voir. Remarquez
       que nous avons spcifi -i eth0 puis -o eth0, ce qui veut dire que
       nous utilisons eth0 comme interface d'entre (-i) et de sortie
       (-o). Si vos paquets entrent et sortent par des interfaces
       diffrentes, vous devrez ajuster ces commandes en consquence.

   Ajoutez ces commandes aux scripts de dmarrage appropris sous
   /etc/rc.d/

   (Merci  Giles Coochey d'avoir aid  l'criture de cette section).

6.2. Seconde mthode (plus complique mais plus gnrale)

   Notre premire tentative marche bien, mais a un petit inconvnient :
   elle ne permet pas de grer correctement les connexions HTTP/1.0 sans
   en-tte Host. Les connexions partiellement ou compltement compatibles
   HTTP/1.1, elles, marchent bien. En gnral, cela ne pose pas de
   problme, car la majorit des navigateurs modernes envoient l'en-tte
   Host. Cela pose problme dans le cas de certains petits programmes ou
   appareils embarqus, car ceux-ci n'mettent que des requtes HTTP/1.0
   trs simples. Pour tre capable de grer correctement ce cas de
   figure, il faut en faire un peu plus.
     * Sur _machine-iptables_, il est ncessaire d'activer les options
       suivantes du noyau :

IP: advanced router
IP: policy routing
IP: use netfilter MARK value as routing key
IP: Netfilter Configuration -> Packet mangling
IP: Netfilter Configuration -> MARK target support

       Vous aurez galement besoin des utilitaires iproute2. Votre
       distribution les a probablement dj installs mais, dans le cas
       contraire, jetez un coup d'oeil  ftp://ftp.inr.ac.ru/ip-routing/
       La configuration de la machine ncessitera les commandes
       suivantes :

iptables -t mangle -A PREROUTING -j ACCEPT -p tcp --dport 80 -s _machine-squid_
iptables -t mangle -A PREROUTING -j MARK --set-mark 3 -p tcp --dport 80
ip rule add fwmark 3 table 2
ip route add default via _squid-box_ dev eth1 table 2

       Notez que les numros choisis pour la marque de pare-feu (3) et
       pour la table de routage (2) sont compltement arbitraires. Si
       vous utilisez dj un routage dirig (_policy routing_) ou un
       marquage de pare-feu pour d'autres besoins, assurez-vous que vous
       choisissez ici des numros non utiliss.
     * Passons  _machine-squid_. Utilisez la commande suivante, qui
       devrait vous sembler remarquablement similaire  une commande vue
       prcdemment.

iptables -A PREROUTING -t nat -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3
128

   Comme prcdemment, ajoutez toutes ces commandes aux scripts de
   dmarrage appropris.

   Voici une explication succincte de la faon dont cette seconde mthode
   fonctionne : dans la premire mthode, nous avons utilis la
   traduction d'adresse pour diriger les paquets vers l'autre machine. Ce
   qui implique une modification des paquets. Cette altration est la
   cause des dfaillances mentionns plus haut pour certains types de
   clients. Dans la mthode deux, nous utilisons un truc magique appel
   routage dirig (_policy routing_). Il faut tout d'abord slectionner
   les paquets que l'on veut. Pour ce faire, nous marquons (via la cible
   MARK) tous les paquets destins au port 80, except ceux provenant de
   _machine-squid_ elle-mme. Habituellement, lorsque le noyau doit
   dcider du routage des paquets, il utilise la table de routage
   consultable via la commande _route_. Pour le routage des paquets
   marqus, il utilisera une table spciale ne comportant qu'une seule
   entre, une passerelle par dfaut pointant vers _machine-squid_. Les
   paquets viss seront donc joyeusement envoys vers leur destin, sans
   subir aucune modification. Ce qui permettra de grer correctement
   toutes les connexions, y compris les connexions HTTP/1.0. (Merci 
   Michal Svoboda d'avoir suggr cette section et aid  sa rdaction).

6.3. Premire mthode... Et dans le cas o la machine iptables a une adresse
IP dynamique ?

   Si _machine-iptables_ a une adresse IP dynamique (par exemple dans le
   cas d'une connexion ppp tlphonique ou d'une adresse assigne par
   DHCP sur un modem-cble), vous devrez alors apporter une lgre
   modification aux commandes ci-dessus. Remplacez la seconde commande
   par celle-ci :
iptable -t nat -A POSTROUTING -o eth0 -s _rseau-local_ \
        -d _machine-squid_ -j MASQUERADE

   Cette modification vite d'avoir  spcifier l'adresse IP de
   _machine-iptables_ dans la commande. Dans la mesure o celle-ci change
   souvent, vous devriez modifier la commande  chaque fois. Cette
   modification vous pargnera donc beaucoup de travail.

7. Mandataire transparent configur sur un pont rseau

   Attention, nous entrons ici dans un domaine vraiment sotrique. Si
   vous en avez besoin, vous saurez de quoi il s'agit. Merci  Lewis
   Shobbrook <lshobbrook CHEZ fasttrack POINT net POINT au> pour sa
   contribution  cette section.

   Si vous essayez de configurer en mandataire transparent une machine
   Linux utilise comme pont rseau, vous aurez besoin d'ajouter une
   commande supplmentaire  ce que nous avons dans Section 5. Plus
   prcisment, vous aurez besoin de permettre explicitement les
   connexions  la machine sur le port 3128 (ou tout autre port sur
   lequel Squid est  l'coute). En effet, si vous ne le faites pas, la
   machine fera suivre ces connexions directement via l'autre interface,
   comme le ferait tout bon petit pont. Voici les mots magiques :
iptable -A INPUT -i _interface_ -d _adresse_IP_du_pont_ \
        -s _rseau-local_ -p tcp --dport 3128 \
        -m state --state NEW,ESTABLISHED -j ACCEPT

   Remplacez _interface_ par l'interface correspondant 
   _adresse_IP_du_pont_ (en gnral, il s'agit de eth0 ou eth1). Les
   personnes utilisant un pont pour la premire fois devraient galement
   prendre note du fait qu'il leur est possible de rpter la mme
   commande en remplaant 3128 par ssh afin de pouvoir administrer leur
   pont  distance.

8. Assembler le tout

   Si jusqu' prsent tout s'est bien droul, installez-vous sur une
   autre machine, rglez son adresse de passerelle sur l'adresse IP de la
   machine qui excute iptables, et naviguez. Pour vous assurer que les
   requtes sont bien rediriges au travers du mandataire plutt que
   d'tre envoyes directement au serveur d'origine, il vous suffit de
   consulter le fichier journal : /usr/local/squid/logs/access.log

9. En cas de problme

   Un problme spcifique est suffisamment frquent pour mriter d'tre
   mentionn ici. Si vous obtenez l'erreur suivante :
/lib/modules/2.4.2-2/kernel/net/ipv4/netfilter/ip_tables.o
init_modules: Device or resource busy
Hints: insmod errors can be caused by incorrect module parameters;
including invalid IO or IRQ parameters.

perhaps iptables or your kernel needs to be upgraded...

   C'est sans doute que vous utilisez la distribution Red Hat 7.x. Les
   responsables de Red Hat, dans leur grande sagesse, on dcid de
   charger le module ipchains par dfaut au dmarrage. Il devait s'agir
   de prserver la compatibilit descendante pour ceux qui ne se sont pas
   encore mis  iptables. Cependant, le problme est que ipchains et
   iptables sont mutuellement incompatibles. Comme ipchains a t
   secrtement charg par Red Hat, vous ne pouvez pas utiliser les
   commandes iptables. Pour vrifier si tel est bien votre problme,
   utilisez la commande _lsmod_, et vrifiez si le module nomm ipchains
   est prsent. Si vous le trouvez, c'est que c'est bien l que se situe
   votre problme. Une solution  court terme est d'excuter la commande
   _rmmod ipchains_ avant d'excuter les commandes _iptables_. Pour
   dsactiver le chargement automatique du module ipchains au dmarrage,
   essayez la commande suivante : _/sbin/chkconfig --level 2345 ipchains
   off_ (merci  Rasmus Glud de m'avoir indiqu cette commande).

10. Informations complmentaires

   Si vous avez besoin d'assistance, je vous recommande de consulter la
   FAQ de Squid ou sa liste de diffusion, sur http://www.squid-cache.org.
   Vous pouvez galement me contacter en anglais  <drk CHEZ unxsoft
   POINT com>, et j'essaierai de rpondre  vos questions si le temps me
   le permet (des fois oui, des fois non). SVP, SVP, SVP, envoyez-moi le
   rsultat de la commande _iptables -t nat -L_ et les portions
   significatives des fichiers de configuration dans votre courrier,
   sinon, je ne serai probablement pas en mesure de vous tre trs utile.
   S'il vous plat, assurez-vous d'avoir lu l'intgralit de ce petit
   guide avant de poser une question. Bien que ce document aie t
   traduit dans de nombreuses langues, je ne pourrai rpondre qu'aux
   questions poses en anglais, et j'en suis dsol.

11. Adaptation franaise

11.1. Traduction

   La traduction franaise de ce document a t ralise par Genevive
   Gracian <ggracian CHEZ free POINT fr>.

11.2. Relecture

   La relecture de ce document a t ralise par Jean-Philippe Gurard
   <jean TIRET philippe POINT guerard CHEZ corbeaunoir POINT org>.
   _________________________________________________________________

   [1] Les versions prcdentes de ce petit guide suggraient que tel
   n'tait pas le cas. C'tait une erreur. Dsol d'avoir cr cette
   confusion.
