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