Modifications entre les versions 12 et 19 (s'étendant sur 7 versions)
Version 12 à la date du 2008-06-02 12:31:44
Taille: 2742
Commentaire: contexte légal
Version 19 à la date du 2010-03-15 09:13:55
Taille: 4671
Éditeur: WillyManga
Commentaire: proxy transparent + table des matières
Texte supprimé. Texte ajouté.
Ligne 2: Ligne 2:
<<TableOfContents>>
Ligne 10: Ligne 11:

== Proxy transparent ==

Un proxy transparent permet de rediriger toutes les requêtes vers le port 80 (''pas possible avec 443 '') vers un proxy sans avoir à changer la configuration dans les navigateurs des postes du réseau.
Pour l'activer, il faut :
 * rajouter le paramètre `transparent` à la directive `http_port`. Exemple:

{{{
http_port 192.168.18.1:3128 transparent
}}}

 * Créer une règle dans le parefeu qui pourrait ressembler à celle-ci :
{{{
/sbin/iptables -t nat -A PREROUTING -p tcp -s $LAN_IP -m state --state NEW --dport 80 -j REDIRECT --to-ports 3128
}}}
Ligne 36: Ligne 52:
  URL2="${URL/:\/\/apt.auf.org\//://cnf.vn.refer.org/mirror/auf/}"   URL2="${URL/:\/\/apt.auf.org\//://${MIRROR}/auf/}"
Ligne 39: Ligne 55:
  [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/archive.canonical.com\/ubuntu\//://${MIRROR}/ubuntu/canonical/}"
Ligne 40: Ligne 57:
  [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/*packages.medibuntu.org\/ubuntu\//://${MIRROR}/ubuntu/medibuntu/}"   [ "$URL2" = "$URL" ] && URL2="${URL/:\/\/*packages.medibuntu.org\//://${MIRROR}/ubuntu/medibuntu/}"
Ligne 46: Ligne 63:
  if [ "$URL2" != "$URL" ] && HEAD "$URL2" > /dev/null   if [ "$URL2" != "$URL" ] && HEAD -t5 "$URL2" > /dev/null
Ligne 48: Ligne 65:
    echo "$URL2"     echo "!mirror!$URL2"
Ligne 55: Ligne 72:

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
}}}

= 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''

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

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

  • laisser la valeur cache_mem à 8 MB, l'augmenter n'augmentera pas les performances, 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 permet de rediriger toutes les requêtes vers le port 80 (pas possible avec 443 ) vers un proxy sans avoir à changer la configuration dans les navigateurs des postes du réseau. Pour l'activer, il faut :

  • rajouter le paramètre transparent à la directive http_port. Exemple:

http_port 192.168.18.1:3128 transparent
  • Créer une règle dans le parefeu qui pourrait ressembler à celle-ci :

/sbin/iptables -t nat -A PREROUTING -p tcp -s $LAN_IP -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...) :

#!/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

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

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