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

Запросы к серверу ipvsadm зависают в состоянии SYN_RECV, прямые запросы к реальному серверу ОК

У меня IPVS настроен как:

$ ipvsadm --save
-A -t localhost:<port> -s rr
-a -t localhost:<port> -r <other_hostname>:<port> -m -w 1

Вроде работает:

$ ipvsadm
IP Virtual Server version 1.2.1 (size=4096)
Prot LocalAddress:Port Scheduler Flags
  -> RemoteAddress:Port           Forward Weight ActiveConn InActConn
TCP  localhost:<port> rr
  -> <other_hostname>:<port>         Masq    1      1          0

но это 1 ActiveConn зависает на неопределенное время, а прямой запрос отвечает быстро и, как и ожидалось:

$ curl https://<other_hostname>:<port>
<response>
$ curl https://localhost:<port>
[hangs]

В этом нет ничего плохого dmesg:

$ dmesg | grep IPVS
[ 4795.060820] IPVS: Registered protocols (TCP, UDP, SCTP, AH, ESP)
[ 4795.060932] IPVS: Connection hash table configured (size=4096, memory=64Kbytes)
[ 4795.061202] IPVS: ipvs loaded.
[ 4795.067663] IPVS: [rr] scheduler registered.

И ничего в journalctl из ipvsadm.

Кажется, застревает в состоянии SYN_RECV:

$ ipvsadm -lnc
IPVS connection entries
pro expire state       source             virtual            destination
TCP 00:56  SYN_RECV    127.0.0.1:58322    127.0.0.1:<port>   <other_ip>:<port>

Похоже, что это не проблема конфигурации реального сервера, так как это проблема всех режимов (маршрут, маскарад, туннель) и тестирования с httpbin.org а не мой собственный.


Что может привести к зависанию или сбою запроса к IPVS, когда лежащие в его основе «реальные серверы» отвечают нормально, и как его можно отладить?