iptables redirect

Fórumok

Üdv,
Az alábbi problémára keresek megoldást:
Routerboard RB500-on (mipsel) futó debian sarge, transzparens proxy. Gyártói kernel patch, ipt_REDIRECT.c érintetlen. Néhány nap után nem megy a redirect rule, hiába törlöm és írom be újra, csak a reboot után működik megint. Iptables egyébiránt kifogástalanul teszi a dolgát tovább, nat stb. működik.
Valami tipp hogy hol kutakodjak?

Hozzászólások

Elsőkörben logold a csomagokat a REDIRECT target előtt (ugyanazon feltételekkel).

ok. Van több verziója, a régi az, amit a squid szeret, van tproxy4, ami a www.balabit.hu oldalról letölthetsz és van még egy, amely a 4-es "új", módosított változata, az meg http://people.netfilter.org/hidden/tproxy/ könyvtárban van. Az utóbbi kettő közt az az alapvető különbség, hogy a TPROXY target az újban a mangle táblában van és socket match kell hozzá, a "régebbi" meg a tproxy táblát használja és tproxy match kell a filter táblában. Többé-kevésbé mindkettőhöz van man oldal.

Ha valamiért nem menne, akkor szólj, megnézem :)

Squid verziója? Nem elképzelhető, hogy ott a gond?
It doesn't matter if you like my song as long as you can hear me sing

Pontosan mit jelent az, hogy "nem megy"?

Nincs esetleg tele a conntrack tábla?

logokban semmi ip checksum hibára utaló jel, az eth beepitett VIA Rhine, egyebiránt kifogástalan...
tcpdump és a redirect-el megegyező -j LOG rule is látja:
Oct 9 13:21:02 cgh kernel: IN=eth1 OUT= MAC=00:0c:42:04:83:21:00:0b:6a:4e:e0:1f:08:00 SRC=192.168.10.32 DST=217.20.131.2 LEN=48 TOS=0x00 PREC=0x00 TTL=128 ID=50387 DF PROTO=TCP SPT=1421 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0

13:26:30.702175 IP (tos 0x0, ttl 128, id 52239, offset 0, flags [DF], proto: TCP (6), length: 48) 192.168.10.32.1429 > ldir-loopback.index.hu.www: S, cksum 0x04c6 (correct), 4177025180:4177025180(0) win 65535
13:26:30.702603 IP (tos 0x0, ttl 64, id 0, offset 0, flags [DF], proto: TCP (6), length: 40) ldir-loopback.index.hu.www > 192.168.10.32.1429: R, cksum 0x3176 (correct), 0:0(0) ack 4177025181 win 0

eközben a squid logban semmi jele a kérésnek...

iptables:

Oct 9 14:16:37 cgh kernel: IN=eth1 OUT= MAC=00:0c:42:04:83:21:00:0b:6a:4e:e0:1f:08:00 SRC=192.168.10.32 DST=217.20.131.2 LEN=48 TOS=0x00 PREC=0x00 TTL=128 ID=63981 DF PROTO=TCP SPT=1478 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0

conntrack:

tcp 6 7 CLOSE src=192.168.10.32 dst=217.20.131.2 sport=1478 dport=80 src=192.168.10.253 dst=192.168.10.32 sport=3207 dport=1478 use=1 mark=0 bytes=264

még valami felmerült bennem: mivel csak 32M ram van a gépben,
nem lehet hogy összefüggés van relatíve a kevés memória és a
hibajelenség között?
conntrack hashsize modosítása? a conntrack max-ot is alaptalanul
nagyra veszi (36864) a hash mérete jelenleg:
cgh:~# cat /proc/sys/net/ipv4/netfilter/ip_conntrack_buckets
9216

A kapcsolat minden paramétere rögzített:

odafele: kliens IP, source port -> szerver, 80-as port
visszafele: tűzfal, squid port -> kliens, source port

Ha ugyanez a kliens ugyanezzel a forrásporttal ugyanehhez a szerverhez akar kapcsolódni, akkor amíg a conntrack táblában benne van az előző kapcsolat, az nem megy. Akármekkora a tábla, a fönti négyes ütközik.

Ha a táblából törlődik az előző kapcsolat, akkor a kliens eléri a szervert (vagy nem ez a helyzet?? Vagy valóban nincs a táblában ütköző bejegyzés?).

A timeout beállítás csak új kapcsolatokra fog élni.

A 2.4.31 biztosan nem tud vele mit kezdeni, a 2.6-os sorozat kezeli az újranyitott kapcsolatokat (bár ott is van egy bug, de a javítása holnap már kinn lesz).

bocs ha nem volt eddig egyértelmű: nincs ütköző bejegyzés, a webet a reboot után x ideig (jellemzően néhány napig) elérik a transzparens proxy-n keresztül a gépek...
port gond sincs, mindegy egyes kérésnél szépen növekszik a kliens forrásportja, a timeout után pedig eltűnik a conntrack táblából a bejegyzés