[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: