停用 SYN 泛洪机制

mla*_*aug 3 tcp

我正在运行一个在端口 59380 上运行服务的服务器。有超过 1000 台机器连接到该服务。一旦我需要重新启动服务,所有这些机器都会同时连接。

这造成了一些麻烦,因为我在 kern.log 中看到了该日志条目

TCP: Possible SYN flooding on port 59380. *Sending cookies*.  Check SNMP counters.
Run Code Online (Sandbox Code Playgroud)

所以我将 sysctl 更改net.ipv4.tcp_syncookies为 0,因为端点无法正确处理 tcp syn cookie。最后我重新启动了我的网络以获取生产中的更改

下次我不得不重新启动服务时,记录了以下消息

TCP: Possible SYN flooding on port 59380. *Dropping request*.  Check SNMP counters.
Run Code Online (Sandbox Code Playgroud)

如何防止系统执行此类操作?所有必要的反制措施都由 iptables 完成...

Oli*_*pro 19

不要禁用 SYN cookie,这会适得其反,正如您所看到的,主机不会回退到 cookie 的套接字,而是简单地丢弃它。

正确的做法是调整net.ipv4.tcp_max_syn_backlog到足够高的值,使其不再触发此警告。

通常,您可能还想调整 TCP 堆栈以获得更多内存 - 一个粗略的“Linux TCP Tuning”谷歌应该可以提供您需要的东西。