我问,因为我们的服务器的networking连接饱和了几次。 我想知道是什么导致networking负载。
我的第一个想法是制定一个iptables日志规则。 例如:
/sbin/iptables -A INPUT -m mport --dports 20,80,53 -j LOG --log-prefix "Audit: "
但是这样做效果不好,因为我不得不parsing日志并收集统计信息。 最好是,我想要回答以下问题的东西:
如果您有基于redhat / centos / fedora的发行版,则EPEL存储库中提供了iftop软件包,该软件包会对每个连接进行分解,这将使您能够确定是否造成问题的一台特定主机。
你可能需要命令“iftop -P -N”来显示除了主机以外的端口,如下面的截图所示。
一些细节

也出现在deb / ubuntu / gentoo里的某处…
sudo aptitude安装iftop
yum安装iftop
出现iftop
关于你的3个问题;
1)每个侦听端口有多less个TCP连接处于活动状态
netstat -ant | egrep 'ESTABLISHED' | awk '{print $4}' | \ awk -F: '{print $NF}' | sort -n | uniq -c 5 22 1 389 1 766 1 778 1 812 1 838 1 4369
这是一个非常基本的头顶,咀嚼netstat的输出,你可以改变grep添加或删除各种状态…
2)在一个特定的端口上接收到多less个UDP数据包3)哪个IP地址在最近的x个小时内连接到了我的服务器
在这两种情况下,你都需要收集数据,就像你build议的最简单的方法是某种iptables -j LOG规则。 这个问题的第一个答案就是一些例子。
https://stackoverflow.com/questions/349576/linux-retrieve-per-interface-sent-received-packet-counters-ethernet-ipv4-ipv
对于更一般的可视化工具,您可以考虑iptraf或ntop ,它们会生成更全面的报告和数据。
这里有一个相当全面的networking监控工具。
http://www.ubuntugeek.com/bandwidth-monitoring-tools-for-linux.html
运行数据包捕获,然后使用Wireshark来分析它,这应该给你一个好主意。 有很多教程可以帮助你弄清楚这是如何完成的。 如果服务器碰巧有一个GUI,etherape可以帮助你很容易地看到发生了什么。
你可以使用或recent和/或limit iptables模块。 看看这个页面 。