Un petit mémo sur Squid pour ouvrir cette nouvelle année pour laquelle je souhaite mes Meilleurs Voeux à chacun de vous, fidèles lecteurs ou lecteurs d’un jour, vous êtes de plus en plus nombreux à suivre ce blog et je vous en remercie, continuons sur cette lancée pour 2011.

Squid peut être configuré en tant que « Proxy » (comportement par défaut), il permet dans ce cas à ses utilisateurs d’accéder à tout ou partie d’internet ou de divers Intranet. Il peut également servir de « Reverse-Proxy » , il permet alors de rendre disponible certaines ressources internes (provenant d’un ou plusieurs serveurs) tout en proposant une mise en cache, ce qui va alléger la charge des serveurs situés derrière lui.

Schéma du principe de fonctionnement du Reverse-Proxy:

Par défaut, une seule instance de squid peut être lancée à la fois. Si l’on souhaite mettre en oeuvre un Proxy et un Reverse-Proxy sur un même serveur, il va falloir procéder à quelques modification dans la configuration de squid.

Nous n’allons pas nous occuper ici de la configuration de Squid en mode Proxy puisque la configuration par défaut permet déjà ce fonctionnement. Nous allons donc permettre le lancement de multiples instances et configurer le Reverse-Proxy.

Nous allons donc avoir 2 fichiers de configurations différents:

/etc/squid/squid.conf
/etc/squid/squid-reverse.conf

Voyons un exemple de ce que peut donner la configuration du fichier squid-reverse.conf:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# nom du reverse-proxy et port d'écoute
visible_hostname test
http_port 80 defaultsite=192.168.0.5
#
# le site proposé par défaut par le reverse-proxy se trouve sur 192.168.0.5:
cache_peer 192.168.0.5 parent 80 0 no-query no-digest originserver name=test
acl webserver dst 192.168.0.5
http_access allow webserver
#
# autoriser l'utilisation du reverse-proxy sur le port 80 pour tout le monde:
acl all src 0.0.0.0/0.0.0.0
http_access allow all
acl web port 80
http_access allow web
#
# configuration du cache:
cache_dir ufs /var/spool/squid3 2048 16 256
coredump_dir /var/spool/squid3
cache_effective_group proxy
cache_mem 50 MB
minimum_object_size 0 KB
maximum_object_size 64096 KB
#
# Emplacement du PID et des fichiers de logs:
pid_filename /var/run/squid-reverse.pid
access_log /var/log/squid/access-reverse.log squid
cache_log /var/log/squid/cache-reverse.log
#
forwarded_for on

Nous devrons ensuite générer le cache correspondant à ces 2 configurations:

/usr/sbin/squid -z

/usr/sbin/squid -z -f /etc/squid/squid-reverse.conf

Puis modifier le script de lancement de squid, ou en ajouter un pour les gérer indépendamment, nous allons ajouter un fichier:

/etc/init.d/squid-reverse

Pour faire simple et tester, il suffit d’y placer la commande de lancement suivante:

/usr/sbin/squid -f /etc/squid/squid-reverse.conf

Libre à vous ensuite de créer un véritable script de lancement en vous basant sur le script de lancement de Squid ou sur le template disponible (« /etc/init.d/skeleton« ).

Lancer ces scripts automatiquement au démarrage pour démarrer le Proxy et le Reverse-Proxy:

update-rc.d -f squid defaults

update-rc.d -f squid-reverse defaults

Nos 2 services ne devant pas être utilisés par les mêmes personnes, le proxy sera utilisé depuis le réseau interne tandis que le reverse-proxy sera utilisé par les internautes souhaitant accéder à notre site, nous penserons également à configurer un parefeu à l’aide d’iptables afin de sécuriser ce serveur proxy, un exemple suivra dans le prochain article.

Sources et ressources relatives: