Linux 内核中的 TCP SYN Flooding 检测方法

Linux 内核中的 TCP SYN Flooding 检测方法

当 Linux 内核检测到 SYN 洪水时,它会记录如下消息:

possible SYN flooding on port 80. Sending cookies

有谁知道内核用来检测这一点的具体方法吗?

答案1

如果我正确读取了 sysctl/tcp 的内容,当未确认的 syn 请求数超过 net.ipv4.tcp_max_syn_backlog 的值时,它会跳闸。具体来说:

tcp_max_syn_backlog 变量会告诉您的机器,有多少 SYN 请求需要保留在内存中,而我们尚未从 3 次握手中获得第三个数据包。tcp_max_syn_backlog 变量会被 tcp_syncookies 变量覆盖,需要启用该变量才能使该变量生效。如果服务器在高峰时段出现过载,您可能需要稍微增加此值。

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

tcp_syncookies 变量用于在特定套接字的内核 syn backlog 队列溢出时向主机发送所谓的 syncookies。这意味着如果我们的主机被来自不同主机的多个 SYN 数据包淹没,syn backlog 队列可能会溢出,因此此函数开始发送 cookie 以查看 SYN 数据包是否真正合法。

对我来说,这听起来真的就像 syn 队列具有 > tcp_max_syn_backlog 未完成连接一样简单。

答案2

本文可能会有所SYN帮助。当然,你可以检查来源

相关内容