Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
sysadmin:mirror_redirect_squid [2010/08/26 12:20]
james ajout rules
sysadmin:mirror_redirect_squid [2014/10/28 18:33] (Version actuelle)
james ajout IPv6
Ligne 1: Ligne 1:
 +{{tag>​squid squid3 proxy jesred URL réécriture miroir debian ubuntu apt-cacher apt-cacher-ng bande-passante}}
 ====== Redirection transparente vers les miroirs locaux ====== ====== Redirection transparente vers les miroirs locaux ======
  
 Dans un article précédent nous avons vu comment [[sysadmin:​debian_mirror|créer un miroir debian local]]. Dans un article précédent nous avons vu comment [[sysadmin:​debian_mirror|créer un miroir debian local]].
  
-Nous allons maintenant aller plus loin et effectuer une redirection transparente vers ce miroir.+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é. 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é.
Ligne 13: Ligne 14:
  
 Nous allons nous baser sur : Nous allons nous baser sur :
-  * un proxy web (squid) configuré en mode transparent (peut etre un jour un article la dessus) +  * un proxy web ([[http://​www.squid-cache.org/​|squid]]) configuré en mode transparent (peut etre un jour un article la dessus) 
-  * une réécriture d'URL au sein de ce proxy +  * une réécriture d'URL au sein de ce proxy via jesred 
-  * tout ce petit monde sera installé comme à l'​accoutumée sur une Debian Stable (lenny a l'​heure actuelle)+  * tout ce petit monde sera installé comme à l'​accoutumée sur une Debian Stable (<del>lenny a l'​heure actuelle</​del>​wheezy pour la mise a jour de cet article)
  
 ===== Installation ===== ===== 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.+Cette etape est simple : il suffit d'​installer //​[[http://​www.linofee.org/​~jel/​webtools/jesred/|jesred]]// , le module qui nous servira a réécrire les URL au niveau du proxy squid.
 <​code>​apt-get install jesred</​code>​ <​code>​apt-get install jesred</​code>​
  
Ligne 25: Ligne 26:
 ==== configuration de squid ==== ==== 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) :<​code>​ Pour activer la réécriture d'URL il faut ajouter des directives dans le fichier de conf de squid ( /​etc/​squid/​squid.conf) :<​code>​
-cat << EOF >> /etc/squid/squid.conf+cat << EOF >> /etc/squid3/squid.conf
 # redirection transparente pour apt-cacher debian et ubuntu # redirection transparente pour apt-cacher debian et ubuntu
 redirect_program /​usr/​lib/​squid/​jesred redirect_program /​usr/​lib/​squid/​jesred
Ligne 32: Ligne 33:
  
 ==== configuration de jesred ==== ==== configuration de jesred ====
- * On active les logs de reecriture d'URL pour débugguer plus facilement :<​code>​sed -i -e "s,# rewrite_log =,​rewrite_log =," /​etc/​jesred.conf</​code>​ + 
- * On ajoute son sous réseau IP dans les ACL de réécriture (adapter a votre réseau) : <​code>​echo "​192.168.0.0/​24"​ >> /​etc/​jesred.acl</​code>​+  * On active les logs de reecriture d'URL pour débugguer plus facilement :<​code>​ 
 +sed -i -e "s,# rewrite_log =,​rewrite_log =," /​etc/​jesred.conf</​code>​ 
 +  * Si vous êtes sous debian wheezy avec squid3 au lieu de squid, adapter les chemins de log :<​code>​ 
 +sed -i -e "​s,/​var/​log/​squid/,/​var/​log/​squid3/,"​ /​etc/​jesred.conf</​code>​ 
 +  ​* On ajoute son sous réseau IP dans les ACL de réécriture (adapter a votre réseau ​: format X.Y.Z.T/​masque classique) : <​code>​echo "​192.168.0.0/​24"​ >> /​etc/​jesred.acl</​code>​
 <​note>​il est possible d'​exclure des machines/​subnets en utilisant la syntaxe !192.168.0.42/​32 par exemple</​note>​ <​note>​il est possible d'​exclure des machines/​subnets en utilisant la syntaxe !192.168.0.42/​32 par exemple</​note>​
 <​note>​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</​note>​ <​note>​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</​note>​
Ligne 39: Ligne 44:
 ==== Regles de réécriture ==== ==== 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. 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.
- * Par exemple si comme moi vous avez un miroir local debian partiel :<​code>#​ redirection transparente sur le miroir local+  ​* Par exemple si comme moi vous avez un miroir local debian partiel :<​code>#​ redirection transparente sur le miroir local
 # pour ne PAS rediriger les sources en local (nos miroirs n'ont pas les sources) # pour ne PAS rediriger les sources en local (nos miroirs n'ont pas les sources)
 regex ^http://​ftp\.[a-z][a-z].debian.org/​debian/​(dists|pool)/​.*/​source/​(Release|Sources|Sources\.(bz2|gz|diff/​.*))$ regex ^http://​ftp\.[a-z][a-z].debian.org/​debian/​(dists|pool)/​.*/​source/​(Release|Sources|Sources\.(bz2|gz|diff/​.*))$
 regex ^http://​ftp\.[a-z][a-z].debian.org/​debian/​dists/​.*/​installer-.*/​.*$ regex ^http://​ftp\.[a-z][a-z].debian.org/​debian/​dists/​.*/​installer-.*/​.*$
 # le reste est en local # le reste est en local
