LinuxForum.Fans
Тема

Iptables не пропускает большие пакеты

Автор: FreeMan42 12 сообщений 3617 просмотров
#126458

Всем здраствуйте.
Возникла проблема с Mandriva 2009 (установлен на HP Proliant).
iptables не пропускает пакеты размером больше 52-27 байт (52 - точно пропускает,57 - точно нет). в tcpdump-е видно что эти пакеты проходят на интерфейс, но не пересылаются (не натятся) на второй интерфейс (нат не работает как изнути наружу так и обратно). в айпитаблес маркировал пакеты, и видно что эти пакеты приходит в таблицу mangle PREROUTING и ни где эти пакеты больше не появляются. (логи от tcpdump-а и iptables ниже).
iptables правила пустые, лишь одно правило : iptables -t nat -I POSTROUTING -s 192.168.102.0/24 -o eth0 -j SNAT --to-source 192.168.100.8 и все цепочки по умолчанию ACCEPT (это факт!!!).
echo 1 > /proc/sys/net/ipv4/ip_forward конечно не забыл! опыт в настройке iptables есть.

Пробовал менять ядро (по умолчанию стоит 2.6.27) : 2.6.37 не запускается система (ругается на Could not resolve resume device (/dev/cciss/c0d0o5)), 2.6.27.5 - система запустилась, но эффект тотже!

уже незнаю куда копать. Помогите пожалуйста!!!

Лог tcpdump-а до mail.pisem.net на 110 порт:

Показать
[console]15:19:47.540130 IP (tos 0x0, ttl 128, id 9555, offset 0, flags [DF], proto TCP (6), length 52) 192.168.102.21.53058 > 62.141.94.172.110: S, cksum 0x665f (correct), 1959321664:1959321664(0) win 8192 <mss 1460,nop,wscale 8,nop,nop,sackOK>
15:19:47.540398 IP (tos 0x0, ttl 127, id 9555, offset 0, flags [DF], proto TCP (6), length 52) 192.168.100.8.53058 > 62.141.94.172.110: S, cksum 0x686c (correct), 1959321664:1959321664(0) win 8192 <mss 1460,nop,wscale 8,nop,nop,sackOK>
15:19:47.612975 IP (tos 0x0, ttl 59, id 0, offset 0, flags [DF], proto TCP (6), length 52) 62.141.94.172.110 > 192.168.100.8.53058: S, cksum 0x8689 (correct), 3339723842:3339723842(0) ack 1959321665 win 5840 <mss 1380,nop,nop,sackOK,nop,wscale 7>
15:19:47.613079 IP (tos 0x0, ttl 58, id 0, offset 0, flags [DF], proto TCP (6), length 52) 62.141.94.172.110 > 192.168.102.21.53058: S, cksum 0x847c (correct), 3339723842:3339723842(0) ack 1959321665 win 5840 <mss 1380,nop,nop,sackOK,nop,wscale 7>
15:19:47.613188 IP (tos 0x0, ttl 128, id 9557, offset 0, flags [DF], proto TCP (6), length 40) 192.168.102.21.53058 > 62.141.94.172.110: ., cksum 0xdacc (correct), 1:1(0) ack 1 win 258
15:19:47.613252 IP (tos 0x0, ttl 127, id 9557, offset 0, flags [DF], proto TCP (6), length 40) 192.168.100.8.53058 > 62.141.94.172.110: ., cksum 0xdcd9 (correct), 1:1(0) ack 1 win 258
15:19:47.846067 IP (tos 0x0, ttl 59, id 61026, offset 0, flags [DF], proto TCP (6), length 57) 62.141.94.172.110 > 192.168.100.8.53058: P, cksum 0x4e4a (correct), 1:18(17) ack 1 win 46
15:19:49.588139 IP (tos 0x0, ttl 128, id 9571, offset 0, flags [DF], proto TCP (6), length 40) 192.168.102.21.53058 > 62.141.94.172.110: F, cksum 0xdacb (correct), 1:1(0) ack 1 win 258
15:19:49.588243 IP (tos 0x0, ttl 127, id 9571, offset 0, flags [DF], proto TCP (6), length 40) 192.168.100.8.53058 > 62.141.94.172.110: F, cksum 0xdcd8 (correct), 1:1(0) ack 1 win 258
15:19:49.659362 IP (tos 0x0, ttl 59, id 61027, offset 0, flags [DF], proto TCP (6), length 40) 62.141.94.172.110 > 192.168.100.8.53058: ., cksum 0xdd9b (correct), 18:18(0) ack 2 win 46
15:19:49.659430 IP (tos 0x0, ttl 58, id 61027, offset 0, flags [DF], proto TCP (6), length 40) 62.141.94.172.110 > 192.168.102.21.53058: ., cksum 0xdb8e (correct), 18:18(0) ack 2 win 46
15:19:49.673195 IP (tos 0x0, ttl 59, id 61028, offset 0, flags [DF], proto TCP (6), length 40) 62.141.94.172.110 > 192.168.100.8.53058: F, cksum 0xdd9a (correct), 18:18(0) ack 2 win 46
15:19:49.673258 IP (tos 0x0, ttl 58, id 61028, offset 0, flags [DF], proto TCP (6), length 40) 62.141.94.172.110 > 192.168.102.21.53058: F, cksum 0xdb8d (correct), 18:18(0) ack 2 win 46
15:19:49.673354 IP (tos 0x0, ttl 128, id 9574, offset 0, flags [DF], proto TCP (6), length 40) 192.168.102.21.53058 > 62.141.94.172.110: ., cksum 0xdacb (correct), 2:2(0) ack 1 win 258
15:19:49.673414 IP (tos 0x0, ttl 127, id 9574, offset 0, flags [DF], proto TCP (6), length 40) 192.168.100.8.53058 > 62.141.94.172.110: ., cksum 0xdcd8 (correct), 2:2(0) ack 1 win 258[/console]

