Re: [LONG] proxy transparent : rediriger le port 80
Bonjour,
Le lundi 27 juin 2005 à 21:59 +0200, Jean-Louis Louër a écrit :
> Ce que je cherche à faire est bien un proxy transparent squid+squidguard
> sur un pc isolé. Quand je fais une recherche avec "iptables" "output"
> "redirect" "to-port", j'obtiens en général la syntaxe correspondant à
> une passerellei, du genre :
>
> # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT
> --to-port 3128
>
> J'ai essayé des syntaxes du genre :
> # iptables -A OUTPUT -o eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
REDIRECT n'est applicable que dans la table nat...
> mais évidemment ça ne marche pas. Si quelqu'un a une adresse avec des
> exemples pour ce cas de figure, ça m'aiderai bien.
Pour commencer, un petit schéma expliquant les relations entre les
tables et les chaînes "built-in" d'un firewall Netfilter :
*<--réseau
****************************|****************************
* ______|_____ *
* |mangle | *
* |PREROUTING| *
* ======|===== *
* |nat | *
* |PREROUTING| *
* ___________ ======|===== *
* |mangle |_________: routage :_________ *
* |INPUT | :..........: | *
* =====|===== | *
* |filter | | *
* |INPUT | _____|_____ *
* =====|===== |mangle | *
* | |FORWARD | *
* /////0///// =====|===== *
* /processus/ |filter | *
* / local / |FORWARD | *
* /////0///// =====|===== *
* .....|..... | *
* . routage . | *
* .....|..... | *
* _____|_____ | *
* |mangle | | *
* |OUTPUT | | *
* =====|===== | *
* |nat | | *
* |OUTPUT | | *
* =====|===== | *
* |filter |______________________________| *
* |OUTPUT | | *
* =========== _______|_____ *
* |mangle | *
* |POSTROUTING| *
* =======|===== *
* |nat | *
* |POSTROUTING| *
* =======|===== Une machine *
* | ----------- *
****************************|****************************
*<--réseau
- Le paquet ce déplace du haut vers le bas.
- Il faut distinguer les paquets générés en local et les paquets
seulement routés par le firewall.
- Pour faire un proxy transparent, il faut rediriger les paquets à
destination des ports 80/443/21/... sur le port 3128 de la machine
faisant tourner squid.
- Les choses peuvent être plus ou moins complexes selon que :
- le firewall est (ou non) également proxy
- on veut (ou non) surfer à partir du firewall et/ou du proxy
Selon les cas, il faudra jouer avec différentes chaînes iptables.
- Si tu as une machine routeur/firewall/proxy à partir de laquelle il
n'y a pas besoin de surfer, cela se passe dans nat/PREROUTING.
- Si tu veux en plus pouvoir surfer (et passer pas le proxy transparent)
à partir de cette machine routeur/firewall/proxy, il faut aussi toucher
à nat/OUTPUT (et différencier les paquets venant de squid de ceux de ton
browser ; voir mon mail précédent).
- Si le proxy n'est pas sur la même machine que le firewall, il faut
toucher à mangle/PREROUTING en plus.
- ...
En espérant que ça t'aide...
Bruno
--
DARWIN
P : Un jour, le chat sera une espèce tellement évoluée... que ses
griffes disparaîtront !
M : Et vous aurez des ongles...
P : Non ! Des magnum 45 !
Reply to: