Next Previous Contents

5. Pourvoir surfer : squid

5.1 Présentation

squid est un proxy, c'est à dire qu'il permet de donner l'accès au web à des postes clients, il garde en mémoire (dans un cache ou espace disque) les pages les plus fréquemments et dernièrement visitées, ce qui permet des "surfs" plus rapides.

5.2 Installation

Installer squid sur votre système, il se trouve sur le CD-ROM d'install d'une RedHat et de ses dérivés. Sur une Mandrake 6.1, vous installerez, par exemple, squid-2.2.STABLE4-2mdk.i586.rpm.

rpm -ivh squid-2.2.STABLE4-2mdk.i586.rpm  
 

5.3 Configuration

Le fichier de configuration se trouve sous /etc/squid et a pour nom squid.conf, le fichier est très long, rassurez vous il n'y a que deux, trois trucs à rajouter ou à modifier pour que ça fonctionne.

Vous pouvez modifier la taille du répertoire de cache de squid en jouant sur le premier paramètre numérique de la variable cache_dir, ici il est limité à 40Mo.

cache_dir /var/spool/squid 40 16 256  
 

Par défaut les erreurs de squid sont mailés à l'utilisateur webmaster qu'il existe ou pas sur votre système, pour mettre un autre utilisateur, modifier la variable cache_mgr, pour ma part j'ai choisi l'utilisateur root comme destinataire.

cache_mgr root  
 

Maintenant on va définir les autorisations d'accès (ACL Access ControLs), on va définir le réseau qui a le droit d'accéder à votre système, ici c'est le réseau privé d'adresse 192.168.13.0

acl manager proto cache_object  
acl localhost src 127.0.0.1/255.255.255.255  
acl all src 0.0.0.0/0.0.0.0  
acl allowed_hosts src 192.168.13.0/255.255.255.0   
 

On définit maintenant les autorisations d'accés HTTP, on autorise uniquement les allowed_hosts qu'on a défini précédemment.

http_access deny manager all  
http_access allow allowed_hosts  
http_access deny all   
 

La dernière étape maintenant est d'éditer le fichier /etc/hosts.allow et de rajouter la ligne suivante:

ALL: 192.168.13.0/255.255.255.0  
 

Rebootez votre système, normalement dans les messages de boot, vous devriez voir squid se lancer.

Si squid n'est pas lancé automatiquement sur votre système, installer le fichier squid que vous mettrez sous /etc/rc.d/init.d (proprio root, groupe root, droits 755). Voici son contenu:

#!/bin/bash  
# squid         This shell script takes care of starting and stopping  
#               Squid Internet Object Cache  
#  
# chkconfig: - 90 25  
# description: Squid - Internet Object Cache. Internet object caching is   \      
#       a way to store requested Internet objects (i.e., data available   \      
#       via the HTTP, FTP, and gopher protocols) on a system closer to the   \      
#       requesting site than to the source. Web browsers can then use the   \      
#       local Squid cache as a proxy HTTP server, reducing access time as   \      
#       well as bandwidth consumption.  
# pidfile: /var/run/squid.pid  
# config: /etc/squid.conf  
  
PATH=/usr/bin:/sbin:/bin:/usr/sbin  
export PATH  
  
# Source function library.  
. /etc/rc.d/init.d/functions  
  
# Source networking configuration.  
. /etc/sysconfig/network  
  
# Check that networking is up.  
[ ${NETWORKING} = "no" ] && exit 0  
  
# check if the squid conf file is present  
[ -f /etc/squid/squid.conf ] || exit 0  
  
# determine the name of the squid binary  
[ -f /usr/sbin/squid ] && SQUID=squid  
[ -z "$SQUID" ] && exit 0  
  
# determine which one is the cache_swap directory  
CACHE_SWAP=`sed -e 's/#.*//g' /etc/squid/squid.conf |   \      
        grep cache_dir | sed -e 's/cache_dir//' |   \      
        cut -d ' ' -f 2`  
[ -z "$CACHE_SWAP" ] && CACHE_SWAP=/var/spool/squid  
  
# default squid options  
# -D disables initial dns checks. If you most likely will not to have an  
#    internet connection when you start squid, uncomment this  
SQUID_OPTS="-D"  
  
case "$1" in  
start)  
    echo -n "Starting $SQUID: "  
    for adir in $CACHE_SWAP; do  
        if [ ! -d $adir/00 ]; then  
             echo -n "init_cache_dir $adir... "  
             $SQUID -z -F 2>/dev/null  
        fi  
    done  
    $SQUID $SQUID_OPTS &  
    echo $SQUID  
    touch /var/lock/subsys/$SQUID  
    ;;  
  
stop)  
    echo -n "Stopping $SQUID: "  
    $SQUID -k shutdown &  
    rm -f /var/lock/subsys/$SQUID  
    while : ; do  
        [ -f /var/run/squid.pid ] || break  
        sleep 2 && echo -n "."  
    done  
    echo "done"  
    ;;  
  
restart)  
    $SQUID $SQUID_OPTS -k reconfigure  
    exit $?  
    ;;  
  
status)  
    status $SQUID  
    $SQUID -k check  
    exit $?  
    ;;  
  
probe)  
    exit 0;  
    ;;  
  
*)  
    echo "Usage: $0 {start|stop|status|restart}"  
    exit 1  
esac  
  
exit 0  
 

puis vous créerez les liens suivants:

ln    -s    /etc/rc.d/init.d/squid    /etc/rc.d/rc2.d/K25squid  
ln    -s    /etc/rc.d/init.d/squid    /etc/rc.d/rc3.d/S90squid  
ln    -s    /etc/rc.d/init.d/squid    /etc/rc.d/rc4.d/K25squid  
ln    -s    /etc/rc.d/init.d/squid    /etc/rc.d/rc5.d/S90squid   
 

Pour lancer squid, il suffit maintenant de rebooter ou de lancer /etc/rc.d/init.d/squid start

Si vous avez modifié /etc/squid/squid.conf, vous pouvez faire prendre en compte les modifs, en tapant:

/etc/rc.d/init.d/squid stop  
/etc/rc.d/init.d/squid start  
 

5.4 Configurer les postes clients

Maintenant vous pouvez configurer vos postes clients, en configurant le browser pour qu'il se serve du proxy que vous venez de configurer sur votre poste Linux (mettre le nom de votre poste linux et le port 3128 (port par défaut)). Connectez vous sur le net, et normalement ça devrait marcher.


Next Previous Contents