iptablesaprerouting

Petr Cacka cacka na domica.cz
Pátek Listopad 3 14:57:58 CET 2006


-----Původní zpráva-----
From: d.petr na post.cz
Date: Fri, 03 Nov 2006 12:05:02 +0100
To: linux na linux.cz
Subject: Re:iptablesaprerouting

> > ------------ Původní zpráva ------------
> > Od: Petr Cacka <cacka na domica.cz>
> > ----------------------------------------
> > 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.
> 
> Snad nebudu uplne placat, ale ja bych asi zkusil v PREROUTING nejdrive vyresit vsechny ostatni, tj. ty, co neprichazeji z eth0 na port tcp 80.
> Zbyly by tedy zadosti z eth0 na tcp 80.
> Pak bych uvedl ta pravidla s mac (porad primo v PREROUTING; uz neni potreba opisovat eth0 a tcp a port) s presmerovanim na proxy, no a cely zbytek (tj. nezname mac z eth0 na tcp 80) bych presmeroval na apache (jestli je na stejnem PC, tak jen ACCEPT).
> Sedim ted na widlich a nemuzu si tu myslenku overit. Takze jestli to nejde (nebo jestli jsem nepochopil zadost), nemlatte me.
> 
> Petr
> 

zkusím tedy zda bude fungovat toto (trosku modifikovany vas postup, protoze potrebuji aby fw pustil vse od povolenych MAC adres, nejen co jde na port 80:
nejprve
IPTABLES -t nat -A PREROUTING -p tcp eth0 -m mac --mac-source 00:00:00:00:00 --dport 80 -j REDIRECT --to-port 3128   (1)
...
jednotlivě pro všechny "povolené" MAC adresy, tj vse povolene co je na port 80

pak postupně pravidla (2)+(3)+(4) abych povolil oprávněným uživatelům i všechny ostatní pakety (nejen ty co smeruji na port 80)
IPTABLES -t nat -N povoleniklienti (2)
IPTABLES -t nat -A PREROUTING -i eth0 -j povoleniklienti (3) (jen z vnitrni site =eth0)
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)

no a následně přesměrování (5) pro dotazy na port 80 pro neznámé MAC adresy a ještě je třeba nastavit defaultní politiku PREROUTINGu na DROP, aby vše ostatní zahazoval (např připojení na FTP pro neznámé MAC)
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)

Teoreticky :-) by to mělo fungovat, zkusím to večer

Jenom mě štve, že musím MAC adresy zapisovat 2x, poprvé v pravidlech (1) a pak v (4), ale když to bude fungovat... tak proč ne
PetrC



Další informace o konferenci Linux