Re:iptablesaprerouting

d.petr na post.cz d.petr na post.cz
Pátek Listopad 3 16:54:47 CET 2006


> ------------ Původní zpráva ------------
> Od: Petr Cacka <cacka na domica.cz>
> ----------------------------------------
> > > 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

No, myslim, ze neni nutne psat mac dvakrat, mozna bych ...:
0) vytvorte si ten Vas retez "povoleniklienti" v -t nat
1) Nejdriv vyberte zname mac (klidne vsechny protokoly) a prevedte je do "povoleniklienti", tam je pak vyridime
iptables -t nat -A PREROUTING -i eth0 -m mac --mac-source 00:00:00:00:00 -j povoleniklienti
Zbydou neznami klienti.
2) Neznamym presmerujem port 80 na webserver
iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j DNAT --to-destination 192.168.1.1:80
pripadna pravidla pro dalsi protokoly/porty neznamych uzivatelu by se psala zde, nejspis vse DROP
3) Do "povoleniklienti" zapsat pravidlo pro presmerovani na proxy; zde jsou uz jen povoleni, tedy nemusime znovu kontrolovat mac, presmerujem je vsechny naraz
iptables -t nat -A povoleniklienti -p tcp --dport 80 -j REDIRECT --to-port 3128
ted se muzou napsat dalsi pravidla pro jine protokoly/porty znamych klientu, pripadne vse ACCEPT

(doufam, ze to takto jde)

Petr


Další informace o konferenci Linux