У меня есть сервер, использующий прокси-сервис (WAF и т. Д.), Который пересылает пакеты на мой сервер.
Я вижу установленные SSL-соединения со всех прокси netstat -an
а остальные застряли в SYN_RECV:
tcp 0 0 192.168.102.11:443 185.93.230.20:64966 SYN_RECV
tcp 0 0 192.168.102.11:443 192.88.135.20:8306 SYN_RECV
tcp 0 0 192.168.102.11:443 66.248.202.20:10750 SYN_RECV
tcp 0 0 192.168.102.11:443 185.93.230.20:2213 SYN_RECV
tcp 0 0 192.168.102.11:443 66.248.202.20:7494 SYN_RECV
tcp 0 0 192.168.102.11:443 185.93.231.20:32752 ESTABLISHED
tcp 0 0 192.168.102.11:443 185.93.231.20:31910 ESTABLISHED
Я вижу пробки tcpdump port 443 and '(tcp-syn|tcp-ack)!=0' -nn
:
Для 185.93.231.20.2139
20:36:35.263777 IP 192.168.102.11.443 > 185.93.231.20.2139: Flags [FP.], seq 203642186:203642217, ack 1968471817, win 258, options [nop,nop,TS val 32827456 ecr 876705214], length 31
20:36:36.901357 IP 192.168.102.11.443 > 185.93.231.20.2137: Flags [P.], seq 418165034:418165065, ack 2875697257, win 258, options [nop,nop,TS val 32829093 ecr 876704135], length 31
Для 185.93.230.20
20:36:49.098560 IP 185.93.230.20.20721 > 192.168.102.11.443: Flags [S], seq 2855805773, win 29200, options [mss 1460,sackOK,TS val 882921029 ecr 0,nop,wscale 9], length 0
20:36:49.098638 IP 192.168.102.11.443 > 185.93.230.20.20721: Flags [S.], seq 268496949, ack 2855805774, win 28960, options [mss 1460,sackOK,TS val 32841290 ecr 882921029,nop,wscale 7], length 0
Для 66.248.202.20
:
20:37:02.042048 IP 66.248.202.20.49557 > 192.168.102.11.443: Flags [S], seq 3837436386, win 29200, options [mss 1460,sackOK,TS val 791596242 ecr 0,nop,wscale 9], length 0
20:37:02.042116 IP 192.168.102.11.443 > 66.248.202.20.49557: Flags [S.], seq 2339555392, ack 3837436387, win 28960, options [mss 1460,sackOK,TS val 32854234 ecr 791596242,nop,wscale 7], length 0
Для 192.88.135.20
:
20:36:39.595087 IP 185.93.228.20.23354 > 192.168.102.11.443: Flags [S], seq 1334433323, win 29200, options [mss 1460,sackOK,TS val 274977072 ecr 0,nop,wscale 9], length 0
20:36:39.595120 IP 192.168.102.11.443 > 185.93.228.20.23354: Flags [S.], seq 1203016390, ack 1334433324, win 28960, options [mss 1460,sackOK,TS val 32831787 ecr 274970056,nop,wscale 7], length
Но только трафик из 185.93.231.20
авторизуется в домлогах:
185.93.231.20 - - [22/May/2020:19:55:37 +0400] "GET /blog/video-gallery/ HTTP/1.1" 200 12716 "https://www.example.com/blog/publications/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0" 747893
185.93.231.20 - - [22/May/2020:19:55:39 +0400] "GET /wp-content/uploads/2020/02/Thumbnail72.jpg HTTP/1.1" 200 181941 "https://www.example.com/blog/video-gallery/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0" 1283052
185.93.231.20 - - [22/May/2020:19:55:39 +0400] "GET /wp-content/uploads/2020/02/Thumbnail68.jpg HTTP/1.1" 200 180934 "https://www.example.com/blog/video-gallery/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:76.0) Gecko/20100101 Firefox/76.0" 952373
Есть идеи, что проверить дальше? Я отключил все правила брандмауэра и убедился, что NAT правильно работает между WAN и хостом (входящим и исходящим) - никаких изменений конфигурации не произошло, это просто перестало работать.
Оказалось, что это проблема с асимметричной маршрутизацией, поскольку пакеты могли достигать сервера, но сеть не могла их вернуть (из-за сбоя маршрутизации).
netstat
с участием частичные соединения застрял в SYN_RECV
и tcpdump
с этими флаги возвращается:
[S]
входящий с удаленного сервера к нам на SYN
установить соединение[S.]
ответ от нас на удаленный сервер SYN+ACK
установить запрос на соединениеЭто было идентифицировано на сервере с помощью следующих SYN
запрос с удаленного сервера:
20:36:49.098560 IP 185.93.230.20.20721 > 192.168.102.11.443: Flags [S], seq 2855805773, win 29200, options [mss 1460,sackOK,TS val 882921029 ecr 0,nop,wscale 9], length 0
Что переводит сокет в полуоткрытое состояние:
tcp 0 0 192.168.102.11:443 185.93.230.20:64966 SYN_RECV
И тогда мы отвечаем (обратите внимание на флаги S.
смысл SYN+ACK
):
20:36:49.098638 IP 192.168.102.11.443 > 185.93.230.20.20721: Flags [S.], seq 268496949, ack 2855805774, win 28960, options [mss 1460,sackOK,TS val 32841290 ecr 882921029,nop,wscale 7], length 0
Но это никогда не достигает удаленного сервера, поэтому он, в свою очередь, никогда не отвечает дальнейшими пакетами, которые завершат рукопожатие и установят сокет в ESTABLISHED
.
Это было решено поставщиком Интернет-услуг и соответствующими контрагентами для решения проблем маршрутизации.
Это также могло указывать на то, что брандмауэры отбрасывают пакеты или неправильно настроены правила NAT, которые были исключены до обращения к интернет-провайдеру.