我有一个 vps 客户端,其 ip 是 192.168.1.20。我在 iptables 中添加了以下几行:
# iptables -A FORWARD -o eth0 -s 192.168.1.20
# iptables -A FORWARD -i eth0 -d 192.168.1.20
然后我运行此行来监控使用情况
# iptables -L FORWARD -v -x | grep '192.168.1.20'
但结果的值始终为0。
答案1
在没有看到所有规则的情况下,很难说 100%,但可能是 iptables 中早期的规则起到了捕获所有规则的作用,流量没有到达您在问题中显示的转发规则(这可以解释为什么您看不到任何数据)。
根据 MadHatter 的说法:
先把您的两个审计规则放在第一位,这样就应该没问题了。
另一种方法:
考虑使用 -j 选项,其解释如下: http://ipset.netfilter.org/iptables.man.html
-j, --jump target 指定规则的目标;即,如果数据包匹配该目标,该做什么。目标可以是用户定义的链(除此规则所在的链之外)、立即决定数据包命运的特殊内置目标之一或扩展(请参阅下面的扩展)。如果在规则中省略此选项(并且未使用 -g),则匹配规则将不会影响数据包的命运,但规则上的计数器将递增。
这对你来说可能是一个很好的起点:
http://www.linux.com/learn/tutorials/305767-bandwidth-monitoring-with-iptables
规则匹配后,-j 选项会跳转到其中一条自定义链。