4. Installer Squid

Il faut maintenant faire fonctionner Squid. Téléchargez l'archive la plus récente du code source depuis http://www.squid-cache.org. Assurez-vous que vous avez bien une version stable et non une version de développement. La version la plus récente à 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 mécanisme par lequel le processus détermine l'adresse originale de destination a changé depuis Linux 2.2, et que le code nécessaire n'est présent qu'à partir de squid-2.4 (pour ceux que cela intéresse, 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).

Décompactez et extrayez l'archive (utilisez tar xzf nom_du_fichier). Exécutez 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 défaut). 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 arrière et de le relire complètement. Mais pour l'instant, contentons-nous du minimum requis. Trouvez les directives suivantes, décommentez-les, et donnez-leur les valeurs appropriées :

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 système (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 créer un autre pour exécuter Squid. Je vous recommande chaudement de créer 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 défaut est habituellement http_access deny all. Ce qui empêche quiconque d'accéder à Squid. Provisoirement, vous pouvez changer cette valeur en http_access allow all, mais une fois le système opérationnel, il est fortement recommandé de lire la documentation consacrée aux listes de contrôle d'accès (ACL), et de configurer le mandataire de manière à ce que seules les personnes de votre réseau local (par exemple) puisse y accéder. Ceci peut paraître idiot, mais il est important de mettre en place de telles restrictions sur l'accès à votre cache. Les personnes bloquées 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 répertoire utilisé pour la mémorisation des pages via la commande squid -z (vous devriez passer cette étape si Squid était déjà installé sur votre machine).

Maintenant, exécutez Squid en utilisant le script RunCache du répertoire /usr/local/squid/bin/. Si cela fonctionne, vous devriez être en mesure de régler les paramètres 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 numéro de port par défaut) et d'accéder à Squid comme à un mandataire normal.

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