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

Kosa Attila zsiga at kosaek.hu
2009. Júl. 30., Cs, 12:26:06 CEST


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.

-- 
		Udvozlettel
				    Zsiga


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