Меня поразил SYN-поток, который почти уничтожил сетевой стек моего балансировщика нагрузки ipvs (80 Кб пакетов / сек). Процесс "ksoftirqd" занял 100% ЦП, машина практически не отвечала из сети. Tcpdump обнаружил такие пакеты:
21:24:40.994920 IP 193.41.136.187.17435 > MY-IP.80: Flags [S], seq 3387555840, win 0, length 0
21:24:40.994940 IP 46.159.109.102.63863 > MY-IP.80: Flags [S], seq 4209573888, win 0, length 0
21:24:40.994961 IP 32.199.104.48.30346 > MY-IP.80: Flags [S], seq 512360448, win 0, length 0
Я не смог найти в потоке общих знаменателей, кроме нулевого размера окна, который, возможно, является ловушкой для фильтрации.
Спасибо!
Итак, узким местом оказалось отслеживание iptables rules / nat / connection.
-A INPUT -p tcp -m tcp --tcp-flags SYN -m u32 --u32 0x6&0xff=0x6&&0x4&0x1fff=0x0&&0x0>>0x16&0x3c@0xc&0xffff=0x0 -j DROP
При таком первом правиле нагрузка на машину значительно упала.