-regex ^http://​ftp\.[a-z][a-z].debian.org/​debian/​((dists|pool)/​.*(udeb|deb|bz2|Packages|Packages.gz|Release|Release.gpg))$ http://​debian-mirror.mondomaine.com/​debian/​\1</​code>​ +regex ^http://​ftp\.[a-z][a-z].debian.org/​debian/​((dists|pool)/​.*(udeb|deb|bz2|Packages|Packages.gz|Release|Release.gpg))$ http://​debian-mirror.mondomaine.com/​debian/​\1 
-Si vous avez de l'​espace disque et que vous avez un miroir complet (incluant les sources), il suffit de retirer les deux premières regexp qui empêchent la réécriture des adresses des paquets source : tout sera alors redirigé vers le miroir local. +</​code>​Si vous avez de l'​espace disque et que vous avez un miroir complet (incluant les sources), il suffit de retirer les deux premières regexp qui empêchent la réécriture des adresses des paquets source : tout sera alors redirigé vers le miroir local. 
- +  * Le meme principe peu bien sûr etre utilisé pour ldes dépots de securité, archive, backports, ... comme le montrent les exemples suivants : <​code>​
-* Le meme principe peu bien sûr etre utilisé pour ldes dépots de securité, archive, backports, ... comme le montrent les exemples suivants : <​code>​+
 # on ne redirige pas les sources en local # on ne redirige pas les sources en local
 regex ^http://​security.debian.org/​(dists|pool)/​.*/​source/​(Release|Sources|Sources\.(bz2|gz|diff/​.*))$ regex ^http://​security.debian.org/​(dists|pool)/​.*/​source/​(Release|Sources|Sources\.(bz2|gz|diff/​.*))$
 # mais le reste si # mais le reste si
-regex ^http://​security.debian.org/​((dists|pool)/​.*(deb|bz2|gz|Packages|Packages.gz|Release|Release.gpg|))$ http://​debian-mirror.mondomaine.com/​debian-security/​\1+regex ^http://(security.debian.org/​((dists|pool)/​.*(deb|bz2|gz|Packages|Packages.gz|Release|Release.gpg|)))$ http://​debian-mirror.mondomaine.com/​debian-security/​\1
 # idem pour les backports # idem pour les backports
 regex ^http://​www.backports.org/​debian/​(dists|pool)/​.*/​source/​(Release|Sources|Sources\.(bz2|gz|diff/​.*))$ regex ^http://​www.backports.org/​debian/​(dists|pool)/​.*/​source/​(Release|Sources|Sources\.(bz2|gz|diff/​.*))$
-regex ^http://​www.backports.org/​debian/​((dists|pool)/​.*(deb|bz2|Contents-.*gz|Packages|Packages.gz|Release|Release.gpg))$ http://​debian-mirror.mondomaine.com/​debian-backports/​\1</​code>​ +regex ^http://​www.backports.org/​debian/​((dists|pool)/​.*(deb|bz2|Contents-.*gz|Packages|Packages.gz|Release|Release.gpg))$ http://​debian-mirror.mondomaine.com/​debian-backports/​\1 
-* Le même principe fonctionnerait bien sûr sur un dépot ubuntu en adaptant les URLs, cependant je n'​utilise pas un dépot ubuntu complet (moins de postes, et donc moins de besoinse en terme d'​installations/​MAJs,​ ...) mais un dépot "​partiel"​ utilisant apt-cacher , voici les lignes utilisées pour rediriger toute demande vers l'​apt-cacher local (dont l'IP doit bien sur aussi être exclue des ACL de réécriture) pour les principaux dépots utilisés :<​code>​+</​code>​ 
 +  * Le même principe fonctionnerait bien sûr sur un dépot ubuntu en adaptant les URLs, cependant je n'​utilise pas un dépot ubuntu complet (moins de postes, et donc moins de besoinse en terme d'​installations/​MAJs,​ ...) mais un dépot "​partiel"​ utilisant apt-cacher , voici les lignes utilisées pour rediriger toute demande vers l'​apt-cacher local (dont l'IP doit bien sur aussi être exclue des ACL de réécriture) pour les principaux dépots utilisés :<​code>​
 # depots Ubuntu - redirection vers l'​apt-cacher ubuntu # depots Ubuntu - redirection vers l'​apt-cacher ubuntu
 regex ^http://​([a-z][a-z]\.archive.ubuntu.com/​ubuntu/​(dists|pool)/​.*(deb|bz2|gz|Release|Release.gpg))$ http://​ubuntu-mirror.mondomaine.com:​3142/​\1 regex ^http://​([a-z][a-z]\.archive.ubuntu.com/​ubuntu/​(dists|pool)/​.*(deb|bz2|gz|Release|Release.gpg))$ http://​ubuntu-mirror.mondomaine.com:​3142/​\1
