太多的 TIME_WAIT 状态连接!

Ham*_*mza 10 timeout centos

我一整天都在到处阅读有关此内容的信息,从我收集到的信息来看,TIME_WAIT 是一种相对无害的状态。即使数量太多,它也应该是无害的。

但是,如果他们跳到我过去 24 小时看到的数字上,那就真的有问题了!

[root@1 ~]# netstat -nat | awk '{print $6}' | sort | uniq -c | sort -n
  1 established)
  1 Foreign
 12 CLOSE_WAIT
 15 LISTEN
 64 LAST_ACK
201 FIN_WAIT2
334 CLOSING
605 ESTABLISHED
816 SYN_RECV
981 FIN_WAIT1
26830 TIME_WAIT
Run Code Online (Sandbox Code Playgroud)

这个数字从 20,000 到 30,000+ 不等(到目前为止,我看到的最大值是 32,000)。让我担心的是,它们都是来自各种随机位置的不同 IP 地址。

现在这应该是(或应该是)DDoS 攻击。我知道这是事实,但我不会深入研究无聊的细节。它最初是一个 DDoS,它确实影响了我服务器的性能几分钟。在那之后,一切都恢复了正常。我的服务器负载正常。我的网络流量是正常的。没有服务器资源被滥用。我的网站加载正常。

我也禁用了 IPTABLES。这也有一个奇怪的问题。每次我启用防火墙/iptables 时,我的服务器开始遇到数据包丢失。很多。大约 50%-60% 的数据包丢失。它会在启用防火墙后的一个小时或几个小时内发生。一旦我禁用它,我会测试来自所有位置的 ping 响应,从开始清理并再次稳定下来。很奇怪。

自昨天以来,TIME_WAIT 状态连接一直在这些数字上波动。24 小时以来,我一直有这种感觉,虽然它没有以任何方式影响性能,但已经足够令人不安了。

我当前的 tcp_fin_timeout 值为 30 秒,默认值为 60 秒。然而,这似乎根本没有帮助。

任何想法,建议?任何东西都将不胜感激,真的!

Dav*_*ris 5

如何在 time-wait 中强制关闭套接字给出了关于 time-wait 的很好的讨论。

根据这个参考,时间等待连接的数量应该对应于最近 4 分钟的流量。这些数字大致匹配吗?


ror*_*ycl 2

当另一端未正确挂断时,我遇到了连接处于关闭等待状态的问题。这可能是由于恶意原因,或者是因为您的网络堆栈存在问题。

事实上,您的 iptables 似乎存在问题,这也表明您的网络堆栈存在问题。

如果您有一个网络端口,则值得将连接切换到另一个网络端口,看看该端口上是否出现相同的问题。问题也可能出在上游防火墙、路由器或坏人身上。

还有一些关于 RedHat (+Centos?) tcp_tw_recycle 设置问题的报告。你可能想调查一下。