这个netstat输出是什么意思?

我在专用服务器上运行适度活跃的网站。 在防范(D)DOS攻击的过程中,我运行了netstat来获得活动连接的数量。 这产生了一个相当不寻常的结果,它显示了服务器的公共IP地址的httpd端口到同一个IP地址上的许多不同的表面上随机的端口的1000多个连接。 也就是说,输出如下所示:

Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 [server's ip]:60284 [server's ip]:80 TIME_WAIT tcp 0 0 [server's ip]:60267 [server's ip]:80 TIME_WAIT ... [1000+ just like this] 

这些状态是TIME_WAIT,但可能是因为我运行的防火墙不允许访问这些端口。 这台服务器确实与另一台机器上的数据库进行通信,但是这些都应该通过专用IP来完成。 所以如果这是有效的沟通,我想弄清楚,所以我可以将其设置为使用私有IP(其中端口可访问)。

有谁知道为什么机器会试图通过其公共IP进行自我沟通? 我将如何确定启动这个过程? 我试图通过lsof来查看这些端口,但是没有返回任何信息。

我们的服务器使用httpd运行的唯一不寻常的事情是过时的perl-perl程序(用于caching内存中的perl脚本)。 不过,我相当肯定,不会涉及networking的使用,也没有任何信息表明如何工作。

在此先感谢您的任何build议!

我想你会发现这些连接是你的HTTP端口,而不是它。 其他端口号(60284等)是自动分配给连接客户端的临时端口号。

无论连接的哪一端(客户端或服务器)closures,都是在closures之后进入TIME_WAIT状态的那一端。

所以,看起来你的机器上有一些过程很频繁地连接到你的web服务器,并closures了客户端的连接(我猜想在发出HTTP请求之前closures连接,或者发出HTTP 1.1 keepalive请求,然后closures)

一些可能的方法来跟踪这一点:

  • 如果在连接处于ESTABLISHED状态时可以捕获其中的一个,则netstat -antp (以root身份)将显示套接字的进程ID。

  • 查看您的Web服务器访问/错误日志,以查看来自服务器IP的请求。 这些可能会说明它们来自哪里。

  • 使用tcpdump或wireshark在端口80上跟踪从服务器IP到它自己的数据包,并查看实际正在传输的内容(您还可以明确地看到连接正在打开的方式)。