每个网络端口的流量统计

每个网络端口的流量统计

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

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

答案1

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

答案2

您可以将记账规则添加到 iptables 配置中。这些应该在您接受 ESTABLISHED 和 RELATED 流量之前发生,否则您将错过对通过的流量的计数。要计算网络流量,请尝试以下规则:

iptables -A INPUT -p tcp --dport 80 

如果你有很多这样的链,你可能想要创建一个会计链,这样你就可以在其上报告和清零计数器,与其他链隔离。

岸墙防火墙允许您轻松地将记帐规则添加到规则集中。

答案3

不要忘记包括输出流量统计数据。

# 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

答案4

目前尚不清楚您是否需要使用每个目标 IP,但是统计数据是记录每个接口的流量使用情况的有用工具。安装它,然后vnstat -u -i eth0为您想要监控的每个接口运行。然后获取每天的使用情况vnstat -i eth0 -d

相关内容