logo Debian Debian Debian-France Debian-Facile Debian-fr.org Forum-Debian.fr Debian ? Communautés logo inclusivité

Debian-facile

Bienvenue sur Debian-Facile, site d'aide pour les nouveaux utilisateurs de Debian.

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 → ODT PDF Export

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

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 16:40]
Hypathie [Configuration de squid comme proxy transparent]
utilisateurs:hypathie:tutos:proxy-transparent [18/10/2014 06:28]
Hypathie [Introduction]
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) === 
 + 
 +  * Il faut ajouter : 
 + 
 +<code root> 
 +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>​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 33: Ligne 100:
   * contrôle d'​accès en fonction des heures.   * contrôle d'​accès en fonction des heures.
 Néanmoins un proxy transparent permettra de ne rien avoir à configurer dans le navigateur du client qui "​ignorera"​ qu'il passe par un proxy quand il navigue. Cela place donc hors sujet la question l'​accès par login et mot de passe... Néanmoins un proxy transparent permettra de ne rien avoir à configurer dans le navigateur du client qui "​ignorera"​ qu'il passe par un proxy quand il navigue. Cela place donc hors sujet la question l'​accès par login et mot de passe...
- 
-<note important>​ 
-Avant toute modification du fichier /​etc/​squid3/​squid.conf\\ ​ 
-il faut arrêter squid : 
-<code root>/​etc/​init.d/​squid3 stop</​code>​ 
- 
-Puis quand on a fait les modifications souhaitées,​ on le redémarre : 
-<code root>/​etc/​init.d/​squid3 start</​code>​ 
-</​note>​ 
  
 ===Faire une sauvegarde du fichier de configuration === ===Faire une sauvegarde du fichier de configuration ===
Ligne 51: Ligne 109:
  
   * 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 contienne uniquement les lignes dé-commentées par défaut ​dans le fichier original.+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>​
Ligne 68: Ligne 126:
  
   * Concernant le cache tout est commenté dans le fichier original   * Concernant le cache tout est commenté dans le fichier original
-On récupère ​ce qui le concerne ​et on l'​ajoute aussi dans le fichier /​etc/​squid3/​squid.conf+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 267: Ligne 325:
  
 <​note>​ <​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 :\\ +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>​ 
 + 
 +  * On se déplace dans le répertoire du cache :
 (S'il vous plaît servez-vous de l'​auto-complétion,​ surtout ici) (S'il vous plaît servez-vous de l'​auto-complétion,​ surtout ici)
 <code root>cd /​var/​spool/​squid3/</​code>​ <code root>cd /​var/​spool/​squid3/</​code>​
 +
 +  * On supprime tous les dossiers ​
  
 <code root>rm -rv 0*</​code>​ <code root>rm -rv 0*</​code>​
-<code root>rm -rv swap.state*</​code>​ 
-</​note>​ 
  
 +  * On supprime les fichiers
 +<code root>rm -v swap.state*</​code>​
  
 +  * On relance squid3 :
 +<code root>/​etc/​init.d/​squid3 start</​code>​
 +</​note>​
  
-===== configuration d'​iptables (NAT) ===== 
-Nous n'​avons pour l'​instant que l'IP masquerade mis en place : 
  
  
-  * Il faut ajouter : 
  
-<code root> 
-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>​iptables -L -t nat</​code>​ 
  
-<​code>​Chain PREROUTING (policy ACCEPT) +=====Vérifications==== 
-target ​    prot opt source ​     destination ​         +====Vérifier le passage par le proxy ==== 
-DNAT       ​tcp  ​--  anywhere ​   anywhere ​     tcp dpt:http to:192.168.1.1:​3128 +Pour vérifier que le sous-réseau qui est connecté au web via la passerelle, passe bien de même par le proxy.\\  
-REDIRECT ​  ​tcp ​ --  anywhere ​   anywhere ​     tcp dpt:http redir ports 3128+Il faut :
  
-Chain INPUT (policy ACCEPT) +  * Générer du flux depuis le sous-réseau 
-target ​    prot opt source ​     destination ​        +Tout bêtement, de côté du lan, on navigue !
  
-Chain OUTPUT ​(policy ACCEPT+  * Tout en observant côté passerelle ​(i.e. serveur squid)  
-target ​    prot opt source ​     destination ​        +le fichier /​var/​log/​squid3/​access.logdes logs d'​accès :
  
-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==== 
-====Passage par le proxy ==== 
-Vérifie si le sous-réseau qui passe est connecté au web par le passerelle, passe bien par le proxy. 
-===Générer du flux === 
-Tout bêtement, de côté du lan, on navigue en observant le fichier des logs d'​accès : 
-  * Le fichier /​var/​log/​squid3/​access.log 
-Par exemple : 
 <code root> <code root>
 tail -f /​var/​log/​squid3/​access.log tail -f /​var/​log/​squid3/​access.log
Ligne 375: Ligne 403:
 </​note>​ </​note>​
  
-  * Voir le fichier /​var/​log/​squid3/​cache.log+====Vérifier le cache==== 
 +===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 391: Ligne 422:
 2014/10/16 13:11:45| Unlinkd pipe opened on FD 13<​...></​code>​ 2014/10/16 13:11:45| Unlinkd pipe opened on FD 13<​...></​code>​
  
-====Les pages web visitées et le cache==== 
  
  
-===== Utilisation =====+
  
  

Pied de page des forums

Propulsé par FluxBB