相关疑难解决方法(0)

尽管 SYN_RECV 连接数很少,但日志中仍存在“可能的 SYN 泛洪”

最近我们有一个 apache 服务器,由于 SYN 泛滥,它的响应非常缓慢。解决方法是启用 tcp_syncookies ( net.ipv4.tcp_syncookies=1 in /etc/sysctl.conf)。

如果您想要更多背景知识,我在这里发布了一个关于此的问题。

启用 syncookies 后,我们开始大约每 60 秒在 /var/log/messages 中看到以下消息:

[84440.731929] possible SYN flooding on port 80. Sending cookies.

Vinko Vrsalovic 告诉我,这意味着 syn backlog 已满,所以我将 tcp_max_syn_backlog 提高到 4096。在某些时候,我还通过发出sysctl -w net.ipv4.tcp_synack_retries=3. 这样做之后,频率似乎下降了,消息的间隔在大约 60 到 180 秒之间变化。

接下来我发出了sysctl -w net.ipv4.tcp_max_syn_backlog=65536,但仍然在日志中收到消息。

在所有这一切中,我一直在观察处于 SYN_RECV 状态的连接数(通过运行watch --interval=5 'netstat -tuna |grep "SYN_RECV"|wc -l'),它永远不会高于大约 240,远低于积压的大小。但是我有一个 Red Hat 服务器,它在 512 左右徘徊(此服务器的限制是默认值 1024)。

是否有任何其他 tcp 设置会限制积压的大小,或者我是否在咆哮错误的树?SYN_RECV 连接的数量是否应该netstat -tuna与积压的大小相关?


更新

尽我所能,我正在处理这里的合法连接, …

linux kernel tcp flooding

31
推荐指数
3
解决办法
14万
查看次数

标签 统计

flooding ×1

kernel ×1

linux ×1

tcp ×1