Vous n'êtes pas identifié(e).
L'icône rouge permet de télécharger chaque page du wiki visitée au format
PDF et la grise au format ODT →
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente Prochaine révision Les deux révisions suivantes | ||
utilisateurs:hypathie:tutos:proxy-transparent [17/10/2014 15:52] Hypathie [configuration d'iptables (NAT)] |
utilisateurs:hypathie:tutos:proxy-transparent [18/10/2014 08:18] Hypathie [Vérifications] |
||
---|---|---|---|
Ligne 8: | Ligne 8: | ||
===== Introduction ===== | ===== Introduction ===== | ||
Voir : [[http://www.squid-cache.org/|le site de squid]]\\ | Voir : [[http://www.squid-cache.org/|le site de squid]]\\ | ||
- | [[http://wiki.squid-cache.org/ConfigExamples/Intercept/LinuxDnat|proxy transparent]] | + | [[http://wiki.squid-cache.org/ConfigExamples/Intercept/LinuxDnat|proxy transparent]]\\ |
+ | Voir aussi : [[http://www.sput.nl/software/squid33.html]]\\ | ||
+ | [[http://www.linux-france.org/prj/edu/archinet/systeme/ch40s02.html]] | ||
Lorsqu'un serveur mandataire est installé, on configure souvent le routage du réseau pour que l'utilisateur final soit orienté vers le serveur mandataire sans avoir à modifier sa configuration. On parle alors de « proxy transparent ». Cette configuration est obtenue par translation d'adresse IP. | Lorsqu'un serveur mandataire est installé, on configure souvent le routage du réseau pour que l'utilisateur final soit orienté vers le serveur mandataire sans avoir à modifier sa configuration. On parle alors de « proxy transparent ». Cette configuration est obtenue par translation d'adresse IP. | ||
- | ===Prérequis=== | + | ====Prérequis==== |
Un serveur DNS est installé sur la passerelle.\\ | Un serveur DNS est installé sur la passerelle.\\ | ||
Ligne 21: | Ligne 24: | ||
''iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE'' | ''iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE'' | ||
- | Le serveur squid est installé : | + | === Configuration d'iptables (NAT) === |
+ | |||
+ | * Pour faire choses proprement on flush les tables concernées et on ajoute : | ||
+ | |||
+ | <code root> | ||
+ | iptables -t nat -F | ||
+ | iptables -t nat -X | ||
+ | iptables -t mangle -F | ||
+ | iptables -t mangle -X | ||
+ | |||
+ | iptables -t nat -A PREROUTING -i eth0 -s 192.168.0.1 -p tcp --dport 80 -j ACCEPT | ||
+ | |||
+ | iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80\ | ||
+ | -j DNAT --to-destination 192.168.0.1:3128 | ||
+ | |||
+ | iptables -t mangle -A PREROUTING -p tcp --dport 3128 -j DROP | ||
+ | |||
+ | iptables -t nat -A PREROUTING -i eth1 -s 192.168.1.0/24\ | ||
+ | -p tcp --dport 80 -j REDIRECT --to-port 3128 | ||
+ | |||
+ | iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80\ | ||
+ | -j REDIRECT --to-ports 3128 | ||
+ | |||
+ | iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | ||
+ | </code> | ||
+ | |||
+ | |||
+ | * Ce qui donne : | ||
+ | <code root>iptables -L -t nat</code> | ||
+ | |||
+ | <code>Chain PREROUTING (policy ACCEPT) | ||
+ | target prot opt source destination | ||
+ | ACCEPT tcp -- debian-serveur.mondomaine.hyp anywhere tcp dpt:http | ||
+ | DNAT tcp -- anywhere anywhere tcp dpt:http to:192.168.0.1:3128 | ||
+ | REDIRECT tcp -- 192.168.1.0/24 anywhere tcp dpt:http redir ports 3128 | ||
+ | |||
+ | Chain INPUT (policy ACCEPT) | ||
+ | target prot opt source destination | ||
+ | |||
+ | Chain OUTPUT (policy ACCEPT) | ||
+ | target prot opt source destination | ||
+ | |||
+ | Chain POSTROUTING (policy ACCEPT) | ||
+ | target prot opt source destination | ||
+ | MASQUERADE all -- anywhere anywhere</code> | ||
+ | |||
+ | <code root>iptables -L PREROUTING -t mangle</code> | ||
+ | <code>iptables -L -t mangle | ||
+ | Chain PREROUTING (policy ACCEPT) | ||
+ | target prot opt source destination | ||
+ | DROP tcp -- anywhere anywhere tcp dpt:3128</code> | ||
+ | |||
+ | <note> | ||
+ | **Pour mangle**, une petite citation extrait du [[http://wiki.squid-cache.org/ConfigExamples/Intercept/LinuxDnat|site officiel de squid]] : | ||
+ | |||
+ | Due to the NAT security vulnerabilities it is also a very good idea | ||
+ | to block external access to the internal receiving port. | ||
+ | This has to be done in the mangle part of iptables before DNAT happens | ||
+ | so that intercepted traffic does not get dropped. | ||
+ | |||
+ | **Par contre, concernant les deux interfaces, il faut lancer les commandes iptables pour le DNAT sur l'interface côté lan, et sur l'IP du serveur proxy du réseau côté web.** | ||
+ | |||
+ | </note> | ||
+ | ===Configurer /etc/sysctl.conf === | ||
+ | La première ligne est probablement déjà configurer tel que ce-dessous. Modifier aussi la seconde | ||
+ | <code> | ||
+ | # Controls IP packet forwarding | ||
+ | net.ipv4.ip_forward = 1 | ||
+ | |||
+ | # Controls source route verification | ||
+ | net.ipv4.conf.default.rp_filter = 0 | ||
+ | </code> | ||
+ | * Faire rendre en compte une éventuelle modification : | ||
+ | <code root>sysctl -p</code> | ||
+ | |||
+ | |||
+ | ===Installer le serveur squid3=== | ||
<code root>apt-get install squid3</code> | <code root>apt-get install squid3</code> | ||
<code root>apt-get build-dep squid3</code> | <code root>apt-get build-dep squid3</code> | ||
Ligne 35: | Ligne 114: | ||
===Faire une sauvegarde du fichier de configuration === | ===Faire une sauvegarde du fichier de configuration === | ||
- | Le fichier est commenté quasiment entièrement, et contient tous les paramètres de lancement de Squid ainsi qu’une description assez complète de chacun d’eux. | + | Le fichier est commenté quasiment entièrement, et contient tous les paramètres de lancement de Squid ainsi qu’une description très complète de chacun d’eux. |
- | * On sauvegarde l'original : | + | * **On sauvegarde l'original** : |
+ | C'est très important pour la suite ! | ||
<code root>cp /etc/squid3/squid.conf /etc/squid3/squid.conf_back</code> | <code root>cp /etc/squid3/squid.conf /etc/squid3/squid.conf_back</code> | ||
- | * Puis pour y voir plus clair | + | * Puis pour y voir plus clair : |
- | On supprime toutes les lignes commentées et vide du fichier original, et on le re-crée afin qu'il ne contienne que ces lignes dé-commentées par défaut. | + | On supprime toutes les lignes commentées et vides du fichier original, et on le recrée afin qu'il contienne uniquement les lignes du fichier original dé-commentées par défaut. |
<code root>echo "`grep -v "^#" /etc/squid3/squid.conf | sed -e '/^$/d'`" >/etc/squid3/squid.conf</code> | <code root>echo "`grep -v "^#" /etc/squid3/squid.conf | sed -e '/^$/d'`" >/etc/squid3/squid.conf</code> | ||
* On ajoute ou modifie les lignes suivantes : | * On ajoute ou modifie les lignes suivantes : | ||
+ | Rappel de la configuration:\\ | ||
eth0 (vers internet) : 192.168.0.1\\ | eth0 (vers internet) : 192.168.0.1\\ | ||
eth1 (vers lan) : 192.168.1.1 | eth1 (vers lan) : 192.168.1.1 | ||
- | <code> | + | |
- | acl localnet src 192.168.1.0/24 | + | |
- | acl lan src 192.168.0.1 192.168.1.0/24 | + | |
- | http_access allow localhost | + | |
- | http_access allow localnet | + | |
- | http_access allow lan | + | |
- | #Default: | + | |
- | access_log /var/log/squid3/access.log squid | + | |
- | </code> | + | |
> ''acl localnet src 192.168.1.0/24'' : le réseau qui doit avoir accès au serveur proxy | > ''acl localnet src 192.168.1.0/24'' : le réseau qui doit avoir accès au serveur proxy | ||
>''acl lan src 192.168.0.1 192.168.1.0/24'': Liste de contrôle : le lan seulement utilise squid | >''acl lan src 192.168.0.1 192.168.1.0/24'': Liste de contrôle : le lan seulement utilise squid | ||
Ligne 62: | Ligne 136: | ||
>''http_port 3128'' : "http_port 3128" devient "http_port 3128 transparent" | >''http_port 3128'' : "http_port 3128" devient "http_port 3128 transparent" | ||
>''access_log /var/log/squid3/access.log squid'' : le fichier de log est commenté, on récupère la ligne dans le fichier sauvegardé et on l'ajoute. | >''access_log /var/log/squid3/access.log squid'' : le fichier de log est commenté, on récupère la ligne dans le fichier sauvegardé et on l'ajoute. | ||
+ | |||
+ | * Concernant le cache tout est commenté dans le fichier original | ||
+ | On récupère le concernant, et on l'ajoute aussi dans le fichier /etc/squid3/squid.conf | ||
* Ce qui donne : | * Ce qui donne : | ||
Ligne 69: | Ligne 146: | ||
acl localhost src 127.0.0.1/32 ::1 | acl localhost src 127.0.0.1/32 ::1 | ||
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1 | acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1 | ||
- | acl localnet src 192.168.1.0/24 # RFC1918 possible internal network | + | acl localnet src 192.168.0.0/24 # RFC1918 possible internal network |
acl SSL_ports port 443 | acl SSL_ports port 443 | ||
acl Safe_ports port 80 # http | acl Safe_ports port 80 # http | ||
Ligne 82: | Ligne 159: | ||
acl Safe_ports port 777 # multiling http | acl Safe_ports port 777 # multiling http | ||
acl CONNECT method CONNECT | acl CONNECT method CONNECT | ||
- | acl lan src 192.168.1.0/24 | + | acl lan src 192.168.0.1 192.168.1.0/24 |
http_access allow manager localhost | http_access allow manager localhost | ||
http_access deny manager | http_access deny manager | ||
Ligne 89: | Ligne 166: | ||
http_access allow localhost | http_access allow localhost | ||
http_access allow localnet | http_access allow localnet | ||
- | http_access allow lan | + | http_access allow lan |
http_access deny all | http_access deny all | ||
http_port 3128 transparent | http_port 3128 transparent | ||
- | # Leave coredumps in the first cache dir | + | |
- | coredump_dir /var/spool/squid3 | + | #hierarchy_stoplist cgi-bin ? |
+ | |||
+ | # MEMORY CACHE OPTIONS | ||
+ | #Default: | ||
+ | #cache_mem 256 MB | ||
+ | cache_mem 8 MB | ||
+ | #Default: | ||
+ | maximum_object_size_in_memory 256 KB | ||
+ | #memory_replacement_policy lru | ||
+ | # DISK CACHE OPTIONS | ||
+ | # Décommentez et régler les éléments suivants pour ajouter un répertoire de cache disque: | ||
+ | cache_dir ufs /var/spool/squid3 100 16 256 | ||
+ | |||
+ | #Default: | ||
+ | #store_dir_select_algorithm least-load | ||
+ | |||
+ | # A value of 0 indicates no limit. | ||
+ | #Default: | ||
+ | max_open_disk_fds 0 | ||
+ | # TAG: minimum_object_size (bytes) | ||
+ | # Objects smaller than this size will NOT be saved on disk. The | ||
+ | # value is specified in kilobytes, and the default is 0 KB, which | ||
+ | # means there is no minimum. | ||
+ | #Default: | ||
+ | minimum_object_size 0 KB | ||
+ | #Default: | ||
+ | maximum_object_size 10 KB | ||
+ | |||
+ | # LOG_FILE OPTIONS | ||
#Default: | #Default: | ||
access_log /var/log/squid3/access.log squid | access_log /var/log/squid3/access.log squid | ||
+ | |||
+ | #Default: | ||
+ | cache_log /var/log/squid3/cache.log | ||
+ | |||
+ | # Leave coredumps in the first cache dir | ||
+ | #coredump_dir /var/spool/squid3 | ||
+ | |||
+ | # OPTIONS FOR TUNING THE CACHE | ||
+ | cache allow all | ||
refresh_pattern ^ftp: 1440 20% 10080 | refresh_pattern ^ftp: 1440 20% 10080 | ||
refresh_pattern ^gopher: 1440 0% 1440 | refresh_pattern ^gopher: 1440 0% 1440 | ||
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 | refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 | ||
refresh_pattern . 0 20% 4320 | refresh_pattern . 0 20% 4320 | ||
+ | |||
+ | hosts_file /etc/hosts | ||
</code> | </code> | ||
- | ===Redémarrer squid=== | + | ===Activation du cache === |
- | <code root>/etc/init.d/squid3 restart</code> | + | |
- | + | ||
- | S'il n'y a pas d'erreur : | + | |
- | <code>[ ok ] Restarting Squid HTTP proxy: squid.</code> | + | |
- | + | ||
- | ====Activation du cache ==== | + | |
Avec squid3 le cache n'est pas activer.\\ | Avec squid3 le cache n'est pas activer.\\ | ||
Ligne 199: | Ligne 309: | ||
</note> | </note> | ||
- | * Ce qui donne : | ||
- | <code> | ||
- | acl manager proto cache_object | ||
- | acl localhost src 127.0.0.1/32 ::1 | ||
- | acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1 | ||
- | acl localnet src 192.168.1.0/24 # RFC1918 possible internal network | ||
- | acl SSL_ports port 443 | ||
- | acl Safe_ports port 80 # http | ||
- | acl Safe_ports port 21 # ftp | ||
- | acl Safe_ports port 443 # https | ||
- | acl Safe_ports port 70 # gopher | ||
- | acl Safe_ports port 210 # wais | ||
- | acl Safe_ports port 1025-65535 # unregistered ports | ||
- | acl Safe_ports port 280 # http-mgmt | ||
- | acl Safe_ports port 488 # gss-http | ||
- | acl Safe_ports port 591 # filemaker | ||
- | acl Safe_ports port 777 # multiling http | ||
- | acl CONNECT method CONNECT | ||
- | acl lan src 192.168.0.1 192.168.1.0/24 | ||
- | http_access allow manager localhost | ||
- | http_access deny manager | ||
- | http_access deny !Safe_ports | ||
- | http_access deny CONNECT !SSL_ports | ||
- | http_access allow localhost | ||
- | http_access allow localnet | ||
- | http_access allow lan | ||
- | http_access deny all | ||
- | http_port 3128 transparent | ||
- | #Default: | + | * Grâce à la ligne suivant les fichiers du cache sont créés |
- | #cache_mem 256 MB | + | >''cache_dir ufs /var/spool/squid3 100 16 256'' |
- | cache_mem 100 MB | + | |
- | #Default: | + | |
- | maximum_object_size_in_memory 512 KB | + | |
- | # Décommentez et régler les éléments suivants pour ajouter un répertoire de cach | + | |
- | e disque: | + | |
- | cache_dir ufs /var/spool/squid3 100 16 256 | + | |
- | #Default: | + | |
- | store_dir_select_algorithm least-load | + | |
- | # A value of 0 indicates no limit. | + | |
- | #Default: | + | |
- | max_open_disk_fds 0 | + | |
- | # TAG: minimum_object_size (bytes) | + | |
- | # Objects smaller than this size will NOT be saved on disk. The | + | |
- | # value is specified in kilobytes, and the default is 0 KB, which | + | |
- | # means there is no minimum. | + | |
- | #Default: | + | |
- | minimum_object_size 0 KB | + | |
- | #Default: | + | |
- | maximum_object_size 4096 KB | + | |
+ | Et quand on re-démarre squid3 : | ||
- | # Leave coredumps in the first cache dir | + | <code root>/etc/init.d/squid3 restart</code> |
- | coredump_dir /var/spool/squid3 | + | <code>2014/10/17 16:29:49| Creating Swap Directories |
- | #Default: | + | 2014/10/17 16:29:49| /var/spool/squid3 exists |
- | access_log /var/log/squid3/access.log squid | + | 2014/10/17 16:29:49| Making directories in /var/spool/squid3/00 |
- | refresh_pattern ^ftp: 1440 20% 10080 | + | 2014/10/17 16:29:49| Making directories in /var/spool/squid3/01 |
- | refresh_pattern ^gopher: 1440 0% 1440 | + | 2014/10/17 16:29:49| Making directories in /var/spool/squid3/02 |
- | refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 | + | 2014/10/17 16:29:49| Making directories in /var/spool/squid3/03 |
- | refresh_pattern . 0 20% 4320 | + | 2014/10/17 16:29:49| Making directories in /var/spool/squid3/04 |
- | </code> | + | 2014/10/17 16:29:49| Making directories in /var/spool/squid3/05 |
- | + | 2014/10/17 16:29:49| Making directories in /var/spool/squid3/06 | |
- | * Et quand on relance squid3 | + | 2014/10/17 16:29:49| Making directories in /var/spool/squid3/07 |
- | <code root>/etc/init.d/squid3 start</code> | + | 2014/10/17 16:29:49| Making directories in /var/spool/squid3/08 |
- | <code> | + | 2014/10/17 16:29:49| Making directories in /var/spool/squid3/09 |
- | 2014/10/17 09:28:42| Creating Swap Directories | + | 2014/10/17 16:29:49| Making directories in /var/spool/squid3/0A |
- | 2014/10/17 09:28:42| /var/spool/squid3 exists | + | 2014/10/17 16:29:49| Making directories in /var/spool/squid3/0B |
- | 2014/10/17 09:28:42| Making directories in /var/spool/squid3/00 | + | 2014/10/17 16:29:49| Making directories in /var/spool/squid3/0C |
- | 2014/10/17 09:28:42| Making directories in /var/spool/squid3/01 | + | 2014/10/17 16:29:49| Making directories in /var/spool/squid3/0D |
- | 2014/10/17 09:28:42| Making directories in /var/spool/squid3/02 | + | 2014/10/17 16:29:49| Making directories in /var/spool/squid3/0E |
- | 2014/10/17 09:28:42| Making directories in /var/spool/squid3/03 | + | 2014/10/17 16:29:50| Making directories in /var/spool/squid3/0F |
- | 2014/10/17 09:28:42| Making directories in /var/spool/squid3/04 | + | |
- | 2014/10/17 09:28:42| Making directories in /var/spool/squid3/05 | + | |
- | 2014/10/17 09:28:42| Making directories in /var/spool/squid3/06 | + | |
- | 2014/10/17 09:28:42| Making directories in /var/spool/squid3/07 | + | |
- | 2014/10/17 09:28:42| Making directories in /var/spool/squid3/08 | + | |
- | 2014/10/17 09:28:42| Making directories in /var/spool/squid3/09 | + | |
- | 2014/10/17 09:28:42| Making directories in /var/spool/squid3/0A | + | |
- | 2014/10/17 09:28:42| Making directories in /var/spool/squid3/0B | + | |
- | 2014/10/17 09:28:42| Making directories in /var/spool/squid3/0C | + | |
- | 2014/10/17 09:28:42| Making directories in /var/spool/squid3/0D | + | |
- | 2014/10/17 09:28:42| Making directories in /var/spool/squid3/0E | + | |
- | 2014/10/17 09:28:43| Making directories in /var/spool/squid3/0F | + | |
. ok </code> | . ok </code> | ||
- | ===== configuration d'iptables (NAT) ===== | ||
- | Nous n'avons pour l'instant que l'IP masquerade mis en place : | ||
+ | <note> | ||
+ | Si pour une raison ou pour une autre, il y a besoin de ré-initialiser le cache, par exemple si la taille de mémoire cache ne convient pas, ne pas hésiter à supprimer ces fichiers manuellement, ou tout simplement si on veut le vider complètement :\\ | ||
+ | * Il faut arrêter squid : | ||
+ | <code root>/etc/init.d/squid3 stop</code> | ||
- | * Il faut ajouter : | + | * On se déplace dans le répertoire du cache : |
+ | (S'il vous plaît servez-vous de l'auto-complétion, surtout ici) | ||
+ | <code root>cd /var/spool/squid3/</code> | ||
- | <code root> | + | * On supprime tous les dossiers |
- | iptables -t nat -A PREROUTING -s 192.168.0.1 -p tcp --dport 80 -j ACCEPT | + | |
- | iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT\ | + | |
- | --to-destination 192.168.0.1:3128 | + | |
- | iptables -t mangle -A PREROUTING -p tcp --dport 3128 -j DROP | + | |
- | iptables -t nat -A PREROUTING -i eth1 -s 192.168.1.0/24\ | + | |
- | -p tcp --dport 80 -j REDIRECT --to-port 3128 | + | |
- | iptables -t nat -I PREROUTING 1 -i eth1 -s 192.168.1.0/24\ | + | |
- | -p tcp -m tcp --dport 80 -J ACCEPT | + | |
- | </code> | + | |
- | * Ce qui donne : | + | <code root>rm -rv 0*</code> |
- | <code root>iptables -L -t nat</code> | + | |
- | <code>Chain PREROUTING (policy ACCEPT) | + | * On supprime les fichiers |
- | target prot opt source destination | + | <code root>rm -v swap.state*</code> |
- | DNAT tcp -- anywhere anywhere tcp dpt:http to:192.168.1.1:3128 | + | |
- | REDIRECT tcp -- anywhere anywhere tcp dpt:http redir ports 3128 | + | |
- | Chain INPUT (policy ACCEPT) | + | * On relance squid3 : |
- | target prot opt source destination | + | <code root>/etc/init.d/squid3 start</code> |
+ | </note> | ||
- | Chain OUTPUT (policy ACCEPT) | ||
- | target prot opt source destination | ||
- | Chain POSTROUTING (policy ACCEPT) | ||
- | target prot opt source destination | ||
- | MASQUERADE all -- anywhere anywhere</code> | ||
- | ===Configurer /etc/sysctl.conf === | ||
- | * Vérifier que les lignes suivantes comportes ces valeurs : | ||
- | <code> | ||
- | # Controls IP packet forwarding | ||
- | net.ipv4.ip_forward = 1 | ||
- | # Controls source route verification | ||
- | net.ipv4.conf.default.rp_filter = 0 | ||
- | </code> | ||
- | * Faire rendre en compte une éventuelle modification : | ||
- | <code root>sysctl -p</code> | ||
=====Vérifications==== | =====Vérifications==== | ||
- | ===Générer du flux === | + | ====Vérifier le passage par le proxy ==== |
- | Tout bêtement, de côté du lan, on navigue. | + | Pour vérifier que le sous-réseau qui est connecté au web via la passerelle, passe bien de même par le proxy.\\ |
+ | Il faut : | ||
+ | |||
+ | * Générer du flux depuis le sous-réseau | ||
+ | Tout bêtement, de côté du lan, on navigue ! | ||
+ | |||
+ | * Tout en observant côté passerelle (i.e. serveur squid) | ||
+ | le fichier /var/log/squid3/access.logdes logs d'accès : | ||
+ | |||
+ | <code root> | ||
+ | tail -f /var/log/squid3/access.log | ||
+ | </code> | ||
+ | Puis côté du Lan, on navigue, il y a alors du mouvement de le fichier de log : | ||
+ | <code> | ||
+ | 1413554295.061 138 192.168.1.2 TCP_MISS/200 13345 GET http://debian-facile.org/ - DIRECT/212.129.32.102 text/html | ||
+ | 1413554295.098 36 192.168.1.2 TCP_MISS/200 8320 GET http://debian-facile.org/style/Kao.css - DIRECT/212.129.32.102 text/css | ||
+ | 1413554295.108 59 192.168.1.2 TCP_MISS/200 950 GET http://debian-facile.org/nono.css - DIRECT/212.129.32.102 text/css | ||
+ | <...> | ||
+ | 1413554299.083 32 192.168.1.2 TCP_MISS/200 554 GET http://debian-facile.org/style/Air/img/asterisk.png - DIRECT/212.129.32.102 image/png | ||
+ | 1413554301.463 74 192.168.1.2 TCP_MISS/200 1391 POST http://debian-facile.org/login.php? - DIRECT/212.129.32.102 text/html | ||
+ | <...> | ||
+ | </code> | ||
+ | |||
+ | ====Vérifier la cache ==== | ||
+ | Ci-dessus, nous avons observé que les connexions passaient par le proxy.\\ | ||
+ | |||
+ | Pour vérifier que squid sert au client une page de son cache, il faut visiter le même URL plusieurs fois. | ||
+ | La 1ère fois on a normalement dans /var/log/squid3/access.log, ''TCP_MISS'', mais après on doit obtenir ''TCP_HIT''. | ||
+ | * TCP_MISS : L'objet demandé n'est pas dans le cache. | ||
+ | * TCP_HIT : Une copie valide de l'objet demandé était dans le cache. | ||
+ | |||
+ | On peut trouver d'autres indications : | ||
+ | * TCP_REFRESH_HIT : L'objet demandé a été mis en cache mais obsolète (ICM -> 304). | ||
+ | * TCP_REF_FAIL_HIT : L'objet demandé a été mis en cache mais il obsolète ; la requête IMS a échoué mais l'objet a été livré. | ||
+ | * TCP_REFRESH_MISS : L'objet demandé a été mis en cache mais était obsolète. La requête IMS retourné le nouveau contenu. | ||
+ | * TCP_CLIENT_REFRESH_MISS : Le client a émis une certaine demande de cache en même temps que la demande. Ainsi, le cache doit extraire à nouveau l'objet. | ||
+ | * TCP_IMS_HIT : Le client a émis une demande IMS pour un objet qui est nouvellement dans le cache. | ||
+ | * TCP_NEGATIVE_HIT :Demande d'un objet mis en cache négative, par exemple "404 Not Found" | ||
+ | * TCP_MEM_HIT : Une copie valide de l'objet demandé a été mis dans la mémoire du cache, évitant ainsi les accès disque. | ||
+ | * TCP_DENIED : Accès a été refusé pour cette demande. | ||
+ | * TCP_OFFLINE_HIT : L'objet demandé a été récupéré à partir du cache en mode déconnecté. Voir "offline_mode" dans le fichier squid.conf. | ||
+ | |||
+ | Se connecter plusieurs fois et tenter la commande : | ||
+ | |||
+ | <code root>cat /var/log/squid3/cache.log | grep TCP_HIT</code> | ||
+ | |||
+ | |||
+ | ====Vérifier le cache==== | ||
+ | ===Voir le fichier /var/log/squid3/cache.log=== | ||
- | * Voir le fichier /var/log/squid3/cache.log | ||
On trouve dans ce fichier beaucoup d’informations allant du nombre de descripteurs de fichiers ouverts jusqu’à la mémoire allouée. Il est possible de se référer à la documentation officielle pour obtenir plus de détails sur ce fichier.\\ | On trouve dans ce fichier beaucoup d’informations allant du nombre de descripteurs de fichiers ouverts jusqu’à la mémoire allouée. Il est possible de se référer à la documentation officielle pour obtenir plus de détails sur ce fichier.\\ | ||
- | Par exemple ci-dessous les DNS enregistrés : | + | |
+ | * Par exemple ci-dessous les DNS enregistrés : | ||
<code>2014/10/16 13:11:45| Process ID 3735 | <code>2014/10/16 13:11:45| Process ID 3735 | ||
2014/10/16 13:11:45| With 65535 file descriptors available | 2014/10/16 13:11:45| With 65535 file descriptors available | ||
Ligne 352: | Ligne 430: | ||
- | * Le fichier /var/log/squid3/access.log | + | |
- | Ce dernier répertorie tous les accès faits au serveur, c’est-à-dire toutes les requêtes HTTP reçues et la façon dont elles ont été traitées. Le format de ce fichier est paramétrable via l’option access_log du fichier squid.conf. Le format natif d’une entrée de log est le suivant :\\ **''time elapsed remotehost code/status bytes method URL rfc931 peerstatus/peerhost type''**\\ | + | <note tip> |
+ | **__Détail sur /var/log/squid3/access.log__ :**\\ | ||
+ | |||
+ | On y retrouve tous les accès faits au serveur, c’est-à-dire toutes les requêtes HTTP reçues et la façon dont elles ont été traitées. Le format de ce fichier est paramétrable via l’option access_log du fichier squid.conf. Le format natif d’une entrée de log est le suivant :\\ **''time elapsed remotehost code/status bytes method URL rfc931 peerstatus/peerhost type''**\\ | ||
> **''time''** : le temps UTC (en ms) auquel la requête a été reçue. | > **''time''** : le temps UTC (en ms) auquel la requête a été reçue. | ||
Ligne 377: | Ligne 458: | ||
>**''type''** : le type de contenu issu du header HTTP de la réponse (Les échanges ICP ne contiennent pas cette information). | >**''type''** : le type de contenu issu du header HTTP de la réponse (Les échanges ICP ne contiennent pas cette information). | ||
- | + | </note> | |
- | ===Configuration du cache === | + | |
- | <code root>vim /etc/squid/squid.conf</code> | + | |
- | Ajouter : | + | |
- | <code> | + | |
- | #Default: | + | |
- | cache_effective_user proxy | + | |
- | #Default: | + | |
- | cache_log /var/log/squid/cache.log</code> | + | |
- | ===== Utilisation ===== | + | |