Table des matières

, , , , , , , , , , ,

Redirection transparente vers les miroirs locaux

Dans un article précédent nous avons vu comment créer un miroir debian local.

Nous allons maintenant aller plus loin et effectuer une redirection transparente vers ce miroir. Note que dans la suite de cet article quand on utilisera le terme “miroir” il pourra s'agir soit d'un miroir “complet” soit bien d'un miroir partiel (apt-cacher-ng, apt-cacher…), les deux étant fonctionnellement (presque : voir note plus bas :p ) identiques pour ce qui nous intéresse.

L'avantage est donc de n'avoir aucun travail à effectuer sur les postes : ils utilisent toujours les dépots classiques, comme par exemple “ftp.fr.debian.org” mais sont redirigés silencieusement vers le dépôt local, d'où des gains énormes en bande passante et en simplicité.

Présentation

Nous allons nous baser sur :

Installation

Cette etape est simple : il suffit d'installer jesred , le module qui nous servira a réécrire les URL au niveau du proxy squid.

apt-get install jesred

Configuration

configuration de squid

Pour activer la réécriture d'URL il faut ajouter des directives dans le fichier de conf de squid ( /etc/squid/squid.conf) :

cat << EOF >> /etc/squid3/squid.conf
# redirection transparente pour apt-cacher debian et ubuntu
redirect_program /usr/lib/squid/jesred
EOF

configuration de jesred

il est possible d'exclure des machines/subnets en utilisant la syntaxe !192.168.0.42/32 par exemple
C'est par exemple une très bonne idée d'exclure le serveur hébergeant le miroir local pour qu'il puisse se mettre à jour sur le dépot externe

Regles de réécriture

On peut maintenant écrire les règles de réécritures désirées (sous forme de regexp), cela se passe dans le fichier /etc/jesred/jesred.rules.

L'utilisateur averti aura remarqué une légère différence de conmportement entre l'utilisation d'un miroir local complet ou d'un apt-cacher-ng par exemple : notre miroir debian est composé de :
  • http://debian-mirror.mondomaine.com/debian/ pour la copie du miroir classique
  • http://debian-mirror.mondomaine.com/debian-backports/ pour la copie du miroir de backports
  • http://debian-mirror.mondomaine.com/debian-security/ pour la copie du miroir debian-security

en conséquence en ce qui concerne la redirection pour un fichier disons http://ftp.fr.debian.org/debian/dists/wheezy/Release il faut que la redirection s'effectue sur :

  • dans le cas d'un miroir local : http://debian-mirror.mondomaine.com/debian/dists/wheezy/Release
  • dans le cas d'un apt-cacher-ng : http://debian-mirror.mondomaine.com:3142/ftp.fr.debian.org/debian/dists/wheezy/Release

d'ou les différences de parenthésage dans les règles pour faire le match sur l'url complete/partielle et le port : les miroirs partiels ont besoin d'une url complète

Vérification du fonctionnement

Pour prendre en compte ces modifications il faut bien sur faire recharger a squid sa configuration :

/etc/init.d/squid3 reload

Le bon fonctionnement peut etre vérifié en regardant dans le fichier de log /var/log/squid3/jesred-rewrite.log lorsque vous tentez d'installer un paquet, comme par exemple :

1282816088.239 192.168.0.65/- http://ftp.fr.debian.org/debian/pool/main/j/jesred/jesred_1.2pl1-16_amd64.deb http://debian-mirror.mondomaine.com/debian/pool/main/j/jesred/jesred_1.2pl1-16_amd64.deb 9
1282816088.254 192.168.0.65/- http://security.debian.org/pool/updates/main/s/squid/squid-common_2.7.STABLE3-4.1lenny1_all.deb http://debian-mirror.mondomaine.com/debian-security/pool/updates/main/s/squid/squid-common_2.7.STABLE3-4.1lenny1_all.deb 11

Aller un peu plus loin : IPv6

En installant la version “1.2pl1-19” de jesred disponible sur la debian testing/unstable à l'heure ou j'écris ces lignes : https://packages.debian.org/search?keywords=jesred il est maintenant possible de réécrire les URLs pour des clients utilisant de l'IPv6 (pas en proxy transparent cependant ;-) ) : voici à quoi ressemble un fichier /etc/jesred.acl comportant des IPv4 et des IPv6 :

192.168.0.0/24
192.168.1.0/24
192.168.2.0/24

# merci le backport de la version wheezy 1.2pl1-19 pour le support d'ipv6 =)
2a01:e32:833f:e2a:2::/112
2a01:e32:833f:e2a:3::/112
2a01:e32:833f:e2a:4::/112