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 [16/10/2014 13:23] Hypathie [Configuration de squid comme proxy transparent] |
utilisateurs:hypathie:tutos:proxy-transparent [16/10/2014 18:00] Hypathie [Vérifications] |
||
---|---|---|---|
Ligne 7: | Ligne 7: | ||
===== 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]] | ||
+ | |||
+ | 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=== | ||
Ligne 69: | Ligne 73: | ||
icp_access allow localnet | icp_access allow localnet | ||
icp_access deny all | icp_access deny all | ||
- | http_port 3128 intercept | + | http_port 3128 |
hierarchy_stoplist cgi-bin ? | hierarchy_stoplist cgi-bin ? | ||
cache_mem 8 MB | cache_mem 8 MB | ||
Ligne 106: | Ligne 110: | ||
>''httpd_accel_with_proxy on'': poser squid comme proxy local et comme accélérateur http | >''httpd_accel_with_proxy on'': poser squid comme proxy local et comme accélérateur http | ||
>''httpd_accel_uses_host_header on'': activer le nom d'hôte | >''httpd_accel_uses_host_header on'': activer le nom d'hôte | ||
- | >''acl lan src 192.168.1.1 192.168.2.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 |
>''http_access allow localhost'': accès à squid permis au localhost | >''http_access allow localhost'': accès à squid permis au localhost | ||
>''http_access allow lan'': idem | >''http_access allow lan'': idem | ||
- | >''http_port 3128 intercept'' : ''http_port 3128'' deviant ''http_port 3128 intercept'' | + | >''http_port 3128'' : "http_port 3128" devient "http_port 3128 transparent" |
* Ce qui donne : | * Ce qui donne : | ||
Ligne 118: | Ligne 123: | ||
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 # par défaut | acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 # par défaut | ||
acl localnet src 192.168.1.0/24 # RFC1918 possible internal network | acl localnet src 192.168.1.0/24 # RFC1918 possible internal network | ||
- | acl localnet src 172.16.0.0/12 # RFC1918 possible internal network | ||
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network | acl localnet src 192.168.0.0/16 # RFC1918 possible internal network | ||
acl SSL_ports port 443 # https | acl SSL_ports port 443 # https | ||
Ligne 156: | Ligne 160: | ||
icp_access allow localnet | icp_access allow localnet | ||
icp_access deny all | icp_access deny all | ||
- | http_port 3128 | + | http_port 3128 transparent |
hierarchy_stoplist cgi-bin ? | hierarchy_stoplist cgi-bin ? | ||
cache_mem 8 MB | cache_mem 8 MB | ||
Ligne 175: | Ligne 179: | ||
</code> | </code> | ||
- | ===redémarrer squid=== | + | ===Redémarrer squid=== |
<code root>/etc/init.d/squid restart</code> | <code root>/etc/init.d/squid restart</code> | ||
+ | |||
+ | S'il n'y a pas d'erreur : | ||
+ | <code>[ ok ] Restarting Squid HTTP proxy: squid.</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 : | ||
- | * On ajoute à iptables: | ||
- | ''iptables -t nat -A PREROUTING -i interface_LAN -p tcp --dport 80 -j DNAT --to SQUID_SERVEUR:SQUID_PORT'' | ||
- | <code root> | ||
- | iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.1.1:3128 | ||
- | </code> | ||
- | ''iptables -t nat -A PREROUTING -i interface_WEB -p tcp --dport 80 -j REDIRECT --to-port SQUID_PORT'' | + | * Il faut ajouter : |
<code root> | <code root> | ||
- | iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 | + | 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 208: | Ligne 213: | ||
target prot opt source destination | target prot opt source destination | ||
MASQUERADE all -- anywhere anywhere</code> | 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==== | ||
+ | ===Générer du flux === | ||
+ | Tout bêtement, de côté du lan, on navigue. | ||
+ | |||
+ | * 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 | ||
+ | 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''**\\ | ||
+ | |||
+ | > **''time''** : le temps UTC (en ms) auquel la requête a été reçue. | ||
+ | |||
+ | >**''elapsed''** : le temps de traitement par le serveur de la requête (en ms). Ce temps de traitement diffère selon le mode utilisé (connecté ou déconnecté) : | ||
+ | |||
+ | * Pour TCP, il s’agit du temps écoulé entre le moment où le serveur a reçu la requête et le moment où il a répondu au client. | ||
+ | * Pour UDP, il s’agit du temps calculé entre le moment où le serveur prévoit de répondre au client et le moment où il lui répond effectivement. | ||
+ | |||
+ | >**''remotehost''** : l’adresse IP du client. Cette donnée peut être cachée pour rendre les logs anonymes. | ||
+ | |||
+ | >**''code/status''** : le code résultat de la transaction. Ce champ est composé de deux entrées séparées par un slash : le code de statut de Squid et le code HTTP de la réponse du serveur d’origine. La plupart de ces codes sont détaillés plus bas. | ||
+ | |||
+ | >**''bytes''** : la taille de la donnée livrée au client. | ||
+ | |||
+ | >**''method''** : la méthode utilisée pour récupérer la ressource (GET, HEAD, etc.). | ||
+ | |||
+ | >**''URL''** : l’URL de la ressource demandée. | ||
+ | |||
+ | >**''rfc931''** : les informations utilisateurs (désactivé par défaut). | ||
+ | |||
+ | >**''hierarchy code''** : un code permettant de savoir comment la requête a été traitée. Ce code peut être suivi par l’adresse IP vers laquelle la requête a été redirigée. | ||
+ | |||
+ | >**''type''** : le type de contenu issu du header HTTP de la réponse (Les échanges ICP ne contiennent pas cette information). | ||
+ | |||
+ | ===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 ===== | ||