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 [05/11/2014 17:12] martinux_qc [Configuration de squid comme proxy transparent] |
utilisateurs:hypathie:tutos:proxy-transparent [10/11/2014 08:03] Hypathie [Introduction] |
||
---|---|---|---|
Ligne 7: | Ligne 7: | ||
===== Introduction ===== | ===== Introduction ===== | ||
- | Voir : [[http://www.squid-cache.org/|le site de squid]]\\ | + | 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. |
- | [[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]] | + | |
+ | <code> | ||
+ | |BOX_adsl|________(192.168.0.1:eth0)-|ROUTEUR-DEBIAN-(eth1:192.168.1.1) | ||
+ | | |PROXY | | ||
+ | | | | ||
+ | sous-réseau A sous-réseau B | ||
+ | | | | ||
+ | |_CLIENT-A1 (eth0:192.168.0.10) |_CLIENT-B1 (eth0:192.168.1.3) | ||
+ | |_CLIENT-AX (eth0:192.168.0.xx) |_CLIENT-BX (eth0:192.168.1.x) | ||
+ | </code> | ||
+ | Les clients du réseau B de profitent du proxy de la passerelle sans avoir à configurer leurs navigateurs. | ||
- | 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. | + | ===Références=== |
+ | * [[http://www.squid-cache.org/|le site de squid]] | ||
+ | * [[http://wiki.squid-cache.org/ConfigExamples/Intercept/LinuxDnat|proxy transparent]] | ||
+ | * [[http://www.sput.nl/software/squid33.html]] | ||
+ | * [[http://www.linux-france.org/prj/edu/archinet/systeme/ch40s02.html]] | ||
====Prérequis==== | ====Prérequis==== | ||
Ligne 25: | Ligne 36: | ||
=== Configuration d'iptables (NAT) === | === Configuration d'iptables (NAT) === | ||
+ | <note important> | ||
+ | Si vous avez suivi "iptables:un pare-feu pour une passerelle" et installer [[atelier:chantier:iptables-un-pare-feu-pour-une-passerelle?&#le-script-de-la-passerelle|ce script]], passez directement au pre-requis [[utilisateurs:hypathie:tutos:proxy-transparent?&#table-de-routage|Table de routage]] | ||
+ | </note> | ||
* Pour faire les choses proprement on flush les tables concernées et on ajoute : | * Pour faire les choses proprement on flush les tables concernées et on ajoute : | ||
Ligne 41: | Ligne 54: | ||
iptables -t mangle -A PREROUTING -p tcp --dport 3128 -j DROP | iptables -t mangle -A PREROUTING -p tcp --dport 3128 -j DROP | ||
- | |||
iptables -t mangle -A PREROUTING -p tcp --dport 3129 -j DROP | iptables -t mangle -A PREROUTING -p tcp --dport 3129 -j DROP | ||
Ligne 50: | Ligne 62: | ||
<note> | <note> | ||
- | **Port 3128 et 3129 car j'utiliserai les deux ports.** | + | **Port 3129 pour transparent ; port 3128 pour le réseau local.** |
- | **Pour mangle**, une petite citation extrait du [[http://wiki.squid-cache.org/ConfigExamples/Intercept/LinuxDnat|site officiel de squid]] : | + | **Pour mangle**, une petite citation extrait du [[http://wiki.squid-cache.org/ConfigExamples/Intercept/LinuxDnat#iptables_configuration]] : |
Due to the NAT security vulnerabilities it is also a very good idea | Due to the NAT security vulnerabilities it is also a very good idea | ||
Ligne 61: | Ligne 73: | ||
</note> | </note> | ||
- | ===On conserve nos règles iptables pour le proxy=== | + | * On sauvegarde les règles iptables et on les restaure avec /etc/network/interfaces |
- | + | ||
- | * Méthode 1 : on sauvegarde les règles iptables et on les restaure avec /etc/network/interfaces | + | |
<code root> | <code root> | ||
iptables-save > /etc/iptables.squid | iptables-save > /etc/iptables.squid | ||
echo "post-up iptables-restore < /etc/iptables.squid" >> /etc/network/interfaces</code> | echo "post-up iptables-restore < /etc/iptables.squid" >> /etc/network/interfaces</code> | ||
- | * Méthode 2 : on utilise le script /etc/rc.local | ||
- | <code root>vim /etc/rc.local</code> | ||
- | <code>/sbin/iptables -t nat -F | ||
- | /sbin/iptables -t nat -X | + | ===Table de routage=== |
- | + | ||
- | /sbin/iptables -t mangle -F | + | |
- | + | ||
- | /sbin/iptables -t mangle -X | + | |
- | + | ||
- | /sbin/iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE | + | |
- | + | ||
- | /sbin/iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.0.1:3129 | + | |
- | + | ||
- | /sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3129 | + | |
- | + | ||
- | /sbin/iptables -t mangle -A PREROUTING -p tcp --dport 3128 -j DROP | + | |
- | + | ||
- | /sbin/iptables -t mangle -A PREROUTING -p tcp --dport 3129 -j DROP | + | |
+ | * Éditer le fichier /etc/rc.local | ||
+ | <code root>vim /etc/rc.local</code> | ||
+ | <code> | ||
/sbin/route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.1 dev eth0 | /sbin/route add -net 192.168.0.0 netmask 255.255.255.0 gw 192.168.0.1 dev eth0 | ||
Ligne 93: | Ligne 89: | ||
exit 0</code> | exit 0</code> | ||
- | + | <note>On peut aussi créer un script init.d (update-rc.d) pour sauvegarder les règles de routage.\\ Ou encore préciser dans /etc/network/interfaces la route pour chaque interface.\\ La méthode ci-dessus n'a d'intérêt que dans le cas où l'IP est attribuée par DHCP au niveau de /etc/network/interfaces.</note> | |
- | Pour activer le script : | + | |
- | <code root> | + | |
- | /sbin/route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth1</code> | + | |
- | + | ||
* Côté client l'adresse IP du proxy squid3 comme route par défaut : | * Côté client l'adresse IP du proxy squid3 comme route par défaut : | ||
+ | Par exmple : | ||
<code root>route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0 | <code root>route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1 dev eth0 | ||
</code> | </code> | ||
Ligne 145: | Ligne 137: | ||
====Vérifier le proxy ==== | ====Vérifier le proxy ==== | ||
- | ===Bloquer tous le trafic du LAN === | + | |
+ | === Bloquer tout le trafic du LAN === | ||
Dans un premier temps on va simplement vérifier que le proxy bloque le trafic du LAN, pour ce faire on ajoute seulement une acl pour le réseau de la passerelle 192.168.0.0/24 et on prévient squid qu'il sert de proxy transparent ''http_port 3129 transparent'' : | Dans un premier temps on va simplement vérifier que le proxy bloque le trafic du LAN, pour ce faire on ajoute seulement une acl pour le réseau de la passerelle 192.168.0.0/24 et on prévient squid qu'il sert de proxy transparent ''http_port 3129 transparent'' : | ||
* **On édite /etc/squid3/squid.conf** | * **On édite /etc/squid3/squid.conf** |