我被一个SYN洪水所击中,几乎杀死了我的ipvs负载平衡器(80K数据包/秒)的networking堆栈。 “ksoftirqd”进程占用了100%的CPU,机器几乎没有响应networking。 一个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
除了零窗口大小之外,我无法在洪水中find共同的分母,这可能是过滤的一个钩子。
谢谢!
好吧,所以瓶颈竟然是iptables规则/ nat /连接跟踪。
-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
作为第一条规则,机器上的负载显着下降。