iptables a prerouting

Libor Chocholaty libor_ml1 na mts.cz
Pátek Listopad 3 11:59:33 CET 2006


Petr Cacka wrote:
> Potřeboval bych nějak nastavit tuto funkcionalitu přes iptables:
> Na routeru běží squid jako transparentní proxy, na portu 80 poslouchá Apache. Mám nastaveno v iptables v PREROUTING přesměrování na port 3128 (=proxy)
>
> IPTABLES -t nat -A PREROUTING -p tcp eth0 --dport 80 -j REDIRECT --to-port 3128 (1)
>
> Chci ale provádět filtraci uživatelů na základě jejich MAC adresy (wifi síť) a neznámé MAC adresy přesměrovat na lokální webserver, kdy by byla stránka s informacemi o možnosti připojení.
> Tj. potřebuji v PREROUTINGu přesměrovávat pakety vyhovující pravidlu na squida, nevyhovující na webserver. A to je kámen úrazu, nevím jestli jde udělat dvě přesměrování v rámci PREROUTINGu.
>
> Udělal jsem si řetěz "povoleno"
> IPTABLES -t nat -N povoleniklienti (2)
> IPTABLES -t nat -A PREROUTING -i eth0 -j povoleniklienti (3) (jen z vnitrni site =eth0)
>
> + naplnil jsem řetěz povolení klienti
> IPTABLES -t nat -A povoleniklienti -i eth0 -m mac --mac-source 00:00:00:00:00:00 -j ACCEPT (4)(pro každého registrovaného klienta)
>
> Teď můžu přesměrovávat na webserver
> IPTABELS -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:80 (5) (přesměrování na webserver)
>
> Tj. paket prochází nejdříve řetězcem povoleniklienti (2), pokud nevyhoví (neznámá MAC adresa) tak se provede přesměrování na webserver, pravidlo (5). Jenže jak zajistit, aby paket co vyhoví byl přesměrován na proxy (squida), tj. aby se provedlo pravidlo (1) ?
>
> Protože paket, který vyhoví v řetězu povoleniklienti, tak opouští PREROUTING a už se zde nevyhodnocuje = tj.nemůžu provést jeho přesměrování na proxy=přijdu o transparentní proxy.
>
> Předpokládám, že dělám něco úplně blbě, takže berte výše zmíněný popis jen jako můj současný výsledek.
> Otázka je: Jak provádět filtraci MAC adres tak, aby zadané byly přesměrovány na proxy a nezadané na určitou adresu? (samozřejmě jen ty na port 80, ostatní zahodit) 
>   
Uplne blbe ne. Rekl bych, ze pomuze misto ACCEPT pouzit v 
povoleniklienti RETURN

Libor



Další informace o konferenci Linux