Лог iptables на такие правила:

text
iptables -t mangle -I PREROUTING 1 -s 192.168.102.21 -d 62.141.94.172 -p tcp --dport 110 --syn -j CONNMARK --set-mark 1 
iptables -t mangle -I PREROUTING 2 -m connmark --mark 1 -j LOG --log-prefix "IPT-man-pre " 
iptables -t nat -I PREROUTING 1 -m connmark --mark 1 -j LOG --log-prefix "IPT-nat-pre " 
iptables -t mangle -I FORWARD 1 -m connmark --mark 1 -j LOG --log-prefix "IPT-man-forw " 
iptables -I FORWARD 1 -m connmark --mark 1 -j LOG --log-prefix "IPT-filt-forw " 
iptables -t mangle -I POSTROUTING 1 -m connmark --mark 1 -j LOG --log-prefix "IPT-man-post " 
iptables -t nat -I POSTROUTING 1 -m connmark --mark 1 -j LOG --log-prefix "IPT-nat-post " 
Показать
[console]Feb 1 14:38:34 MERCURY kernel: IPT-man-pre IN=eth1 OUT= MAC=00:24:81:f9:22:e5:6c:f0:49:58:3e:47:08:00 SRC=192.168.102.21 DST=62.141.94.172 LEN=52 TOS=0x00 PREC=0x00 TTL=128 ID=21669 DF PROTO=TCP SPT=53803 DPT=110 WINDOW=8192 RES=0x00 SYN URGP=0
Feb 1 14:38:34 MERCURY kernel: IPT-nat-pre IN=eth1 OUT= MAC=00:24:81:f9:22:e5:6c:f0:49:58:3e:47:08:00 SRC=192.168.102.21 DST=62.141.94.172 LEN=52 TOS=0x00 PREC=0x00 TTL=128 ID=21669 DF PROTO=TCP SPT=53803 DPT=110 WINDOW=8192 RES=0x00 SYN URGP=0
Feb 1 14:38:34 MERCURY kernel: IPT-man-forw IN=eth1 OUT=eth0 SRC=192.168.102.21 DST=62.141.94.172 LEN=52 TOS=0x00 PREC=0x00 TTL=127 ID=21669 DF PROTO=TCP SPT=53803 DPT=110 WINDOW=8192 RES=0x00 SYN URGP=0
Feb 1 14:38:34 MERCURY kernel: IPT-filt-forw IN=eth1 OUT=eth0 SRC=192.168.102.21 DST=62.141.94.172 LEN=52 TOS=0x00 PREC=0x00 TTL=127 ID=21669 DF PROTO=TCP SPT=53803 DPT=110 WINDOW=8192 RES=0x00 SYN URGP=0
Feb 1 14:38:34 MERCURY kernel: IPT-man-post IN= OUT=eth0 SRC=192.168.102.21 DST=62.141.94.172 LEN=52 TOS=0x00 PREC=0x00 TTL=127 ID=21669 DF PROTO=TCP SPT=53803 DPT=110 WINDOW=8192 RES=0x00 SYN URGP=0
Feb 1 14:38:34 MERCURY kernel: IPT-nat-post IN= OUT=eth0 SRC=192.168.102.21 DST=62.141.94.172 LEN=52 TOS=0x00 PREC=0x00 TTL=127 ID=21669 DF PROTO=TCP SPT=53803 DPT=110 WINDOW=8192 RES=0x00 SYN URGP=0
Feb 1 14:38:34 MERCURY kernel: IPT-man-pre IN=eth0 OUT= MAC=00:24:81:f9:22:e4:00:12:7f:8c:0c:b0:08:00 SRC=62.141.94.172 DST=192.168.100.8 LEN=52 TOS=0x00 PREC=0x00 TTL=59 ID=0 DF PROTO=TCP SPT=110 DPT=53803 WINDOW=5840 RES=0x00 ACK SYN URGP=0
Feb 1 14:38:34 MERCURY kernel: IPT-man-forw IN=eth0 OUT=eth1 SRC=62.141.94.172 DST=192.168.102.21 LEN=52 TOS=0x00 PREC=0x00 TTL=58 ID=0 DF PROTO=TCP SPT=110 DPT=53803 WINDOW=5840 RES=0x00 ACK SYN URGP=0
Feb 1 14:38:34 MERCURY kernel: IPT-filt-forw IN=eth0 OUT=eth1 SRC=62.141.94.172 DST=192.168.102.21 LEN=52 TOS=0x00 PREC=0x00 TTL=58 ID=0 DF PROTO=TCP SPT=110 DPT=53803 WINDOW=5840 RES=0x00 ACK SYN URGP=0
Feb 1 14:38:34 MERCURY kernel: IPT-man-post IN= OUT=eth1 SRC=62.141.94.172 DST=192.168.102.21 LEN=52 TOS=0x00 PREC=0x00 TTL=58 ID=0 DF PROTO=TCP SPT=110 DPT=53803 WINDOW=5840 RES=0x00 ACK SYN URGP=0
Feb 1 14:38:34 MERCURY kernel: IPT-man-pre IN=eth1 OUT= MAC=00:24:81:f9:22:e5:6c:f0:49:58:3e:47:08:00 SRC=192.168.102.21 DST=62.141.94.172 LEN=40 TOS=0x00 PREC=0x00 TTL=128 ID=21670 DF PROTO=TCP SPT=53803 DPT=110 WINDOW=258 RES=0x00 ACK URGP=0
Feb 1 14:38:34 MERCURY kernel: IPT-man-forw IN=eth1 OUT=eth0 SRC=192.168.102.21 DST=62.141.94.172 LEN=40 TOS=0x00 PREC=0x00 TTL=127 ID=21670 DF PROTO=TCP SPT=53803 DPT=110 WINDOW=258 RES=0x00 ACK URGP=0
Feb 1 14:38:34 MERCURY kernel: IPT-filt-forw IN=eth1 OUT=eth0 SRC=192.168.102.21 DST=62.141.94.172 LEN=40 TOS=0x00 PREC=0x00 TTL=127 ID=21670 DF PROTO=TCP SPT=53803 DPT=110 WINDOW=258 RES=0x00 ACK URGP=0
Feb 1 14:38:34 MERCURY kernel: IPT-man-post IN= OUT=eth0 SRC=192.168.102.21 DST=62.141.94.172 LEN=40 TOS=0x00 PREC=0x00 TTL=127 ID=21670 DF PROTO=TCP SPT=53803 DPT=110 WINDOW=258 RES=0x00 ACK URGP=0
Feb 1 14:38:34 MERCURY kernel: IPT-man-pre IN=eth0 OUT= MAC=00:24:81:f9:22:e4:00:12:7f:8c:0c:b0:08:00 SRC=62.141.94.172 DST=192.168.100.8 LEN=57 TOS=0x00 PREC=0x00 TTL=59 ID=63886 DF PROTO=TCP SPT=110 DPT=53803 WINDOW=46 RES=0x00 ACK PSH URGP=0
Feb 1 14:38:36 MERCURY kernel: IPT-man-pre IN=eth1 OUT= MAC=00:24:81:f9:22:e5:6c:f0:49:58:3e:47:08:00 SRC=192.168.102.21 DST=62.141.94.172 LEN=40 TOS=0x00 PREC=0x00 TTL=128 ID=21708 DF PROTO=TCP SPT=53803 DPT=110 WINDOW=258 RES=0x00 ACK FIN URGP=0
Feb 1 14:38:36 MERCURY kernel: IPT-man-forw IN=eth1 OUT=eth0 SRC=192.168.102.21 DST=62.141.94.172 LEN=40 TOS=0x00 PREC=0x00 TTL=127 ID=21708 DF PROTO=TCP SPT=53803 DPT=110 WINDOW=258 RES=0x00 ACK FIN URGP=0
Feb 1 14:38:36 MERCURY kernel: IPT-filt-forw IN=eth1 OUT=eth0 SRC=192.168.102.21 DST=62.141.94.172 LEN=40 TOS=0x00 PREC=0x00 TTL=127 ID=21708 DF PROTO=TCP SPT=53803 DPT=110 WINDOW=258 RES=0x00 ACK FIN URGP=0
Feb 1 14:38:36 MERCURY kernel: IPT-man-post IN= OUT=eth0 SRC=192.168.102.21 DST=62.141.94.172 LEN=40 TOS=0x00 PREC=0x00 TTL=127 ID=21708 DF PROTO=TCP SPT=53803 DPT=110 WINDOW=258 RES=0x00 ACK FIN URGP=0
Feb 1 14:38:36 MERCURY kernel: IPT-man-pre IN=eth0 OUT= MAC=00:24:81:f9:22:e4:00:12:7f:8c:0c:b0:08:00 SRC=62.141.94.172 DST=192.168.100.8 LEN=40 TOS=0x00 PREC=0x00 TTL=59 ID=63887 DF PROTO=TCP SPT=110 DPT=53803 WINDOW=46 RES=0x00 ACK URGP=0
Feb 1 14:38:36 MERCURY kernel: IPT-man-forw IN=eth0 OUT=eth1 SRC=62.141.94.172 DST=192.168.102.21 LEN=40 TOS=0x00 PREC=0x00 TTL=58 ID=63887 DF PROTO=TCP SPT=110 DPT=53803 WINDOW=46 RES=0x00 ACK URGP=0
Feb 1 14:38:36 MERCURY kernel: IPT-filt-forw IN=eth0 OUT=eth1 SRC=62.141.94.172 DST=192.168.102.21 LEN=40 TOS=0x00 PREC=0x00 TTL=58 ID=63887 DF PROTO=TCP SPT=110 DPT=53803 WINDOW=46 RES=0x00 ACK URGP=0
Feb 1 14:38:36 MERCURY kernel: IPT-man-post IN= OUT=eth1 SRC=62.141.94.172 DST=192.168.102.21 LEN=40 TOS=0x00 PREC=0x00 TTL=58 ID=63887 DF PROTO=TCP SPT=110 DPT=53803 WINDOW=46 RES=0x00 ACK URGP=0
Feb 1 14:38:36 MERCURY kernel: IPT-man-pre IN=eth0 OUT= MAC=00:24:81:f9:22:e4:00:12:7f:8c:0c:b0:08:00 SRC=62.141.94.172 DST=192.168.100.8 LEN=40 TOS=0x00 PREC=0x00 TTL=59 ID=63888 DF PROTO=TCP SPT=110 DPT=53803 WINDOW=46 RES=0x00 ACK FIN URGP=0
Feb 1 14:38:36 MERCURY kernel: IPT-man-forw IN=eth0 OUT=eth1 SRC=62.141.94.172 DST=192.168.102.21 LEN=40 TOS=0x00 PREC=0x00 TTL=58 ID=63888 DF PROTO=TCP SPT=110 DPT=53803 WINDOW=46 RES=0x00 ACK FIN URGP=0
Feb 1 14:38:36 MERCURY kernel: IPT-filt-forw IN=eth0 OUT=eth1 SRC=62.141.94.172 DST=192.168.102.21 LEN=40 TOS=0x00 PREC=0x00 TTL=58 ID=63888 DF PROTO=TCP SPT=110 DPT=53803 WINDOW=46 RES=0x00 ACK FIN URGP=0
Feb 1 14:38:36 MERCURY kernel: IPT-man-post IN= OUT=eth1 SRC=62.141.94.172 DST=192.168.102.21 LEN=40 TOS=0x00 PREC=0x00 TTL=58 ID=63888 DF PROTO=TCP SPT=110 DPT=53803 WINDOW=46 RES=0x00 ACK FIN URGP=0
Feb 1 14:38:36 MERCURY kernel: IPT-man-pre IN=eth1 OUT= MAC=00:24:81:f9:22:e5:6c:f0:49:58:3e:47:08:00 SRC=192.168.102.21 DST=62.141.94.172 LEN=40 TOS=0x00 PREC=0x00 TTL=128 ID=21710 DF PROTO=TCP SPT=53803 DPT=110 WINDOW=258 RES=0x00 ACK URGP=0
Feb 1 14:38:36 MERCURY kernel: IPT-man-forw IN=eth1 OUT=eth0 SRC=192.168.102.21 DST=62.141.94.172 LEN=40 TOS=0x00 PREC=0x00 TTL=127 ID=21710 DF PROTO=TCP SPT=53803 DPT=110 WINDOW=258 RES=0x00 ACK URGP=0
Feb 1 14:38:36 MERCURY kernel: IPT-filt-forw IN=eth1 OUT=eth0 SRC=192.168.102.21 DST=62.141.94.172 LEN=40 TOS=0x00 PREC=0x00 TTL=127 ID=21710 DF PROTO=TCP SPT=53803 DPT=110 WINDOW=258 RES=0x00 ACK URGP=0
Feb 1 14:38:36 MERCURY kernel: IPT-man-post IN= OUT=eth0 SRC=192.168.102.21 DST=62.141.94.172 LEN=40 TOS=0x00 PREC=0x00 TTL=127 ID=21710 DF PROTO=TCP SPT=53803 DPT=110 WINDOW=258 RES=0x00 ACK URGP=0
Feb 1 14:38:37 MERCURY kernel: IPT-man-pre IN=eth0 OUT= MAC=00:24:81:f9:22:e4:00:12:7f:8c:0c:b0:08:00 SRC=62.141.94.172 DST=192.168.100.8 LEN=57 TOS=0x00 PREC=0x00 TTL=59 ID=63889 DF PROTO=TCP SPT=110 DPT=53803 WINDOW=46 RES=0x00 ACK PSH URGP=0[/console]
#126477
man iptables написал:

