Squid
| Fiche express | |
|---|---|
| Domaine | Serveur mandataire (proxy) et cache Web |
| Paquet Debian/Ubuntu | squid
|
| Config principale | /etc/squid/squid.conf
|
| Port par défaut | 3128 (HTTP proxy), 3130 (ICP)
|
| Voir aussi | SquidGuard · Squid authentification · Sarg · Qstat · Squidclient |
Squid est un serveur mandataire (proxy) et cache Web open source, gérant les protocoles HTTP, HTTPS, FTP et Gopher. Il met en cache les objets Web les plus demandés pour économiser la bande passante et accélérer les accès, et sert de point de contrôle centralisé pour les accès sortants d'un réseau (filtrage, authentification, journalisation).
Spécifications
- Proxy et cache des protocoles HTTP, HTTPS, Gopher, FTP
- Hiérarchisation du cache (cache parent/sibling)
- ICP, HTCP, CARP, Cache Digests pour la communication entre caches
- Mode proxy transparent
- WCCP (redirection transparente au niveau routeur, Squid 2.3+)
- Contrôle d'accès étendu (ACL par IP, domaine, horaire, protocole, utilisateur…)
- Supervision SNMP
- Cache des requêtes DNS
- Reverse proxy (accélérateur HTTP)
Installation
apt-get install squid
Le module de filtrage SquidGuard s'installe séparément et vient se greffer sur Squid via un redirecteur d'URL.
Après installation, adapter au minimum le port d'écoute et les ports autorisés dans
squid.conf :
http_port 3128
acl Safe_ports port 8080 # exemple : port additionnel à autoriser
puis démarrer le service :
systemctl start squid
Le nom d'hôte annoncé par Squid (utile en cas de hiérarchie de caches) se vérifie avec :
squid -Nd1
Préparation système
Sur un proxy à fort trafic, il faut relever les limites par défaut du système :
# Nombre de descripteurs de fichiers ouverts par le processus squid
ulimit -n 8192
# Nombre maximum de fichiers ouverts au niveau noyau (Linux : fs.file-max)
sysctl fs.file-max
echo "fs.file-max = 65536" >> /etc/sysctl.conf
# Plage de ports locaux disponibles (utile si Squid ouvre beaucoup de connexions sortantes)
echo "1024 65535" > /proc/sys/net/ipv4/ip_local_port_range
(corrigé) les commandes historiquement citées pour ce réglage (kern.maxfiles,
sysctl -w net.inet.ip.portrange.last) sont des noms de sysctl BSD/macOS — elles
n'existent pas sous Linux. Les équivalents Linux sont fs.file-max et
net.ipv4.ip_local_port_range ci-dessus.
Gestion du service
En plus de systemctl, le binaire squid propose ses propres commandes
de contrôle, utiles pour agir sans redémarrage complet :
| Commande | Effet |
|---|---|
squid -k reconfigure |
recharge la configuration sans interrompre le service |
squid -k rotate |
fait tourner les fichiers de log |
squid -k shutdown |
arrêt propre (laisse les transactions en cours se terminer) |
squid -k interrupt |
arrêt immédiat (coupe les transactions en cours) |
squid -k kill |
envoie un signal kill au processus |
squid -k debug |
bascule en mode debug à chaud |
squid -k check |
vérifie que le service tourne |
squid -k parse |
vérifie la syntaxe du fichier de configuration |
Purger le cache
systemctl stop squid
rm -rf /var/spool/squid/* # chemin réel = celui déclaré par cache_dir dans squid.conf
squid -z # recrée l'arborescence de cache
systemctl start squid
Interroger le cache
L'outil squidclient permet d'envoyer des requêtes directement au cache (GET,
PURGE, statistiques internes du gestionnaire de cache) — voir Squidclient pour le détail
des commandes mgr:* disponibles.
squidclient -m GET https://exemple.org
squidclient -m PURGE https://exemple.org # nécessite une ACL PURGE dédiée, voir Squidclient
Débogage
debug_options ALL,1 15,3
debug_options section,level section,level ...
Pour identifier rapidement les objets les plus consultés à partir du log d'accès :
sort -r -n +4 -5 /var/log/squid/access.log | awk '{print $5, $7}' | head -25
Pour une analyse structurée et périodique plutôt qu'une lecture brute du log, voir Sarg (rapports HTML) et Qstat (statistiques temps réel).
Voir aussi
- SquidGuard — filtrage des sites Web via redirecteur d'URL
- Squid authentification — méthodes d'authentification des clients (Basic, Digest, NTLM, Negotiate)
- Squid notes — déploiement pratique NTLM/Kerberos via Samba/Active Directory
- Sarg — rapports d'utilisation à partir des logs
- Qstat — statistiques de trafic en temps réel
- Squidclient — client CLI de requêtage direct du cache
- Passerelle internet linux — mise en place complète d'une passerelle incluant Squid
- SquidFaq : ACL — documentation officielle
- Purger le cache Squid — article pratique