Tous les paramètres de configuration du démon squid
sont rassemblés dans le fichier
squid.conf
. Ce fichier est
particulièrement volumineux et par conséquent difficile à prendre
en main. Décrire toutes les fonctionnalités offertes par ces
paramètres dépasse très largement le cadre de ce billet. On se
contente donc de présenter un patch qui
fait ressortir les paramètres modifiés pour les besoins du contexte
d'exploitation.
$ diff -uBb /etc/squid3/squid.conf squid.conf.new --- /etc/squid3/squid.conf 2008-07-21 12:31:32.000000000 +0200 +++ squid.conf.new 2008-11-08 19:28:18.000000000 +0100 @@ -579,6 +579,7 @@ # #Recommended minimum configuration: acl manager proto cache_object +acl mynetworks src 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16 acl localhost src 127.0.0.1/32 acl to_localhost dst 127.0.0.0/8 # @@ -644,6 +645,7 @@ # Adapt localnet in the ACL section to list your (internal) IP networks # from where browsing should be allowed #http_access allow localnet +http_access allow mynetworks http_access allow localhost # And finally deny all other access to this proxy @@ -677,6 +679,7 @@ # #Allow ICP queries from local networks only #icp_access allow localnet +icp_access allow mynetworks icp_access deny all # TAG: htcp_access @@ -867,7 +870,7 @@ # visible on the internal address. # # Squid normally listens to port 3128 -http_port 3128 +http_port 3128 transparent # TAG: https_port # Note: This option is only available if Squid is rebuilt with the @@ -1564,6 +1567,7 @@ # #Default: # cache_mem 8 MB +cache_mem 64 MB # TAG: maximum_object_size_in_memory (bytes) # Objects greater than this size will not be attempted to kept in @@ -1573,6 +1577,7 @@ # #Default: # maximum_object_size_in_memory 8 KB +maximum_object_size_in_memory 128 KB # TAG: memory_replacement_policy # The memory replacement policy parameter determines which @@ -1582,7 +1587,7 @@ # #Default: # memory_replacement_policy lru - +memory_replacement_policy heap LFUDA # DISK CACHE OPTIONS # ----------------------------------------------------------------------------- @@ -1624,6 +1629,7 @@ # #Default: # cache_replacement_policy lru +cache_replacement_policy heap LFUDA # TAG: cache_dir # Usage: @@ -1731,6 +1737,7 @@ # #Default: # cache_dir ufs /var/spool/squid3 100 16 256 +cache_dir aufs /var/spool/squid3 16384 16 256 # TAG: store_dir_select_algorithm # Set this to 'round-robin' as an alternative. @@ -2211,6 +2218,7 @@ # #Default: # none +url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf # TAG: url_rewrite_children # The number of redirector processes to spawn. If you start @@ -2220,6 +2228,7 @@ # #Default: # url_rewrite_children 5 +url_rewrite_children 20 # TAG: url_rewrite_concurrency # The number of requests each redirector helper can handle in @@ -2509,6 +2518,7 @@ # #Default: # request_header_max_size 20 KB +request_header_max_size 32 KB # TAG: reply_header_max_size (KB) # This specifies the maximum size for HTTP headers in a reply. @@ -2519,6 +2529,7 @@ # #Default: # reply_header_max_size 20 KB +reply_header_max_size 32 KB # TAG: request_body_max_size (bytes) # This specifies the maximum size for an HTTP request body. @@ -4001,6 +4012,8 @@ # #Default: # none +acl debian dstdomain .debian.org +always_direct allow debian # TAG: never_direct # Usage: never_direct allow|deny [!]aclname ... @@ -4690,7 +4703,7 @@ # reasons. # #Default: -# pipeline_prefetch off +pipeline_prefetch on # TAG: high_response_time_warning (msec) # If the one-minute median response time exceeds this value,
Voici quelques éléments sur les paramètres introduits ou modifiés.
- acl mynetworks src 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
-
Cette liste de contrôle d'accès introduite avec l'option
acl
désigne les adresses réseau utilisées dans l'infrastructure de travaux pratiques. Si on se réfère aux tableaux de Correspondance entre VLAN et réseau IP de cette infrastructure, on considère que le trafic Web est susceptible de provenir de toutes les classes d'adresses IP privées désignées dans le document standard RFC1918 Address Allocation for Private Internets.L'option
src
indique que ce sont les adresses IP sources qui sont utilisées comme critère d'accès au service proxy. - http_access allow mynetworks
-
La directive
http_access
contrôle l'accès au service via le protocole HTTP. Dans le cas présent, il s'agit d'ouvrir l'accès aux réseaux de l'infrastructure de travaux pratiques. La configuration par défaut, telle que fournie lors de l'installation du paquet, interdit tout accès au service. Cette règle restreint donc l'accès aux seules adresses IP utilisées pour les travaux pratiques. - icp_access allow mynetworks
-
La directive
icp_access
joue le même rôle que la précédente pour le protocole ICP. L'Internet Cache Protocol est utilisé pour le dialogue entre services mandataires. Tout comme dans le cas précédent, on autorise le fonctionnement du protocole à partir des adresses IP de l'infrastructure de travaux pratiques. - http_port 3128 transparent
-
La directive
http_port
désigne le numéro du port sur lequel le service mandataire est en écoute. Dans le cas de squid, le numéro usuel est le3128
. Il n'est pas nécessaire de modifier ce numéro de port. L'optiontransparent
est importante. Elle définit le mode d'utilisation du service : un cache transparent pour le trafic Web utilisateur. - cache_mem 64 MB
-
Le paramètre
cache_mem
désigne la quantité idéale de mémoire allouée pour le stockage de différents types d'objets en «transit» dans le service. Cette quantité peut très bien être dépassée en fonction du taux de requêtes entrantes. Si ce taux est élevé, ce paramètre est utilisé pour calculer le seuil de remplacement des anciens objets dans la mémoire. - maximum_object_size_in_memory 128 KB
-
Définition de la taille maximum d'un objet conservé en mémoire cache. Les objets de taille supérieure ne sont pas conservés en mémoire vive.
- memory_replacement_policy heap LFUDA
-
Définition de la politique utilisée pour remplacer les objets stockés dans le cache mémoire lorsqu'il est nécessaire de trouver de la place libre. L'option retenue ici est Least Frequently Used with Dynamic Aging. Elle correspond à un usage de type pile basé sur le taux d'utilisation d'un objet du cache combiné à son ancienneté.
- cache_replacement_policy heap LFUDA
-
Définition de la politique utilisée pour remplacer les objets stockés dans le cache disque lorsqu'il est nécessaire de trouver de la place libre. L'option retenue ici est identique à la précédente.
- cache_dir aufs /var/spool/squid3 16384 16 256
-
Définition du mode d'utilisation du cache disque du service mandataire. L'option
aufs
correspond au format de stockage des objets sur disque. Elle utilise les fonctions multi-tâches POSIX Threads.Du point de vue occupation disque, on réserve 16Go distribués sur 16 répertoires de premier niveau puis sur 256 répertoires de second niveau.
- url_rewrite_program /usr/bin/squidGuard -c /etc/squid/squidGuard.conf
-
La directive
url_rewrite_program
désigne l'outil utilisé pour le filtrage des URLs : squidGuard. - url_rewrite_children 20
-
Définition du nombre de processus enfants générés pour répondre aux requêtes transmises par le démon
squid
. La valeur donnée doit permettre d'optimiser les temps de réponses en lançant suffisamment d'instances squidGuard tout en utilisant raisonnablement les ressources du système. - request_header_max_size 32 KB
-
Définition de la taille maximum d'un en-tête HTTP lors d'une requête.
Le choix d'une taille de 32Ko doit permettre de laisser passer le trafic «normal» sans entraver les accès. À voir en fonction d'utilisations particulières du protocole HTTP.
- reply_header_max_size 32 KB
-
Définition de la taille maximum d'un en-tête de réponse HTTP. La valeur retenue est identique à celle du paramètre précédent.
- acl debian dstdomain .debian.org, always_direct allow debian
-
Cette liste de contrôle d'accès concerne toutes les requêtes à destination du domaine
.debian.org
et de ses sous-domaines.La directive
always_direct
spécifie les requêtes qui doivent toujours être directement transmises au serveur d'origine. - pipeline_prefetch on
-
Directive utilisée pour doper les performances et se rapprocher d'une navigation Web sans service mandataire.
Bien sûr, tous ces paramètres peuvent être «retravaillés» pour répondre mieux à d'autres contextes d'exploitation. Seule l'expérience acquise en cours d'exploitation peut permettre de répondre précisément à un besoin.
Les commentaires du fichier de configuration /etc/squid/squid.conf
constituent le meilleur
point d'entrée pour aborder la documentation du paquet squid3. Ensuite, le Wiki Squid fournit des exemples
de configurations très intéressants.
Arrivé à cette étape, il ne reste plus qu'à appliquer le patch sur le fichier de configuration du service mandataire.
# cp /etc/squid/squid.conf /etc/squid/squid.conf.dpkg-dist # patch -l -p0 /etc/squid/squid.conf squid.conf.patch patching file /etc/squid/squid.conf # ll /etc/squid/ total 336K -rw-r--r-- 1 root root 421 jui 21 12:31 msntauth.conf -rw-r--r-- 1 root root 158K nov 8 19:40 squid.conf -rw-r--r-- 1 root root 158K nov 8 19:40 squid.conf.dpkg-dist -rw-r--r-- 1 root root 1,3K jui 24 23:15 squidGuard.conf
À ce stade de la configuration, le service n'est pas encore opérationnel. Il faut maintenant configurer l'application de filtrage des URLs : squidGuard.