我想检查哪个主机向我的服务器发送最多流量。我怎么能得到这样的东西:
172 192.168.1.1
19 192.168.1.56
这意味着在特定时间间隔内,我的服务器收到来自192.168.1.1
的172个数据包和来自192.168.1.56
的19个数据包。
我该怎么做?
答案 0 :(得分:0)
我相信你可以使用这个: http://www.catonmat.net/blog/traffic-accounting-with-iptables/
你只需稍微编辑awk脚本来打印数据包的数量而不是字节数[并且如果这是关键的话,则打印第二个而不是第一个IP地址]。
答案 1 :(得分:0)
您可以尝试使用tcpdump:
#!/bin/sh
while [ 1 ]
do
timeout -t 5 tcpdump -n -i eth0 "tcp port 22" 2> /dev/null > /tmp/capture.txt
echo
date
cat /tmp/capture.txt | grep -oE "((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)[.]){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)" | sort | uniq -c
done
它将通过对tcpdump
的输出中的IPv4地址进行计数来产生定期统计信息。
使用pcap
过滤器,您可以轻松限制所需流量。
在示例脚本中,"tcp port 22"
将流量限制为SSH。
示例输出:
Fri Jun 28 16:05:10 UTC 2019
53 10.0.0.2
53 10.0.0.99
Fri Jun 28 16:05:16 UTC 2019
37 10.0.0.2
37 10.0.0.99
Fri Jun 28 16:05:21 UTC 2019
Fri Jun 28 16:05:26 UTC 2019
5 10.0.0.2
5 10.0.0.99
由于tcpdump并非一直运行,有时计数可能会丢失一些数据包。