Lien: http://patchlog.com/general/how-to-set-up-an-anonymous-proxy-on-debian/
On peut demandé à “squid” de filtrer des elements du “header”, notamment pour être plus anonyme, ou simplement, ne pas montré qu'on passe par un proxy.
Donc, dans squid.conf
:
header_access Allow allow all header_access Authorization allow all header_access WWW-Authenticate allow all header_access Proxy-Authorization allow all header_access Proxy-Authenticate allow all header_access Cache-Control allow all header_access Content-Encoding allow all header_access Content-Length allow all header_access Content-Type allow all header_access Date allow all header_access Expires allow all header_access Host allow all header_access If-Modified-Since allow all header_access Last-Modified allow all header_access Location allow all header_access Pragma allow all header_access Accept allow all header_access Accept-Charset allow all header_access Accept-Encoding allow all header_access Accept-Language allow all header_access Content-Language allow all header_access Mime-Version allow all header_access Retry-After allow all header_access Title allow all header_access Connection allow all header_access Proxy-Connection allow all header_access Cookie allow all header_access Set-Cookie allow all # TJ -------- header_access User-Agent allow all # ----------- header_access All deny all
D'aprés mes tests, ca filtre au moins ça :
HTTP_VIA=>1.1 pirate.thierry-jaouen.local:3128 (squid/2.7.STABLE3) HTTP_X_FORWARDED_FOR=>192.168.0.127
(En clair: ca dit que j'utilise un proxy et devoille mon ip réel)
J'ai eu besoin de laisser passer le “User-Agent” …
On a le reseau suivant:
192.168.0.0/24 : le reseau local 192.168.0.254 : la gateway vers le net 192.168.0.62 : le poste client qui doit passer par le proxy 192.168.0.50 : la gateway du client proxy 192.168.0.53 : le proxy est là
Faire en sorte que sa gateway soit 192.168.0.50. Exemple: route add -net 0.0.0.0 netmask 0.0.0.0 gw 192.168.0.50
Ainsi, tout ce qui n'est pas connu du client, utilise la route vers 192.168.0.50.
# echo 200 proxy >> /etc/iproute2/rt_tables
(Nommer la table numéro 200 proxy)
# ip rule add fwmark 0x41 table proxy
(Si le paquet est marqué '0x41' regarder dans la table nommé proxy)
# ip rule ls 0: from all lookup local 32765: from all fwmark 0x41 lookup proxy 32766: from all lookup main 32767: from all lookup default # ip route add default via 192.168.0.53 dev eth0 table proxy # ip route flush cache
(La table proxy attribue un routage par defaut (a priori different de celui de l'hote bien sur))
Toutes les instructions ip ci-dessus doivent être regenérer a chaque reboot (c'est a injecter dans un script if-up…). Il faut attribuer mark en fonction des numéros possiblements deja attribué pour le QoS par exemple…
Ajouter le marquage des paquets dans IPTABLES:
/sbin/iptables -t mangle -A PREROUTING -i eth0 -p tcp -s 192.168.0.62 --dport www -j MARK --set-mark 0x41
Et c'est tout… Le marquage fait, le routage est fait sans plus passer dans aucune table… etrange d'ailleurs, j'ai du me tromper quelque part…)
Dans /etc/squid/squid.conf version 2.6 ou + (important)
... http_port 3128 transparent
... #http_access allow localhost #http_access allow all acl our_network src 192.168.0.62 http_access allow our_network ...
Evidement, ca pourrait être une classe d'IP: 192.168.0.0/24 par exemple
Au niveau d'IPTABLES:
/sbin/iptables -t nat -A PREROUTING -i eth0 -p tcp -s 192.168.0.0/24 -d ! 192.168.0.53 --dport www -j REDIRECT --to-port 3128
On redirige tout vers le port 3128, sauf ce qui est destiné au web interne…
Et voila!