Portál AbcLinuxu, 14. května 2025 01:17

Dotaz: Předávání paketů mezi PREROUTING mangle a nat

26.6.2007 16:10 dustin | skóre: 63 | blog: dustin
Předávání paketů mezi PREROUTING mangle a nat
Přečteno: 459×
Odpovědět | Admin
Zdravím, znovu poprosím místní guru o radu.

Dle např. http://www.faqs.org/docs/iptables/traversingoftables.html by zřejmě mělo probíhat zpracování vstupních paketů tak, že nejdříve projedou PREROUTING chainem tabulky mangle a poté PREROUTING chainem tabulky nat.

Testuji příkazem
telnet -b 192.168.101.254 81.0.237.25 25
kde 192.168.101.254 je eth1, za kterým je NATující ADSL modem.

Protože se mi nedostávají pakety do INPUTu (testovací telnet čeká na odpověď), zkusil jsem pár logovacích příkazů. Pakety přicházejí na rozhraní eth1, jde o odpovědi od smtp serveru na netu.

iptables -v -t mangle -L PREROUTING
Chain PREROUTING (policy ACCEPT 1108K packets, 556M bytes)
 pkts bytes target     prot opt in     out     source               destination         
   54  3634 LOG        0    --  eth1   any     anywhere             anywhere            LOG level debug prefix `logy mangle top PREROUTING: ' 
iptables -v -t nat -L PREROUTING
Chain PREROUTING (policy ACCEPT 1705K packets, 148M bytes)
 pkts bytes target     prot opt in     out     source               destination         
   29  1400 LOG        0    --  eth1   any     anywhere             anywhere            LOG level debug prefix `logy nat top PREROUTING: ' 
    0     0 DNAT       tcp  --  any    any     anywhere             xxxxxxxxxx     tcp dpt:www to:192.168.1.20:8380 
    0     0 DNAT       tcp  --  any    any     anywhere             xxxxxxxxxx     tcp dpt:www to:192.168.1.20:8380 
    0     0 DNAT       tcp  --  any    any     anywhere             xxxxxxxxxx     tcp dpt:www to:192.168.1.20:8380 
    0     0 DNAT       tcp  --  any    any     anywhere             xxxxxxxxxx     tcp dpt:www to:192.168.1.20:8380
xxxxxxxxxx je IP adresa druhého rozhraní, které vede přímo do netu (eth2).