...........
length — позволяет использовать в качестве критерия размер пакета. Проверятся размер пакета протокола транспортного уровня (TCP, UDP, SCTP, DCCP и т. д.) или, иначе говоря, размер пакета протокола сетевого уровня (IP, IPv6) за вычетом размера заголовков сетевого уровня. Данный критерий имеет единственный параметр.........
........

тыц - далее по тексту критерии length и length2 ...

#126489
gramozeka написал:
далее по тексту критерии length и length2

и что мне это даст? ведь у меня нет ни каких ограничений на размер пакета в правилах!!
может чего я не понял, объясните.

#126552

Вот что еще обнаружил в логе:

text
kernel: eth0: received packets cannot be forwarded while LRO is enabled

это может влиять? это как можно вылечить? пробовал : ethtool -K eth0 lro off в ответ получил: no offloading settings changed

#126615

нет особого желания играть в телепатов и изучать странные логи , тем более 2009 Мандривой уже давно не пользуюсь wink
лучше покажите для начала вывод :
[console]
root@host # iptables -L
[/console]
а там можно будет думать кто воду мутит , таки да , насколько я помню Мандрива любит пользоваться различными файрволами , какой-то наверняка включен , надо бы посмотреть в настройки оного , в общем давайте по порядку ..

#126670

