Linux内核中的TCP SYN泛洪检测方法

当Linux内核检测到SYN Flooding时,它会logging如下消息:

possible SYN flooding on port 80. Sending cookies

有没有人知道内核用来检测这个的确切方法?

如果我正确地读取了sysctl / tcp内容,当未确认的syn请求的数量超过net.ipv4.tcp_max_syn_backlog的值时,它会被触发。 特别:

tcp_max_syn_backlogvariables告诉你的盒子有多lessSYN请求保留在内存中,我们还没有从三次握手中获得第三个数据包。 tcp_max_syn_backlogvariables被tcp_syncookiesvariables覆盖,需要打开该variables才能产生任何效果。 如果服务器在高峰时段出现过载,您可能需要稍微增加此值。

我认为这很简单的原因是来自tcp_syncookies的文本:

tcp_syncookiesvariables被用来发送所谓的syncookies到主机,当内核syn syn backlog队列中的特定套接字溢出时。 这意味着如果我们的主机被来自不同主机的多个SYN数据包充斥,SYN备份队列可能会溢出,因此这个函数开始发送cookie来查看SYN数据包是否真的合法。

对我来说,这听起来像真正像syn队列那样> tcp_max_syn_backlog未完成连接。

这篇关于SYN Cookie的文章可能会有帮助。 你当然可以检查来源 。