我正在尝试编写一个 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
请注意,计数器会随着数据包沿规则链传递而发生变化,因此,一旦您读取计数器,它们可能会因传入或传出的数据包而改变。