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 09:10] Hypathie [Configuration de squid comme proxy transparent] |
utilisateurs:hypathie:tutos:proxy-transparent [17/10/2014 15:59] Hypathie [Vérifications] |
||
---|---|---|---|
Ligne 36: | Ligne 36: | ||
===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 assez complète de chacun d’eux. | ||
+ | * On sauvegarde l'original : | ||
+ | <code root>cp /etc/squid3/squid.conf /etc/squid3/squid.conf_back</code> | ||
+ | |||
+ | * 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. | ||
+ | |||
+ | <code root>echo "`grep -v "^#" /etc/squid3/squid.conf | sed -e '/^$/d'`" >/etc/squid3/squid.conf</code> | ||
+ | |||
+ | * On ajoute ou modifie les lignes suivantes : | ||
+ | eth0 (vers internet) : 192.168.0.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 lan src 192.168.0.1 192.168.1.0/24'': Liste de contrôle : le lan seulement utilise squid | ||
+ | >''http_access allow localhost'': accès à squid permis au localhost | ||
+ | >''http_access allow lan'': idem | ||
+ | >''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. | ||
+ | |||
+ | * Ce qui donne : | ||
+ | <code user>less /etc/squid3/squid.conf</code> | ||
+ | <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.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 | ||
+ | # Leave coredumps in the first cache dir | ||
+ | coredump_dir /var/spool/squid3 | ||
+ | #Default: | ||
+ | access_log /var/log/squid3/access.log squid | ||
+ | refresh_pattern ^ftp: 1440 20% 10080 | ||
+ | refresh_pattern ^gopher: 1440 0% 1440 | ||
+ | refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 | ||
+ | refresh_pattern . 0 20% 4320 | ||
+ | </code> | ||
+ | |||
+ | ===Redémarrer squid=== | ||
+ | <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.\\ | ||
+ | Pour l'activer, il va falloir aller chercher dans le fichier original ce qui concerne la mise en cache ! | ||
+ | En voilà un résumé ;-) | ||
+ | |||
<note tip> | <note tip> | ||
**__Voici la définition de quelques options de configuration basiques :__** | **__Voici la définition de quelques options de configuration basiques :__** | ||
Ligne 85: | Ligne 163: | ||
>section **58** HTTP Reply (Response) __2__ | >section **58** HTTP Reply (Response) __2__ | ||
</note> | </note> | ||
+ | * Il faut donc extraire ce qui nous intéresse concernant le cache du fichier de configuration /etc/squid3/squid.conf : | ||
- | |||
- | |||
- | * On sauvegarde l'original : | ||
- | <code root>cp /etc/squid3/squid.conf /etc/squid3/squid.conf_back</code> | ||
- | |||
- | * 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. | ||
- | |||
- | <code root>echo "`grep -v "^#" /etc/squid3/squid.conf | sed -e '/^$/d'`" >/etc/squid3/squid.conf</code> | ||
- | |||
- | * On ajoute ou modifie les lignes suivantes : | ||
- | eth0 (vers internet) : 192.168.0.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 lan src 192.168.0.1 192.168.1.0/24'': Liste de contrôle : le lan seulement utilise squid | ||
- | >''http_access allow localhost'': accès à squid permis au localhost | ||
- | >''http_access allow lan'': idem | ||
- | >''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. | ||
>#Default: | >#Default: | ||
- | ># cache_mem 256 MB | + | >''# cache_mem 256 MB'' |
>#Default: | >#Default: | ||
- | ># maximum_object_size_in_memory 512 KB | + | >''# maximum_object_size_in_memory 512 KB'' |
># Décommentez et régler les éléments suivants pour ajouter un répertoire de cache disque: | ># 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'' | >''#cache_dir ufs /var/spool/squid3 100 16 256'' | ||
Ligne 124: | Ligne 175: | ||
># A value of 0 indicates no limit. | ># A value of 0 indicates no limit. | ||
>#Default: | >#Default: | ||
- | ># max_open_disk_fds 0 | + | >''# max_open_disk_fds 0'' |
># TAG: minimum_object_size (bytes) | ># TAG: minimum_object_size (bytes) | ||
># Objects smaller than this size will NOT be saved on disk. The | ># Objects smaller than this size will NOT be saved on disk. The | ||
Ligne 134: | Ligne 185: | ||
>''# maximum_object_size 4096 KB'' | >''# maximum_object_size 4096 KB'' | ||
+ | <note important> | ||
+ | Comparer :\\ | ||
+ | -> ''# cache_mem 256 MB''\\ | ||
+ | -> ''#cache_dir ufs /var/spool/squid3 100 16 256''\\ | ||
+ | => La définition de la mémoire cache (256 MB) serait plus large que l'espace disque défini (100MB) !\\ | ||
+ | |||
+ | Donc attention en dé-commentant ! | ||
+ | |||
+ | df -h /var | ||
+ | Sys. fich. Taille Util. Dispo Uti% Monté sur | ||
+ | /dev/mapper/systeme-var 2,8G 1,0G 1,7G 39% /var | ||
+ | |||
+ | </note> | ||
* Ce qui donne : | * Ce qui donne : | ||
- | <code user>less /etc/squid3/squid.conf</code> | ||
<code> | <code> | ||
acl manager proto cache_object | acl manager proto cache_object | ||
Ligne 154: | Ligne 217: | ||
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 164: | Ligne 227: | ||
http_access deny all | http_access deny all | ||
http_port 3128 transparent | http_port 3128 transparent | ||
+ | |||
+ | #Default: | ||
+ | #cache_mem 256 MB | ||
+ | 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 | ||
+ | |||
+ | |||
+ | # Leave coredumps in the first cache dir | ||
coredump_dir /var/spool/squid3 | coredump_dir /var/spool/squid3 | ||
#Default: | #Default: | ||
Ligne 173: | Ligne 261: | ||
</code> | </code> | ||
- | ===Redémarrer squid=== | + | * Et quand on relance squid3 |
- | <code root>/etc/init.d/squid3 restart</code> | + | <code root>/etc/init.d/squid3 start</code> |
- | + | <code> | |
- | S'il n'y a pas d'erreur : | + | 2014/10/17 09:28:42| Creating Swap Directories |
- | <code>[ ok ] Restarting Squid HTTP proxy: squid.</code> | + | 2014/10/17 09:28:42| /var/spool/squid3 exists |
+ | 2014/10/17 09:28:42| Making directories in /var/spool/squid3/00 | ||
+ | 2014/10/17 09:28:42| Making directories in /var/spool/squid3/01 | ||
+ | 2014/10/17 09:28:42| Making directories in /var/spool/squid3/02 | ||
+ | 2014/10/17 09:28:42| Making directories in /var/spool/squid3/03 | ||
+ | 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> | ||
===== configuration d'iptables (NAT) ===== | ===== configuration d'iptables (NAT) ===== | ||
Nous n'avons pour l'instant que l'IP masquerade mis en place : | Nous n'avons pour l'instant que l'IP masquerade mis en place : | ||
Ligne 186: | Ligne 290: | ||
<code root> | <code root> | ||
- | 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 -s 192.168.0.1 -p tcp --dport 80 -j ACCEPT |
- | iptables -t nat -I PREROUTING 1 -i eth1 -s 192.168.1.0/24 -p tcp -m 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> | </code> | ||
Ligne 223: | Ligne 333: | ||
=====Vérifications==== | =====Vérifications==== | ||
===Générer du flux === | ===Générer du flux === | ||
- | Tout bêtement, de côté du lan, on navigue. | + | Tout bêtement, de côté du lan, on navigue en observant le fichier des logs d'accès : |
- | + | ||
- | * 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.\\ | + | |
- | Par exemple ci-dessous les DNS enregistrés : | + | |
- | <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| Initializing IP Cache... | + | |
- | 2014/10/16 13:11:45| DNS Socket created at [::], FD 7 | + | |
- | 2014/10/16 13:11:45| DNS Socket created at 0.0.0.0, FD 8 | + | |
- | 2014/10/16 13:11:45| Adding domain mondomaine.hyp from /etc/resolv.conf | + | |
- | 2014/10/16 13:11:45| Adding domain mondomaine.hyp from /etc/resolv.conf | + | |
- | 2014/10/16 13:11:45| Adding nameserver 127.0.0.1 from /etc/resolv.conf | + | |
- | 2014/10/16 13:11:45| Adding nameserver 192.168.0.1 from /etc/resolv.conf | + | |
- | 2014/10/16 13:11:45| Adding nameserver 212.27.40.240 from /etc/resolv.conf | + | |
- | 2014/10/16 13:11:45| Adding nameserver 212.27.40.241 from /etc/resolv.conf | + | |
- | 2014/10/16 13:11:45| Unlinkd pipe opened on FD 13<...></code> | + | |
- | + | ||
* Le fichier /var/log/squid3/access.log | * Le fichier /var/log/squid3/access.log | ||
+ | Par exemple : | ||
+ | <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> | ||
+ | |||
+ | <note tip> | ||
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''**\\ | 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''**\\ | ||
Ligne 267: | Ligne 375: | ||
>**''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> | ||
+ | |||
+ | * 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.\\ | ||
+ | Par exemple ci-dessous les DNS enregistrés : | ||
+ | <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| Initializing IP Cache... | ||
+ | 2014/10/16 13:11:45| DNS Socket created at [::], FD 7 | ||
+ | 2014/10/16 13:11:45| DNS Socket created at 0.0.0.0, FD 8 | ||
+ | 2014/10/16 13:11:45| Adding domain mondomaine.hyp from /etc/resolv.conf | ||
+ | 2014/10/16 13:11:45| Adding domain mondomaine.hyp from /etc/resolv.conf | ||
+ | 2014/10/16 13:11:45| Adding nameserver 127.0.0.1 from /etc/resolv.conf | ||
+ | 2014/10/16 13:11:45| Adding nameserver 192.168.0.1 from /etc/resolv.conf | ||
+ | 2014/10/16 13:11:45| Adding nameserver 212.27.40.240 from /etc/resolv.conf | ||
+ | 2014/10/16 13:11:45| Adding nameserver 212.27.40.241 from /etc/resolv.conf | ||
+ | 2014/10/16 13:11:45| Unlinkd pipe opened on FD 13<...></code> | ||
+ | |||
+ | |||
+ | |||
- | ===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 ===== | ===== Utilisation ===== | ||