我正在运行一个在端口 59380 上运行服务的服务器。有超过 1000 台机器连接到该服务。一旦我需要重新启动服务,所有这些机器都会同时连接。
这造成了一些麻烦,因为我在 kern.log 中看到了这个日志条目
TCP: Possible SYN flooding on port 59380. *Sending cookies*. Check SNMP counters.
因此我将 sysctl 更改net.ipv4.tcp_syncookies
为 0,因为端点无法正确处理 tcp syn cookies。最后,我重启了网络,以便在生产环境中获取更改
下次我必须重新启动服务时,将记录以下消息
TCP: Possible SYN flooding on port 59380. *Dropping request*. Check SNMP counters.
我如何才能阻止系统执行此类操作?所有必要的对策均由 iptables 完成...
答案1
不要禁用 SYN cookies,这是非常适得其反的,正如你所看到的,主机不是回退到 cookie 套接字,而是简单地丢弃它。
正确的做法是调整net.ipv4.tcp_max_syn_backlog
到足够高的值,以便不再发出此警告。
您可能还需要调整 TCP 堆栈以获得更多内存——粗略地在 Google 上搜索“Linux TCP Tuning”应该可以满足您的需要。