Ligne 62: Ligne 67:
 regex ^http://​(ppa.launchpad.net/​.*/​(dists|pool)/​.*(deb|bz2|gz|Release|Release.gpg))$ http://​ubuntu-mirror.mondomaine.com:​3142/​\1 regex ^http://​(ppa.launchpad.net/​.*/​(dists|pool)/​.*(deb|bz2|gz|Release|Release.gpg))$ http://​ubuntu-mirror.mondomaine.com:​3142/​\1
 regex ^http://​(old-releases.ubuntu.com/​ubuntu/​(dists|pool)/​.*(deb|bz2|gz|Release|Release.gpg))$ http://​ubuntu-mirror.mondomaine.com:​3142/​\1 regex ^http://​(old-releases.ubuntu.com/​ubuntu/​(dists|pool)/​.*(deb|bz2|gz|Release|Release.gpg))$ http://​ubuntu-mirror.mondomaine.com:​3142/​\1
-regex ^http://​(archive.canonical.com/​(dists|pool)/​.*(deb|bz2|gz|Release|Release.gpg))$ http://​ubuntu-mirror.mondomaine.com:​3142/​\1</​code>​c'​est le logiciel apt-cacher qui se charge de distribuer le paquet directement s'il l'a en cache ou qui le récupère avant de le distribuer s'il ne l'a pas en cache.+regex ^http://​(archive.canonical.com/​(dists|pool)/​.*(deb|bz2|gz|Release|Release.gpg))$ http://​ubuntu-mirror.mondomaine.com:​3142/​\1</​code>​c'​est le logiciel apt-cacher qui se charge de distribuer le paquet directement s'il l'a en cache ou qui le récupère avant de le distribuer s'il ne l'a pas en cache. Un jour peut être, un article sur l'​installation de ce logiciel apt-cacher ;-) .
  
-Un jour peut être, un article sur l'​installation de ce logiciel apt-cacher ;-) . +  ​* contrib : il semblerait que pour pouvoir continuer ​à utiliser l'​upgrade-manager ​Ubuntu ​il faille les lignes suivantes dans le fichier jesred.rules :<​code>#​ I have also added two aborts in order to use upgrade-manager:​
-* contrib : il semblerait que pour pouvoir continuer ​utiliser l'​upgrade-manager ​ubuntu ​il faille les lignes suivantes dans le fichier jesred.rules :<​code>#​ I have also added two aborts in order to use upgrade-manager:​+
 abort .gpg abort .gpg
 abort ReleaseAnnouncement abort ReleaseAnnouncement
Ligne 71: Ligne 75:
 </​code>​ </​code>​
  
-==== Vérification du fonctionnement ==== +<​note>​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 : 
-Pour prendre en compte ces modifications il faut bien sur faire recharger a squid sa configuration :<​code>/​etc/​init.d/​squid reload</​code>​+notre miroir debian est composé de :  
 +  * <​nowiki>​http://​debian-mirror.mondomaine.com/​debian/</​nowiki>​ pour la copie du miroir classique 
 +  * <​nowiki>​http://​debian-mirror.mondomaine.com/​debian-backports/</​nowiki>​ pour la copie du miroir de backports 
 +  * <​nowiki>​http://​debian-mirror.mondomaine.com/​debian-security/</​nowiki>​ pour la copie du miroir debian-security 
 +  * ... 
 +en conséquence en ce qui concerne la redirection pour un fichier disons <​nowiki>​http://​ftp.fr.debian.org/​debian/​dists/​wheezy/​Release</​nowiki>​ il faut que la redirection s'​effectue sur : 
 +  * dans le cas d'un miroir local : <​nowiki>​http://​debian-mirror.mondomaine.com/</​nowiki>​**debian**<​nowiki>/​dists/​wheezy/​Release</​nowiki>​ 
 +  * dans le cas d'un apt-cacher-ng : <​nowiki>​http://​debian-mirror.mondomaine.com:​3142/</​nowiki>​**<​nowiki>​ftp.fr.debian.org/​debian</​nowiki>​**/​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 
 +</​note>​ 
 +===== Vérification du fonctionnement ​===== 
 +Pour prendre en compte ces modifications il faut bien sur faire recharger a squid sa configuration :<​code>/​etc/​init.d/​squid3 ​reload</​code>​
  
-Le bon fonctionnement peut etre vérifié en regardant dans le fichier de log /var/log/squid/​jesred-rewrite.log lorsque vous tentez d'​installer un paquet, comme par exemple :+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 :
 <​code>​ <​code>​
 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.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</​code>​ 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</​code>​
  
 +===== Aller un peu plus loin : IPv6 =====
 +{{tag>​squid squid3 proxy jesred URL réécriture miroir debian ubuntu apt-cacher apt-cacher-ng bande-passante 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 : <​code>​
 +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 
-FIXME continuer ;-)+2a01:​e32:​833f:​e2a:​4::/​112 
 +</​code>​
sysadmin/mirror_redirect_squid.1282818035.txt.gz · Dernière modification: 2010/08/26 12:20 par james
Driven by DokuWiki Recent changes RSS feed Valid CSS Valid XHTML 1.0