取消激活SYN泛滥机制

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

这在我看到kern.log中的日志条目时遇到了一些麻烦

TCP: Possible SYN flooding on port 59380. *Sending cookies*. Check SNMP counters. 

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

下一次,我不得不重新启动服务,下面的消息被logging下来

 TCP: Possible SYN flooding on port 59380. *Dropping request*. Check SNMP counters. 

我怎样才能防止系统做这样的行动? 所有必要的反措施都由iptables完成…

不要禁用SYN cookie,这是非常不利的反作用,正如你所看到的,而不是主机回落到cookie'd套接字,它只是放弃它。

正确的做法是调整net.ipv4.tcp_max_syn_backlog到一个足够高的值,它不会再触发这个警告。

你可能也想调整一般的TCP堆栈以获得更多的内存 – 粗略的谷歌“Linux TCP Tuning”应该提供你所需要的。

另请阅读以下页面。 也许应该再检查一次。

http://lwn.net/Articles/277146/

https://lkml.org/lkml/2008/2/5/167