Le proxy de mise en cache Squid est un projet open source établi de longue date. Outre les fonctionnalités de proxy et de cache de base, Squid est également idéal pour gérer, filtrer et analyser les accès HTTP et HTTPS. Un exemple de ceci est l'utilisation d'un filtre de contenu pour réécrire ou rediriger les URL, et une application typique pour cela est le blocage des sites de suivi et du contenu répréhensible.
Cette section présente la construction de Squid à partir de la source (Git) et montre quelques exemples de base sur la façon de l'utiliser.
Les sources de Squid peuvent être téléchargées sur http://www.squid-cache.org/.
wget http://www.squid-cache.org/Versions/v4/squid-4.10.tar.xz -O ${LFS}/download/squid-4.10.tar.xz --no-check-certificate rm -Rf squid-4.10 cd squid-4.10 ./bootstrap.sh automake (1.16.1) : automake autoconf (2.69) : autoconf libtool (2.4.6) : libtool libtool path : /usr/bin Bootstrapping parallel-tests: installing 'cfgaux/test-driver' Fixing configure recursion Autotool bootstrapping complete. mkdir build; cd build
Il est maintenant temps de configurer le build (il existe de nombreuses options de configuration disponibles que l'on peut explorer en utilisant configure --help
).
../configure --prefix=/opt/squid --with-default-user=squid --enable-ssl --disable-inlined \ --disable-optimizations --enable-arp-acl --disable-wccp --disable-wccp2 --disable-htcp \ --enable-delay-pools --enable-linux-netfilter --disable-translation --disable-auto-locale \ --with-logdir=/opt/squid/log/squid --with-pidfile=/opt/squid/run/squid.pid ... configure: creating ./config.status config.status: creating Makefile config.status: creating config.h config.status: executing depfiles commands config.status: executing libtool commands
Construire le code et installer les binaires dans /opt/squid
comme spécifié ci-dessus lors de la configuration
make make install
Le script pour construire squid dans la toolchain LFS est disponible ici
Modifier la configuration par défaut en éditant etc/squid.conf
. La configuration par défaut de squid.conf fournie peut être suffisante pour les tests et l'utilisation de base, mais quelques éléments doivent être modifiés dans /etc/squid/squid.conf :
maximum_object_size 409600 KB
cache_replacement_policy heap LFUDA
cache_dir ufs /var/spool/squid 1000 16 256
acl localnet src 192.168.3.0/24
http_access allow localnet
http_port 3128
Créer maintenant un utilisateur squid et lui donner les autorisations d'écrire dans divers dossiers sous /opt/squid
:
sudo adduser squid mkdir -p /opt/squid/log sudo chown -R squid:squid /opt/squid/log sudo chown -R squid:squid /opt/squid/var sudo chown -R squid:squid /opt/squid/run
Fichiers et dossiers importants:
fichier/dossier | Objet |
---|---|
etc/squid.conf | Fichier de configuration Squid |
log/squid/access.log, log/squid/cache.log | Fichiers journaux Squid |
Lancer squid avec l'utilisateur squid:
$ su squid $ /opt/squid/sbin/squid $ ps -e | grep quid 10486 ? 00:00:00 squid 10501 ? 00:00:00 squid $ more /opt/squid/log/squid/cache.log 2021/06/30 10:42:24 kid1| Set Current Directory to /opt/squid/var/cache/squid 2021/06/30 10:42:24 kid1| Starting Squid Cache version 5.0.6-VCS for x86_64-pc-linux-gnu... 2021/06/30 10:42:24 kid1| Service Name: squid 2021/06/30 10:42:24 kid1| Process ID 98677 2021/06/30 10:42:24 kid1| Process Roles: worker 2021/06/30 10:42:24 kid1| With 1024 file descriptors available 2021/06/30 10:42:24 kid1| Initializing IP Cache... 2021/06/30 10:42:24 kid1| DNS Socket created at [::], FD 7 2021/06/30 10:42:24 kid1| DNS Socket created at 0.0.0.0, FD 8 2021/06/30 10:42:24 kid1| Adding nameserver XX.XX.XX.XX from /etc/resolv.conf 2021/06/30 10:42:24 kid1| Logfile: opening log daemon:/opt/squid/log/squid/access.log 2021/06/30 10:42:24 kid1| Logfile Daemon: opening log /opt/squid/log/squid/access.log 2021/06/30 10:42:24 kid1| WARNING: no_suid: setuid(0): (1) Operation not permitted 2021/06/30 10:42:24 kid1| Store logging disabled 2021/06/30 10:42:24 kid1| Swap maxSize 0 + 262144 KB, estimated 20164 objects 2021/06/30 10:42:24 kid1| Target number of buckets: 1008 2021/06/30 10:42:24 kid1| Using 8192 Store buckets 2021/06/30 10:42:24 kid1| Max Mem size: 262144 KB 2021/06/30 10:42:24 kid1| Max Swap size: 0 KB 2021/06/30 10:42:24 kid1| Using Least Load store dir selection 2021/06/30 10:42:24 kid1| Set Current Directory to /opt/squid/var/cache/squid 2021/06/30 10:42:24 kid1| Finished loading MIME types and icons. 2021/06/30 10:42:24 kid1| Squid plugin modules loaded: 0 2021/06/30 10:42:24 kid1| Adaptation support is off. 2021/06/30 10:42:24 kid1| Accepting HTTP Socket connections at conn3 local=[::]:3128 remote=[::] FD 11 flags=9 2021/06/30 10:42:25 kid1| storeLateRelease: released 0 objects
Lorsqu'on apporte des modifications à squid.conf, il faut exécuter une reconfiguration :
$ /opt/squid/sbin/squid -k reconfigure
Se connecter à un hôte Linux, configurer l'utilisation d'un proxy sur la ligne de commande et effectuer un get. (Dans l'exemple ci-dessous, le proxy Squid s'exécute sur 192.168.3.75, et on le teste à partir de 192.168.3.44.)
$ export http_proxy=192.168.3.75:3128 $ $ wget http://example.com --2021-06-30 10:50:17-- http://example.com/ Connecting to 192.168.3.75:3128... connected. Proxy request sent, awaiting response... 200 OK Length: 1256 (1.2K) [text/html] Saving to: ‘index.html’ ...
On peut afficher l'activité de Squid en consultant access.log. Si configuré pour le format natif, chaque ligne sera écrite comme indiqué ci-dessous.
1625064617.247 46 192.168.3.20 TCP_MISS/200 1673 GET http://example.com/ - HIER_DIRECT/93.184.216.34 text/html
Le cache racine contient les packages standard buildroot, mais à mesure qu’il vieillit, de yum update en yum update, plusieurs packages peuvent périmés. De plus, certains paquets ne font pas partie de la buildroot standard, mais sont souvent nécessaires (par exemple, pkgconfig). Ces packages peuvent être servis plus rapidement à partir d'un cache squid que de les télécharger à partir d'Internet pour chaque version de paquet.
Pour que l'utilisateur de la version utilise automatiquement le cache squid, taper:
echo export http_proxy=\" http://localhost:3128 \" >> /home/build/.bash_profile
Pour n'utiliser squid pour certaines configurations fictives, on peut, au lieu de définir la variable d'environnement http_proxy , définir la configuration du proxy dans chaque fichier de configuration de yum.conf:
config_opts['yum.conf'] = """ [main] ... proxy=http://localhost:3128/ ...