[zorp-hu] tproxy 4.1.0 + iptables szabalyok + zorp 3.1

Balazs Scheidler bazsi at balabit.hu
2009. Júl. 31., P, 11:10:41 CEST


On Thu, 2009-07-30 at 12:26 +0200, Kosa Attila wrote:
> On Thu, Jul 30, 2009 at 08:18:05AM +0000, Balazs Scheidler wrote:
> > On Tue, 2009-07-28 at 16:56 +0200, Kosa Attila wrote:
> > > Valaki meg tudna szanni, es megmondana, hogy melyik doksit
> > > kellene elolvasnom ahhoz, hogy legalabb nyomokban megprobalhassam
> > > megerteni az uj mukodest? A tproxy.txt fajlt hiaba olvasom, nem
> > > igazan ertem hogyan is kellene mukodnie...
> > > 
> > > Ezt meg ertem is...
> > > # ip rule add fwmark 1 lookup 100
> > > De ezt mar nem annyira. Miert 0.0.0.0/0 es miert "lo"?
> > > # ip route add local 0.0.0.0/0 dev lo table 100
> > 
> > ez kenyszeriti ki, hogy az 1-el megmarkolt csomagok a lokalis IP
> > stackhez menjenek IP cimtol fuggetlenul.
> > 
> > Amugy itt a "local" a kulcsszo, ld. route type-ok:
> > 
> > ip route help:
> > 
> > TYPE := [ unicast | local | broadcast | multicast | throw |
> >           unreachable | prohibit | blackhole | nat ]
> > 
> > a local azt jelenti, hogy a lokalis stacknek menjenek a csomagok.
> 
> A dummy interfeszre meg szukseg van?
> 
> > > Ez megjeloli a DIVERT chain forgalmat. De miert van ketto is
> > > belole a doksiban?
> > > # iptables -t mangle -A DIVERT -j MARK --set-xmark 0x1/0xffffffff
> > > # iptables -t mangle -A DIVERT -j MARK --set-mark 1
> > 
> > ha a mark-ot bitenkent akarod allokalni (aminek azert lehet ertelme),
> > akkor az elsot hasznalod.
> > 
> > ha a teljes markot csak erre hasznalod, akkor eleg a masodik.
> 
> Egyelore annak is orulnek, ha mukodne, ezert a masodikat
> hasznalom.
> 
> > > - Hogyan jut el a forgalom a zorp-hoz? Ugyanis a fentieket
> > >   megcsinalva nem kerul fel...
> > 
> > a Zorpnak hallgatoznia kell a fenti porton, es be kell billentenie az
> > IP_TRANSPARENT setsockopt-ot. strace-ben nezd meg, hogy ezt megteszi-e.
> 
> Nem latszik a strace-ben ilyesmi (lasd lentebb).
> 
> > milyen zorp verzio? most megneztem a 3.1.15c-ben benne van a szukseges
> > kod:
> 
> 3.1.15 volt, de most atalltam a 3.1.15c verziora.
> 
> Ezt csinaltam eddig:
> # ip rule add fwmark 1 lookup 100
> # ip route add local 0.0.0.0/0 dev lo table 100
> 
> A csomagszuro konfig a kovetkezo:
> *mangle
> :PREROUTING ACCEPT [0:0]
> :POSTROUTING ACCEPT [0:0]
> :INPUT ACCEPT [0:0]
> :FORWARD ACCEPT [0:0]
> :OUTPUT ACCEPT [0:0]
> :DIVERT -
> -A FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu
> -A PREROUTING -p tcp -m socket -j DIVERT
> -A PREROUTING -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 50080
> -A DIVERT -j MARK --set-mark 1
> -A DIVERT -j ACCEPT
> COMMIT
> 
> Igy inditottam:
> # strace -f -o /tmp/zorp.log /etc/init.d/zorp start
> # grep -i transpa /tmp/zorp.log
> # grep -i setsock /tmp/zorp.log
> 2396  setsockopt(10, SOL_IP, 0x2c0a /* IP_??? */, "\0\0\0\0\0\0\0\3\0\0\0\0"..., 12) = -1 ENOPROTOOPT (Protocol not available)
> 2396  setsockopt(10, SOL_IP, 0x2c0a /* IP_??? */, "\0\0\0\0\0\0\0\2\0\0\0\0"..., 12) = -1 ENOPROTOOPT (Protocol not available)
> 2396  setsockopt(12, SOL_SOCKET, SO_REUSEADDR, [1], 4) = 0
> 
> Az latszik, hogy a zorp listenel a megfelelo interfeszen, azonban
> a csomagok nem kerulnek fel hozza.
> 

ez az uzenet startup-kor jon -v6 -os loglevelen. mi jon ki itt:

  z_log(NULL, CORE_DEBUG, 6, "System dependant init; sysdep_tproxy='%s'", sysdep_tproxy_str[sysdep_tproxy]);


-- 
Bazsi



További információk a(z) zorp-hu levelezőlistáról