 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

  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 :

     o La note de copyright ci-dessus et cette liste de restrictions
       doivent tre intgralement conserves sur toute copie complte
       ou partielle.

     o La traduction en un autre langage est autorise,  condition
       que l'auteur en soit averti avant la traduction.

     o Tout travail driv doit tre approuv par crit par l'auteur
       avant publication.

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

     o 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 :

     o vous voulez obliger les clients de votre rseau  utiliser le
       serveur mandataire, qu'ils le veuillent ou non ;

     o vous voulez que les clients utilisent le mandataire mais vous
       ne voulez pas qu'ils le sachent ;

     o 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 uvre
   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 :

     o 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/
       [http://www.transproxy.nlc.net.au/]. Transproxy ne sera pas
       prsent plus en dtail dans ce document.

     o 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
       [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,  Mandataire transparent pour une
   machine distante . 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/
   [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/
   [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/
   [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
   [http://www.squid-cache.org/Doc/FAQ/FAQ.html] 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
   [http://www.traduc.org/docs/HOWTO/lecture/Kernel-HOWTO.html]

   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
   [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 il 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 il  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 [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
   [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 manuvres 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)

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

     o Sur la machine sur laquelle tournera iptables,
       machine-iptables, vous devrez configurer le noyau comme dcrit
       dans Section 3,  Configurer le noyau  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.

     o 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'il 
       [1]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.

     o 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 3128

   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,  Installer iptables (Netfilter) . 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 [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.

