使用 iptables 对非路由器机器进行带宽监控

使用 iptables 对非路由器机器进行带宽监控

我偶然发现了这个教程这里描述了如何使用 iptables 监控带宽。我想将其适用于非路由器机器,因此我想知道有多少数据正在进出和未通过。

以下是我添加的规则:

iptables -N ETH0_IN
iptables -N ETH0_OUT
iptables -I INPUT -i eth0 -j ETH0_IN
iptables -I OUTPUT -o eth0 -j ETH0_OUT

以下是输出示例:

user@host:/tmp$ sudo iptables -x -vL -n
Chain INPUT (policy ACCEPT 1549 packets, 225723 bytes)
    pkts      bytes target     prot opt in     out     source               destination         
     199    54168 ETH0_IN    all  --  eth0   *       0.0.0.0/0            0.0.0.0/0           

Chain FORWARD (policy ACCEPT 0 packets, 0 bytes)
    pkts      bytes target     prot opt in     out     source               destination         

Chain OUTPUT (policy ACCEPT 1417 packets, 178128 bytes)
    pkts      bytes target     prot opt in     out     source               destination         
     201    19597 ETH0_OUT   all  --  *      eth0    0.0.0.0/0            0.0.0.0/0           

Chain ETH0_IN (1 references)
    pkts      bytes target     prot opt in     out     source               destination         

Chain ETH0_OUT (1 references)
    pkts      bytes target     prot opt in     out     source               destination         

如上所示,ETH0_IN 和 ETH0_OUT 没有数据包和字节值,这与我参考的教程中的结果不一样。

我是不是哪里出错了?谢谢您的宝贵时间。

答案1

创建一个匹配所有流量并且不执行任何操作(但计数)的术语:

iptables -A ETH0_IN
iptables -A ETH0_OUT

在您的教程中,您的自定义链包含类似的条目 - 无论您喜欢哪种类型的会计。(每个 IP,每个协议......)


如果您只想计算输入/输出流量而不进行转发(我从“非路由器机器”读到的),请获取接口计数器:

# ifconfig eth0 | grep 'RX bytes'
      RX bytes:7029377146 (7.0 GB)  TX bytes:923972351 (923.9 MB)


如果你只是做一个总计,你甚至可以保存自定义链并执行

iptables -A INPUT  -i eth0
iptables -A OUTPUT -o eth0

得到你的计数器....

相关内容