使用具有多个链的 iptables 进行流量统计

使用具有多个链的 iptables 进行流量统计

我有一个包含 3 个区域的 Linux 防火墙设置:
- 绿色代表 LAN(192.168.0.0/24)
- 蓝色代表 WLAN(192.168.1.0/24)
- 橙色代表 DMZ(192.168.2.0/24)

所有区域都有系统在运行,我想知道每个系统产生的外部流量是多少。进行一些测试时,肯定存在一些内部流量,因为外部设备上的 vnstat 显示不同的流量帐户。

经过一些研究,我最终得到了类似这样的结果(例如,一个内部 IP 且仅用于上传):

/sbin/iptables -N TRAFFICFILTERUP
/sbin/iptables -I OUTPUT -j TRAFFICFILTERUP
/sbin/iptables -A TRAFFICFILTERUP -d 127.0.0.0/8 -j RETURN
/sbin/iptables -A TRAFFICFILTERUP -d 192.168.0.0/24 -j RETURN
/sbin/iptables -A TRAFFICFILTERUP -d 192.168.1.0/24 -j RETURN
/sbin/iptables -A TRAFFICFILTERUP -d 192.168.2.0/24 -j RETURN
/sbin/iptables -A TRAFFICFILTERUP -j LOG
/sbin/iptables -N TRAFFICUP
/sbin/iptables -A TRAFFICFILTERUP -j TRAFFICUP
/sbin/iptables -A TRAFFICUP -s 192.168.2.1

结果:

iptables -L TRAFFICUP -nvx
Chain TRAFFICUP (1 references)
pkts      bytes target     prot opt in     out    source     destination
0        0            all  --  *      *       192.168.2.1   0.0.0.0/0

iptables -L TRAFFICFILTERUP -nvx
Chain TRAFFICFILTERUP (1 references)
pkts      bytes target     prot opt in     out     source destination         
0        0 RETURN     all  --  *      *       0.0.0.0/0            127.0.0.0/8         
0        0 RETURN     all  --  *      *       0.0.0.0/0            192.168.0.0/24      
0        0 RETURN     all  --  *      *       0.0.0.0/0            192.168.1.0/24      
1349   271065 RETURN     all  --  *      *       0.0.0.0/0            192.168.2.0/24      
402   171503 LOG        all  --  *      *       0.0.0.0/0            0.0.0.0/0            LOG flags 0 level 4
401   171249 TRAFFICUP  all  --  *      *       0.0.0.0/0            0.0.0.0/0  

为什么 TRAFFICUP 中没有流量?有什么建议吗?还是整个方法都是错的?

答案1

/sbin/iptables -I OUTPUT -j TRAFFICFILTERUP

应该

/sbin/iptables -I FORWARD -j TRAFFICFILTERUP

相关内容