每个网络端口的流量统计信息


15

我有两台具有两个应用程序的机器,它们在几个网络端口(TCP和UDP)上互相通信。我想计算他们发送和接收的流量。我不仅需要总体计数,还需要每天每端口每台计算机的统计信息。我尝试了darkstat,但它不提供每天的统计信息,而仅提供总体计数器。

还有其他方法可以计算该流量(可以在两台计算机之间放置一些代理或网关)。

Answers:


16

iptables可以为您提供有关每个规则被触发多少的统计信息,因此您可以在感兴趣的端口上添加LOG规则(假设端口20和端口80):

iptables -A INPUT -p tcp --dport 22
iptables -A INPUT -p tcp --dport 80

接着

iptables -n -L -v

将为您提供通过此端口发送的数据包和字节数。当然,您将不得不从输出中解析您感兴趣的端口。

如果需要精确值,请添加-x:

iptables -n -L -v -x

4
无需放置LOG规则(这将淹没您的日志文件),只需计算触发规则的次数即可。
吉尔(Gilles)“所以,别再邪恶了”

4
确实。规则不需要采取任何行动。一个有用的教训:没有规则的规则-J对会计很有益。
Alexios 2012年


2

您可以将计费规则添加到iptables配置中。这些应该在您接受已建立和相关的流量之前发生,否则您将无法计算通过的流量。要计算网络流量,请尝试以下规则:

iptables -A INPUT -p tcp --dport 80 

如果您有一堆,则可能要创建一个会计链,这样就可以与其他链隔离地对其进行报告和清零计数器。

的shorewall防火墙可以让你轻松的会计规则添加到您的规则集。


1

不要忘记包括输出流量统计信息。

# Port 80 (HTTP).
iptables -A INPUT -p tcp --dport 80
iptables -A OUTPUT -p tcp --sport 80

# Port 443 (HTTPS).
iptables -A INPUT -p tcp --dport 443
iptables -A OUTPUT -p tcp --sport 443


iptables -n -L -v
iptables -n -L -v -x


iptables -n -L -v -x | grep -i "Chain\|:443\|:80"

Chain INPUT (policy DROP 357 packets, 22828 bytes)
 1286265 75076978 ACCEPT tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp dpt:80
 1305378 75018232 ACCEPT tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp dpt:443

Chain OUTPUT (policy ACCEPT 303516 packets, 94716311 bytes)
     442   255112        tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp spt:80
      46    10515        tcp  --  *      *    0.0.0.0/0  0.0.0.0/0  tcp spt:443

0

利用tcpdump,

tcpdump -i任何-nnn

以上命令的输出将包括时间戳,src /目标ip地址,端口和数据包长度。有了这些信息,您可以通过编写良好的脚本轻松实现目标。


0

尚不清楚是否需要每个目标IP的使用情况,但是vnstat是一个有用的工具,用于记录每个接口的流量使用情况。安装它,然后vnstat -u -i eth0针对要监视的每个接口运行。为了得到每天的使用量vnstat -i eth0 -d


1
我不认为使用vnstat我可以获得每个端口的统计信息...还是我错了?
pbm 2012年

1
@pbm啊,您的意思是TCP / UDP端口。不,vnstat不会那样做。
mgorven 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.