TCP RST
Есть локалка, все ходят в Интернет через сервер, к которому подключён ADSL-модем. У пользователей периодически разрывается связь в ICQ, Jabber и т.д. Провёл эксперимент: на сервере (пусть это будет компьютер "A") и на компьютере вне сети (пусть будет компьютер "B"), к которому подключаюсь через Интернет, запустил сохранение при помощи tcpdump всех пакетов ssh-соединений между этими двумя компьютерами, запустил на одном из компьютеров в локалке две копии PuTTY и подключился в каждой к тому компьютеру в Интернете. Через некоторое время одно из соединений разорвалось. Анализ пакетов показал, что на компьютере "B" наблюдалась следующая картина: при отправке пакета на компьютер "A" якобы от него приходил пакет с флагом RST, но на компьютере "A" такого пакета в логе нет! То есть "A" его не отправлял, а "B" его получил. Кто может вмешиваться в TCP-соединение и зачем? Чтобы убедиться, что дело не в обычных разрывах связи я и запустил одновременно два соединения - когда одно из них разорвалось, второе продолжало работать.
Читал, что какой-то американский провайдер применял отправку пакетов RST чтобы разорвать соединения тех, кто качает с пиринговых сетей (в целях уменьшения нагрузки на канал), но я не слышал, чтобы местные делали то же самое, да и здесь не пиринговые сети, хотя входящие соединения есть: почта, сайт, DNS и т.д. Если дело не в провайдере, то значит проблема в модеме (D-Link 2500U), но какая? Одно дело если бы модем зависал и т.д., и совсем другое - это лишние пакеты. PPP-сессия не разрывалась (что подтвердил провайдер), в логах модема пусто (запустил с уровнем Debugging).
На всякий случай привожу дамп (адреса заменены, так же к сожалению на удалённом компьютере неправильно идут часы, то есть время неверное, но пакеты можно сопоставить по номерам последовательностей, выделены две строчки в логе удалённого компьютера "B", которым нет соответствующих строк в логе сервера - "A", в логе сервера в качестве IP указан не внешний адрес, который на модеме, а адрес соответствующего интерфейса сервера - на модеме NAT):
На удалённом компьютере:
11:18:42.961038 IP 217.77.XX.XXX.22 > 78.36.XX.XXX.1998: P 819531552:819531668(116) ack 1012550036 win 8576
11:18:43.177148 IP 217.77.XX.XXX.22 > 78.36.XX.XXX.1995: P 802237672:802237788(116) ack 2213217286 win 8576
11:18:43.193430 IP 78.36.XX.XXX.1998 > 217.77.XX.XXX.22: . ack 819531668 win 64612
11:18:43.395057 IP 78.36.XX.XXX.1995 > 217.77.XX.XXX.22: . ack 802237788 win 64960
11:18:43.961167 IP 217.77.XX.XXX.22 > 78.36.XX.XXX.1998: P 819531668:819531784(116) ack 1012550036 win 8576
11:18:43.996441 IP 78.36.XX.XXX.1998 > 217.77.XX.XXX.22: R 1012550036:1012550036(0) win 0
11:18:44.177302 IP 217.77.XX.XXX.22 > 78.36.XX.XXX.1995: P 802237788:802237904(116) ack 2213217286 win 8576
11:18:44.400700 IP 78.36.XX.XXX.1995 > 217.77.XX.XXX.22: . ack 802237904 win 64844
11:18:45.177433 IP 217.77.XX.XXX.22 > 78.36.XX.XXX.1995: P 802237904:802238020(116) ack 2213217286 win 8576
11:18:45.405335 IP 78.36.XX.XXX.1995 > 217.77.XX.XXX.22: . ack 802238020 win 64728
11:18:46.177077 IP 217.77.XX.XXX.22 > 78.36.XX.XXX.1995: P 802238020:802238136(116) ack 2213217286 win 8576
11:18:46.311407 IP 78.36.XX.XXX.1995 > 217.77.XX.XXX.22: . ack 802238136 win 64612
11:18:47.177715 IP 217.77.XX.XXX.22 > 78.36.XX.XXX.1995: P 802238136:802238252(116) ack 2213217286 win 8576
11:18:47.317045 IP 78.36.XX.XXX.1995 > 217.77.XX.XXX.22: . ack 802238252 win 64496
11:18:48.177361 IP 217.77.XX.XXX.22 > 78.36.XX.XXX.1995: P 802238252:802238368(116) ack 2213217286 win 8576
11:18:48.323311 IP 78.36.XX.XXX.1995 > 217.77.XX.XXX.22: . ack 802238368 win 64380
11:18:48.493829 IP 78.36.XX.XXX.1998 > 217.77.XX.XXX.22: P 1012550036:1012550088(52) ack 819531668 win 64612
11:18:48.493864 IP 217.77.XX.XXX.22 > 78.36.XX.XXX.1998: R 819531668:819531668(0) win 0
11:18:49.177692 IP 217.77.XX.XXX.22 > 78.36.XX.XXX.1995: P 802238368:802238484(116) ack 2213217286 win 8576
11:18:49.328835 IP 78.36.XX.XXX.1995 > 217.77.XX.XXX.22: . ack 802238484 win 64264
На сервере в локальной сети, к которому подключён ADSL-модем:
15:10:09.527211 IP 217.77.XX.XXX.22 > 192.168.16.2.1998: P 819531552:819531668(116) ack 1012550036 win 8576
15:10:09.726871 IP 192.168.16.2.1998 > 217.77.XX.XXX.22: . ack 819531668 win 64612
15:10:09.743581 IP 217.77.XX.XXX.22 > 192.168.16.2.1995: P 802237672:802237788(116) ack 2213217286 win 8576
15:10:09.928122 IP 192.168.16.2.1995 > 217.77.XX.XXX.22: . ack 802237788 win 64960
15:10:10.743847 IP 217.77.XX.XXX.22 > 192.168.16.2.1995: P 802237788:802237904(116) ack 2213217286 win 8576
15:10:10.934012 IP 192.168.16.2.1995 > 217.77.XX.XXX.22: . ack 802237904 win 64844
15:10:11.743740 IP 217.77.XX.XXX.22 > 192.168.16.2.1995: P 802237904:802238020(116) ack 2213217286 win 8576
15:10:11.939775 IP 192.168.16.2.1995 > 217.77.XX.XXX.22: . ack 802238020 win 64728
15:10:12.743381 IP 217.77.XX.XXX.22 > 192.168.16.2.1995: P 802238020:802238136(116) ack 2213217286 win 8576
15:10:12.845114 IP 192.168.16.2.1995 > 217.77.XX.XXX.22: . ack 802238136 win 64612
15:10:13.744399 IP 217.77.XX.XXX.22 > 192.168.16.2.1995: P 802238136:802238252(116) ack 2213217286 win 8576
15:10:13.850987 IP 192.168.16.2.1995 > 217.77.XX.XXX.22: . ack 802238252 win 64496
15:10:14.744416 IP 217.77.XX.XXX.22 > 192.168.16.2.1995: P 802238252:802238368(116) ack 2213217286 win 8576
15:10:14.856874 IP 192.168.16.2.1995 > 217.77.XX.XXX.22: . ack 802238368 win 64380
15:10:15.026030 IP 192.168.16.2.1998 > 217.77.XX.XXX.22: P 1012550036:1012550088(52) ack 819531668 win 64612
15:10:15.059724 IP 217.77.XX.XXX.22 > 192.168.16.2.1998: R 819531668:819531668(0) win 0
15:10:15.744309 IP 217.77.XX.XXX.22 > 192.168.16.2.1995: P 802238368:802238484(116) ack 2213217286 win 8576
15:10:15.862762 IP 192.168.16.2.1995 > 217.77.XX.XXX.22: . ack 802238484 win 64264
