Installer et configurer Squid en tant que cache transparent sur Mac OS X

proxy squid 232x250 Proxy cache transparent sur Mac OS X avec Squid

Proxy Squid

Squid est un proxy, il est toutefois possible de le paramétrer pour qu’il devienne un proxy cache transparent (et donc invisible à la navigation).

Macports

Pré-requis: Macports (installation via .dmg sur http://www.macports.org/install.php, disponible pour Tiger, Leopard, Snow Leopard, et Lion).
A noter, Macports nécessite le kit développeur Apple (Apple Xcode Developer Tools), ainsi que X11. Une fois Macports installé, mettons-le à jour:
sudo port -v selfupdate

Il faut installer Squid compilé avec l’option tansparent.
sudo port install squid3 +ipfw_transparent

Le daemon Squid doit être lancé au démarrage de la machine
sudo port load squid3
Si vous n’avez pas l’habitude de manipuler MacPorts, je vous conseille de lire son manuel (man macports!)

Configuration Squid en mode transparent

Maintenant que Squid est installé, paramétrons-le pour qu’il intercepte le port 3129 (fichier de configuration: /opt/local/etc/squid/squid.conf):
http_port 3129 intercept

Indiquer à Squid qu’il doit recharger le fichier de configuration
sudo squid -k reconfigure

Configuration du pare-feu pour Squid

Il faut maintenant configurer le pare-feu pour dériver le port 80 à Squid
sudo ipfw add 1013 fwd 127.0.0.1,3129 tcp from any to any 80 recv en0
(en0 étant la première interface réseau, à modifier par l’interface active).

Le cas de Mac OS 10.6 (Snow Leopard)

Snow Léopard pose un problème, son kernel refuse cette fonction. Il faut donc modifier la valeur net.inet.ip.scopedroute.
sudo bash -c "echo net.inet.ip.scopedroute=0 >> /etc/sysctl.conf"
(redémarrage requis pour activer cette fonction)

Bon-fonctionnement du proxy Squid

Pour vérifier son bon fonctionnement, vous pouvez analyser les en-têtes HTTP de retour, ou scruter les logs (que je conseille de désactiver dans le fichier de configuration Squid, pour éviter tous risque d’énormes fichiers quelques peu inutiles..)
sudo tail -f /opt/local/var/squid/logs/cache.log

En cas de problème, il suffit d’effacer la règle du pare-feu, pour un retour à la normale (si vous ne maitrisez pas ipfw
man ipfw!).
sudo ipfw delete 1013