Squid

Cette page décrira notre utilisation de Squid à l'AUF.

Trucs et astuces (en attendant une vraie doc...)

Configuration

Proxy transparent

Un proxy transparent intercepte et redirige toutes les requêtes HTTP (typiquement à destination du port 80) sans avoir à changer la configuration des navigateurs sur les postes clients. À noter que cela ne peut pas fonctionner pour des requêtes HTTPS : le proxy au milieu serait considéré comme une tentative de détournement de la connexion sécurisée.

Pour l'activer, il faut :

Interception et redirection de requêtes vers un miroir local

Exemple d'options pour intercepter et rediriger les téléchargements de paquets Ubuntu vers son miroir local :

acl url_rewrite dstdomain .ubuntu.com .medibuntu.org .debian.org www.backports.org apt.hanoilug.org apt.auf.org
url_rewrite_access allow url_rewrite
url_rewrite_program /usr/local/sbin/squid-redirector

Exemple de script de redirection (mauvais mais fonctionnel, fait à la vas-vite pour une urgence...) :

#!/bin/bash
# /usr/local/sbin/squid-redirector
# Auteur : Progfou <jean-christophe.andre@auf.org>
# Licence : Domaine public
# Création : 2008-01-14
# Dépendances : libwww-perl (pour la commande HEAD)
#
# TODO: À refaire en Perl ou Python, un jour...
#
# URL <SP> client_ip "/" fqdn <SP> user <SP> method <SP> urlgroup <NL>
#
# ATTENTION : le miroir est incomplet => ne pas tout rediriger bêtement !!
#
MIRROR="cnf.vn.refer.org/mirror"
while read URL CLIENT USER METHOD GROUP
do
  URL2="${URL/:\/\/apt.auf.org\//://${MIRROR}/auf/}"
  [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/apt.hanoilug.org\/ubuntu\//://${MIRROR}/ubuntu/hanoilug/}"
  [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/security.ubuntu.com\/ubuntu\//://${MIRROR}/ubuntu/security/}"
  [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/archive.canonical.com\/ubuntu\//://${MIRROR}/ubuntu/canonical/}"
  [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/*archive.ubuntu.com\/ubuntu\//://${MIRROR}/ubuntu/archive/}"
  [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/*packages.medibuntu.org\//://${MIRROR}/ubuntu/medibuntu/}"
  [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/security.debian.org\/debian-security\//://${MIRROR}/debian/security/}"
  [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/security.debian.org\//://${MIRROR}/debian/security/}"
  [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/volatile.debian.org\/debian-volatile\//://${MIRROR}/debian/volatile/}"
  [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/ftp*.debian.org\/debian\//://${MIRROR}/debian/archive/}"
  [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/www.backports.org\/debian\//://${MIRROR}/debian/backports/}"
  if [ "$URL2" != "$URL" ] && HEAD -t5 "$URL2" > /dev/null
  then
    echo "!mirror!$URL2"
  else
    echo "$URL"
  fi
done
exit 0

Le préfixe !mirror! permet d'associer l'URL renvoyée à un urlgroup dans Squid :

acl mirror urlgroup mirror

C'est particulièrement utile quand on veut pouvoir séparer les URL redirigées des autres, par exemple pour ne pas leur faire subir les delay_pool :

delay_access 1 deny mirror

Statistiques avec calamaris

On peut avoir de jolis graphiques dans les statistiques générées par calamaris, aux conditions suivantes :

Sources : /usr/share/doc/calamaris/README.Debian, le bogue Debian 501396 et un courriel de FranckKouyami sur Tech@ signalant tout cela.

Discussions

FranckKouyami : Il me parait plus simple de configurer directement nos postes pour qu'ils aillent sur nos miroirs. Mais l'avantage de cette méthode est qu'à l'installation, il n'est plus nécessaire de modifier les sources.list. Quoi que nous allons plus vers une installation via le réseau...:-) . Dans cette configuration, TOUT LE MONDE devrait avoir un miroir fonctionnel permettant de faire une install réseau. ...

Squid (dernière édition le 2014-02-19 22:57:50 par JeanChristopheAndré)