V mangle je pouze onen LOG, v natu je LOG jako první příkaz. Očekával bych, že každý vstupní paket bude zalogován oběma logy. Bohužel všechny návratové pakety z telnetího pokusu o spojení jsou logovány pouze manglem:
Jun 26 15:58:06 server kernel: logy mangle top PREROUTING: IN=eth1 OUT= MAC=00:00:b4:a8:ba:98:00:01:38:62:c1:b7:08:00 SRC=81.0.237.25 DST=192.168.101.254 LEN=60 TOS=0x00 PREC=0x00 TTL=58 ID=0 DF PROTO=TCP SPT=25 DPT=54346 WINDOW=5792 RES=0x00 ACK SYN URGP=0 
Jun 26 15:58:09 server kernel: logy mangle top PREROUTING: IN=eth1 OUT= MAC=00:00:b4:a8:ba:98:00:01:38:62:c1:b7:08:00 SRC=81.0.237.25 DST=192.168.101.254 LEN=60 TOS=0x00 PREC=0x00 TTL=58 ID=0 DF PROTO=TCP SPT=25 DPT=54346 WINDOW=5792 RES=0x00 ACK SYN URGP=0 
Pakety na eth1 přicházejí, výstup tcpdumpu:
tcpdump -vv  -n -i eth1 port 25
tcpdump: listening on eth1, link-type EN10MB (Ethernet), capture size 96 bytes
15:59:05.501682 IP (tos 0x10, ttl  64, id 38072, offset 0, flags [DF], proto: TCP (6), length: 60) 192.168.101.254.51244 > 81.0.237.25.25: S, cksum 0x1f96 (correct), 1821827697:1821827697(0) win 5840 <mss 1460,sackOK,timestamp 516257481 0,nop,wscale 4>
15:59:05.516635 IP (tos 0x0, ttl  58, id 0, offset 0, flags [DF], proto: TCP (6), length: 60) 81.0.237.25.25 > 192.168.101.254.51244: S, cksum 0xdd33 (correct), 3109799953:3109799953(0) ack 1821827698 win 5792 <mss 1420,sackOK,timestamp 1065451964 516257481,nop,wscale 2>
15:59:08.500659 IP (tos 0x10, ttl  64, id 38073, offset 0, flags [DF], proto: TCP (6), length: 60) 192.168.101.254.51244 > 81.0.237.25.25: S, cksum 0x1ca8 (correct), 1821827697:1821827697(0) win 5840 <mss 1460,sackOK,timestamp 516258231 0,nop,wscale 4>
15:59:08.514515 IP (tos 0x0, ttl  58, id 0, offset 0, flags [DF], proto: TCP (6), length: 60) 81.0.237.25.25 > 192.168.101.254.51244: S, cksum 0xda46 (correct), 3109799953:3109799953(0) ack 1821827698 win 5792 <mss 1420,sackOK,timestamp 1065452713 516257481,nop,wscale 2>
15:59:09.193070 IP (tos 0x0, ttl  58, id 0, offset 0, flags [DF], proto: TCP (6), length: 60) 81.0.237.25.25 > 192.168.101.254.51244: S, cksum 0xd99c (correct), 3109799953:3109799953(0) ack 1821827698 win 5792 <mss 1420,sackOK,timestamp 1065452883 516257481,nop,wscale 2>
Zajímavé je, že některé jiné než testovací pakety projdou přes mangle to natu:
Jun 26 16:02:53 server kernel: logy mangle top PREROUTING: IN=eth1 OUT= MAC=00:00:b4:a8:ba:98:00:01:38:62:c1:b7:08:00 SRC=82.179.195.166 DST=192.168.101.254 LEN=44 TOS=0x00 PREC=0x00 TTL=112 ID=61464 DF PROTO=TCP SPT=62106 DPT=55151 WINDOW=20480 RES=0x00 SYN URGP=0 
Jun 26 16:02:53 server kernel: logy nat top PREROUTING: IN=eth1 OUT= MAC=00:00:b4:a8:ba:98:00:01:38:62:c1:b7:08:00 SRC=82.179.195.166 DST=192.168.101.254 LEN=44 TOS=0x00 PREC=0x00 TTL=112 ID=61464 DF PROTO=TCP SPT=62106 DPT=55151 WINDOW=20480 RES=0x00 SYN URGP=0 
Jun 26 16:02:56 server kernel: logy mangle top PREROUTING: IN=eth1 OUT= MAC=00:00:b4:a8:ba:98:00:01:38:62:c1:b7:08:00 SRC=82.179.195.166 DST=192.168.101.254 LEN=44 TOS=0x00 PREC=0x00 TTL=112 ID=61616 DF PROTO=TCP SPT=62106 DPT=55151 WINDOW=20480 RES=0x00 SYN URGP=0 
Jun 26 16:02:56 server kernel: logy nat top PREROUTING: IN=eth1 OUT= MAC=00:00:b4:a8:ba:98:00:01:38:62:c1:b7:08:00 SRC=82.179.195.166 DST=192.168.101.254 LEN=44 TOS=0x00 PREC=0x00 TTL=112 ID=61616 DF PROTO=TCP SPT=62106 DPT=55151 WINDOW=20480 RES=0x00 SYN URGP=0 
Předem díky za radu.
Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

26.6.2007 16:26 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Předávání paketů mezi PREROUTING mangle a nat
Odpovědět | | Sbalit | Link | Blokovat | Admin
Zajímavé je, že pakety, které projdou do natu, jsou úvodní packety spojení navazovaného zvenku (ADSL modem tento port forwarduje dovnitř, nic na něm ale stejně neposlouchá).
26.6.2007 18:00 Michal Kubeček | skóre: 72 | Luštěnice
Rozbalit Rozbalit vše Re: Předávání paketů mezi PREROUTING mangle a nat
To je v pořádku, je to stavový NAT, takže se stará pouze o "první" pakety, další jsou přeloženy podle stavové tabulky a pravidly tabulky nat zpracovávány nejsou.
26.6.2007 18:51 dustin | skóre: 63 | blog: dustin
Rozbalit Rozbalit vše Re: Předávání paketů mezi PREROUTING mangle a nat
Díky díky díky, to jsou přesně ty odpovědi, které usnadní život. Tož přesunu logování o krok dál.

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.