手动编写 iptables 保存文件时,如何计算数据包计数器和字节计数器的值?

手动编写 iptables 保存文件时,如何计算数据包计数器和字节计数器的值?

我正在尝试编写一个 22MB 的iptables规则集文件,就是用命令生成的那种文件iptables-save,只不过它非常长。可以理解的是,这需要花费大量的时间。请看这个微型示例。

*filter
:INPUT ACCEPT [64:4692]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [72:28512]
-A INPUT -p tcp -m tcp --sport 9000:9004 -m iprange --src-range 127.0.0.1-127.0.0.1 -j DROP
COMMIT

接下来(INPUT|OUTPUT|FORWARD) ACCEPT,出现了值范围。

:< 链名称 > < 链策略 > [< 数据包计数器 >:< 字节计数器 >]

这些似乎依赖于iptables使用时已存储在内的内容iptables-save,但是,由于将规则加载到中iptables首先是一个问题,所以我不确定如何获取这些值,以便我可以手动(而是通过 vim)将它们输入到最终的规则集文件中。

如何计算这些值?不运行其他iptables命令是否可行?

答案1

除非您在某条规则中使用计数器,或者需要将计数器用于其他目的(计费等),否则我会省略它们,如下所示:

*filter
:INPUT ACCEPT
:FORWARD ACCEPT
:OUTPUT ACCEPT
-A INPUT -p tcp -m tcp --sport 9000:9004 -m iprange --src-range 127.0.0.1-127.0.0.1 -j DROP
COMMIT

可以使用iptables --列表命令。

iptables -L -v -x

请注意,计数器会随着数据包沿规则链传递而发生变化,因此,一旦您读取计数器,它们可能会因传入或传出的数据包而改变。

相关内容