А может мандрива не лучший вариант? wink

#126692
XliN написал:
А может мандрива не лучший вариант? wink

вам самому решать какой вариант лучший , тут есть целая тема - тыц

#126697
gramozeka написал:
вам самому решать какой вариант лучший , тут есть целая тема - Какой дистрибутив нужно выбирать новичкам?

Вопрос был для ТС.

#126727
XliN написал:

Вопрос был для ТС.

извини , туплю . :(

#126798
gramozeka написал:
покажите для начала вывод

правила как я и описал в первом посте!!
как я писал в моем предыдущем посте, виноват не iptables, а как я понял драйвер сетевухи...
если вы не верите первому моему сообщению, то не ужели вы поверите остальным!!

XliN написал:
А может мандрива не лучший вариант

вопрос не в выборе операционки, а в лечении проблемы.

ОФФТОП: блин такое ощущение что вы пишите радо того чтобы постов набить, полезных ответов дали ровно 0,5 (в первом ответе, и то не по теме а ради моего повышения знания).

#126895

Покаж полный конфиг iptables а то не пойму для чего стоко -m connmark --mark 1.
На счёт дистрибутива да безразницы какой он там.

#126921

все решил я задачу!!!
пересобрал ядро с CONFIG_IGB_LRO=n и все заработало!

Войдите или зарегистрируйтесь, чтобы ответить.