Назад | Перейти на главную страницу

Прокси-сервис отвечает только на некоторые IP-адреса (другие отстойные SYN_RECV)

У меня есть сервер, использующий прокси-сервис (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, которые были исключены до обращения к интернет-провайдеру.