Cette page décri'''ra''' notre utilisation de Squid à l'AUF. <> = Trucs et astuces (en attendant une vraie doc...) = == Configuration == * laisser la valeur `cache_mem` à `8 MB`, l'augmenter n'augmentera pas les performances, [[http://varnish.projects.linpro.no/wiki/ArchitectNotes|au contraire]] * ajouter ceci pour supporter les accès [[Subversion]] via HTTP : `extension_methods REPORT MERGE MKACTIVITY CHECKOUT PROPFIND` * corriger la taille maximale pour les objets mis dans le cache (4 Mo par défaut) : `maximum_object_size 10 MB` ''(valeur arbitraire)'' == 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 : * rajouter le paramètre `transparent` à l'option `http_port` : {{{ http_port 192.168.18.1:3128 transparent }}} * ajouter une règle dans le pare-feu qui pourrait ressembler à celle-ci : {{{ /sbin/iptables -t nat -A PREROUTING -i $LAN_IF -s $LAN_IP -p tcp -m state --state NEW --dport 80 -j REDIRECT --to-ports 3128 }}} == 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...) : {{{#!shell #!/bin/bash # /usr/local/sbin/squid-redirector # Auteur : Progfou # 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 client_ip "/" fqdn user method urlgroup # # 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 : * installer les paquets nécessaires : {{{ aptitude install calamaris libgd-graph-perl }}} * si votre version de `calamaris` est antérieure à `2.99.4.0-10` (Lenny -> `2.99.4.0-8`), appliquer [[http://bugs.debian.org/cgi-bin/bugreport.cgi?msg=28;filename=calamaris-graph.patch;att=1;bug=501396|ce correctif]] sur `/usr/bin/calamaris` * ajouter l'option `graph` dans les scripts cron de lancement de `calamaris` : {{{ ... HTMLOPTIONS="-F html,graph" ... }}} . (!) avec Debian < 7, ça se fait dans `/etc/cron.daily/calamaris` . (!) avec Debian ≥ 7, ça se fait dans `/usr/lib/calamaris/calamaris-cron-script` Sources : `/usr/share/doc/calamaris/README.Debian`, [[http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=501396#28|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. ... . ''Avec le proxy transparent + redirection vers le miroir il ne s'agit pas que de nos postes mais de n'importe quel machine se connectant sur notre réseau : nomade, install party, ... Cela fonctionne sans aucune modification dans la configuration par défaut de Ubuntu et permet donc des installations transparentes sans aucun souci. De plus, on peut imaginer intercepter n'importe quel chargement et pas seulement les .deb. -- ProgFou''