LINUX.ORG.RU
ФорумAdmin

ip_conntrack чего-то не отслеживает соединения


0

1

Возникла тут с одним сервером в интернете непонятная хрень. То работает, то не работает. Стал разбираться - вот что обнаружил (ext - нечто в интернете, sender - мой внешний адрес):

tcpdump:

12:13:07.281813 IP sender.37204 > ext.80: Flags [S], seq 3498249459, win 14600, options [mss 1460,sackOK,TS val 1137522808 ecr 0,nop,wscale 6], length 0
12:13:07.313561 IP ext.80 > sender.37204: Flags [S.], seq 3498249459, ack 2078335779, win 0, options [mss 1460,sackOK,TS val 1137522808 ecr 0,nop,wscale 6], length 0
12:13:08.281596 IP sender.37204 > ext.80: Flags [S], seq 3498249459, win 14600, options [mss 1460,sackOK,TS val 1137523058 ecr 0,nop,wscale 6], length 0
12:13:08.313841 IP ext.80 > sender.37204: Flags [S.], seq 402585084, ack 3498249460, win 8192, options [mss 1460,sackOK,TS val 258445418 ecr 1137523058], length 0
12:13:10.285606 IP sender.37204 > ext.80: Flags [S], seq 3498249459, win 14600, options [mss 1460,sackOK,TS val 1137523559 ecr 0,nop,wscale 6], length 0
12:13:11.328515 IP ext.80 > sender.37204: Flags [S.], seq 402585084, ack 3498249460, win 8192, options [mss 1460,sackOK,TS val 258445719 ecr 1137523058], length 0

При этом в /proc/net/nf_conntrack

ipv4     2 tcp      6 109 SYN_SENT src=10.1.1.1 dst=ext sport=37204 dport=80 [UNREPLIED] src=ext dst=sender sport=80 dport=37204 mark=0 zone=0 use=2
ACKи, которые видны в tcpdump при этом попадают в input вместо forward.

При этом через какое-то время вдруг оно само ничинает работать (адреса не меняются). Что-то я в тупике. Debian 7.2

★★

Последнее исправление: Davyd (всего исправлений: 2)

Включил в conntrack логгирование INVALID пакетов, получил вот такие ошибки. Что это может быть?

Jan 10 18:27:59 esrv kernel: [100672.125432] nf_ct_tcp: ACK is under the lower bound (possible overly delayed ACK) IN= OUT= SRC=ext DST=sender LEN=60 TOS=0x00 PREC=0x00 TTL=114 ID=41624 DF PROTO=TCP SPT=80 DPT=38764 SEQ=377965168 ACK=2958242624 WINDOW=0 RES=0x00 ACK SYN URGP=0 OPT (02040
5B40402080A017EE8E80000000001030304)
Jan 10 18:28:00 esrv kernel: [100673.124813] nf_ct_tcp: ACK is over the upper bound (ACKed data not seen yet) IN= OUT= SRC=ext DST=sender LEN=60 TOS=0x00 PREC=0x00 TTL=114 ID=41625 DF PROTO=TCP SPT=80 DPT=38764 SEQ=377965168 ACK=1291301696 WINDOW=0 RES=0x00 ACK SYN URGP=0 OPT(020405B404
02080A017EE9E20000000001030304)

Davyd ★★
() автор топика
Последнее исправление: Davyd (всего исправлений: 1)
Ответ на: комментарий от post-factum

Нет, не помогло. Правда выдало еще и такое

SEQ is under the lower bound (already ACKed data retransmitted)
вкупе с ошибками выше. Вроде как немного облегчает ситуацию включение nf_conntrack_tcp_be_liberal, но по моему все равно иногда отваливается.

Davyd ★★
() автор топика
Последнее исправление: Davyd (всего исправлений: 1)
Ответ на: комментарий от Davyd

Вобщем дальнейшее тестирование показало, что аналогичным обарзом с этим сервером ведут себя все мои линукс-роутеры, при том из моей же сети через виндовый роутер все хорошо. У меня два провайдера, поведение через них идентично.

Но при этом из другой сети (тоже моей) с такого же линукса замечательно это дело работает.

Из всех различий - в нерабочей сети все линуксы стоят в виртуалках HyperV 2008R2, а в той сети, где оно работает - 2012. Вероятно причина в этом...

Davyd ★★
() автор топика
Последнее исправление: Davyd (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.