如何检查 iptables 中每个规则的命中数?

新手上路,请多包涵

我想知道如何从我使用 iptables 创建的访问列表中找出访问了哪个规则以及访问了多少次。

我的防火墙在 iptbales 中有超过 1000 条输入和输出规则;我想知道他们每个人被访问了多少次。

例如,假设我有以下规则:

 iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp --sport 22 -m state --state ESTABLISHED -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT

iptables -A INPUT -i eth0 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT

iptables -A OUTPUT -o eth0 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT

我想知道规则 1、2、3、4、5 和 6 分别被击中了多少次。

原文由 apps 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.7k
2 个回答

iptables 如果您指定选项 -v 将列出数据包和字节计数器,例如 --- iptables -vL 。同样 iptables-save 将列出所有条目,包括每个链的提到的计数器,但不是每个表条目(在某些系统上 iptables-save 需要选项 -c 包括计数器) .

原文由 scai 发布,翻译遵循 CC BY-SA 3.0 许可协议

我使用以下内容检查我的 iptables 规则:

 iptables -nvL [INPUT|FORWARD|OUTPUT|myCHAINNAME] --line-numbers | less

-n 通过不进行主机名查找来加快进程

行号有助于删除规则:

 iptables -D [INPUT|FORWARD|OUTPUT|myCHAINNAME] [Rule#]

原文由 Bob Holden 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题