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

Lors de l'utilisation d'un mandataire (proxy) « ordinaire », le client indique à son navigateur le nom d'hôte et le numéro de port du serveur mandataire. Le navigateur dirige alors ses requêtes 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 :

C'est ici que le mandataire transparent entre en scène. Une requête web peut être interceptée de façon 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 réalité 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-tête X-Forwarder-For au serveur, afin que celui-ci puisse déterminer l'adresse IP réelle du client).

Les routeurs Cisco peuvent être utilisés comme mandataires transparents ainsi que de multiples commutateurs. D'une manière 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 nécessaire de s'assurer que le serveur mandataire soit au courant de cette redirection, afin qu'il puisse se connecter aux véritables serveurs de destination. Il existe deux moyens généraux pour cela :

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 intéressés par ce sujet devraient aller directement à cette section. Les lecteurs qui souhaitent mettre en place sur une même machine la redirection et le mandataire peuvent faire l'impasse sur cette section.

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 récentes versions stables au moment de son écriture (août 2002). Il devrait également s'appliquer à la plupart des noyaux 2.3 les plus récents. Si vous souhaitez utiliser des versions antérieures de Squid ou de Linux, vous pouvez vous référer à http://users.gurulink.com/drk/transproxy/. Notez que ce site a déménagé.

Si vous utilisez une version de développement du noyau ou de Squid, vous serez livré à vous-même. Ce document peut vous aider mais c'est vous qui voyez.

Notez que ce document ne traitera que des mandataires HTTP. Je reçois une foule de messages au sujet de la mise en place de mandataires FTP transparents. Squid ne possède 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 mémoire des pages. (Si vous hésitez sur le serveur mandataire à adopter, je vous recommande Squid. En effet, Squid a été pensé dès le départ comme serveur mandataire. Apache, de son côté, ne s'est vu rajouter les fonctionnalités de mandataire qu'après coup). Si vous désirez utiliser Apache au lieu de Squid, suivez toutes les instructions de ce document relatives au noyau et aux règles iptables. Ne tenez pas comptes des sections spécifiques à 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 pour sa contribution sur ce point).