IPFW pravidlo fwd

Zbyněk Burget zburget at burgnet.cz
Sun Apr 26 19:41:19 CEST 2009


Zdravim konferenci,

zacal jsem experimentovat s pravidelm fwd ve snaze rozbehnout tak 
trivialni vec, jako transparentni proxy. Nejak se z toho nemuzu vyhrabat 
a samzrejme, ze mi to nefunguje.

Stav je nasledujici:
kernel je prelozeny s IPFIREWALL_FORWARD
v IPFW pravidlech mam provoz zorhozeny na ctyri vetve podle iface a 
smeru toku packetu - recv iif; recv oif; xmit iif; xmit oif
squid mam nakonfigurovany (snad) dobre
v ipfw mam pravidlo, kterym si forwarduju profoz na port 80 na 
127.0.0.1:2138
Testovano je to za provozu na routeru, pres ktery tecou trvale radove 
desitky mbit.
A ted moje ruzna zjisteni.

1) Pokud dam forwardovaci pravidlo do vetve recv iif, k forwardnuti 
packetu sice dojde, ale na squid uz forwardnuty packet nedorazi (v 
zadnem logu squida neni zadny zaznam) - jen se zapocitaji sva packety na 
forwardovacim pravidle.

2) Forwardovaci pravidlo umistene do vetve xmit oif:
a) Pokud je pravidlo urcene pouze pro provoz z meho testovaciho stroje, 
pak vse funguje, jak ma.
ipfw add XXXX fwd 127.0.0.1,3128 all from A.B.C.D to any 80

2b) Pokud je pravidlo napsano obecne, dostanu ve webovem prohlizeci 
hlasku o Access denied (?!) Tento stav nemuzu nechavat nijak dlouho 
(typicky pouze par sekund nekdy v noci), protoze je testovano za ostreho 
provozu.
ipfw add XXXX fwd 127.0.0.1,3128 all from any to anz 80

a k tomu jeste jdna vec, co mne prekvapila - na iface lo0 v pripade [1] 
nevidim vubec zadny provoz. V pripade [2a] vidim pouze dns provoz jdouci 
pravdepodobne od squida (dns server je na stejnem stroji jako firewall 
se squidem). V pripade [2b] vidim na lo0 kvanta packetu jdoucich od 
webovych serveru z internetu pro stroje ve vnitrni siti (nechapu, kudy 
se tam zatoulaly) a opet dns provoz.

Zkousel jsem jeste jednu variantu, ze jsem si webovy provoz od 
testovaciho stroje v ipfw "skipnul" do samostatneho kousicku, kde jsem 
pak pouzil vseobecne forwardovaci pravidlo. To fungovalo spolehlive. 
Takze mne zarazi, kde je vlastne rozdil mezi tim pravidlem pro jeden 
jediny testovaci stroj a pravidlem vseobecnym. V jednom pripade suquid 
funguju, v druhem pripade squid tvdri, ze access denied. Pritom neni 
nikde zadny jiny ozdil, pouze v tom, ze jednou je ve forwardovacim 
pravidle uvedena konkretni IP, resp. "any".

Napada nekoho, cim to muze byt? Co zasadniho jsem kde prehlidl? Uz mne 
nenapada, jakym nastrojem bych mohl zjistit, kudy se mi vlastne ty 
packety potuluji - kdyz tcpdump na lo0 zaryte mlci, pripadne ukazuje 
prooz, ktery bych tam ani omylem necekal.


Zbynek


P.S.:
...a pak jeste jeden dotaz do budoucna, az mi to konecne bude fungovat - 
s jakym redirectorem mate dobre zkusenosti? Budu potrebovat pro urcite 
IP adresy redirectnout webovy provoz na nejakou vyhruznou stranku 
(zakaznikum majicim zavirovany PC a rozesilajicim SPAM, pripadne 
zakaznikum neplaticim apod.). Uplne uzasne by bylo, kdyby se dalo i 
nastavit, ze se nejaka "vyhruzna" stranka ma zobrazovat treba jednou 
denne / kazdou hodinu / kazdych 5 min. / trvale
...jednodussi je se zeptat, nez objevovat ameriku. Na tento dotaz staci 
jednoslovna odpoved (jmeno programu)



More information about the Users-l mailing list