如何获取 iptables 规则的准确数量?

如何获取 iptables 规则的准确数量?

我在 中的几个链中有许多规则iptables。有什么可靠的方法可以准确计算每个表的所有规则数量?

iptables --list --line-numbers打印如下内容:

Chain INPUT (policy ACCEPT)
num  target     prot opt source               destination
1    cali-INPUT  all  --  anywhere             anywhere             /* cali:Cz_u1IQiXIMmKD4c */
2    KUBE-FIREWALL  all  --  anywhere             anywhere

Chain FORWARD (policy ACCEPT)
num  target     prot opt source               destination
1    cali-FORWARD  all  --  anywhere             anywhere             /* cali:wUHhoiAYhphO9Mso */
2    DOCKER-ISOLATION  all  --  anywhere             anywhere
3    DOCKER     all  --  anywhere             anywhere

Chain KUBE-SERVICES (1 references)
num  target     prot opt source               destination
1    REJECT     tcp  --  anywhere             10.17.6.000          /* ephemeral-1498158084 reject-with icmp-port-unreachable

….

获取输出的行数无法提供正确的规则数。有空行、标题和标题。正在寻找一种仅获取规则数的方法。

答案1

在你的 shell 中运行此命令:

iptables --list --line-numbers | sed '/^num\|^$\|^Chain/d' | wc -l

描述:

获取列表

iptables --list --行号

忽略以以下行开头的行數量或者和白线

sed'/^num\|^$\|^Chain/d'

计算结果行数

厕所

答案2

你可以使用这个脚本。看起来它应该可以解决你的问题。

答案3

我会用:

iptables-save | grep --count --fixed-strings --regexp="-A"

这将转储 iptables 规则和 grep --count 规则条目。

相关内容