如何在 iptables 中指定多条规则?

如何在 iptables 中指定多条规则?

手册页上写着(重点是我的):

-A, --append chain rule-specification
        Append one *or more* rules to the end of the selected chain.
[...]
-D, --delete chain rule-specification
        Delete one *or more* rules from the selected chain.
[...]
-I, --insert chain [rulenum] rule-specification
       Insert one *or more* rules in the selected chain as the [...]

手册页是否说我们可以在每次调用 iptables 时添加多个规则?因为我找不到正确的语法来执行此操作。这个:

iptables -D INPUT -s 1.1.1.1 -p tcp -j DROP -s 1.1.1.2 -p tcp -j DROP

导致“不允许使用多个 -s 标志”错误。这:

iptables -D INPUT -s 1.1.1.1 -p tcp -j DROP -D INPUT -s 1.1.1.2 -p tcp -j DROP

导致“无法将 -D 与 -D 一起使用”错误。添加“--”也无济于事。

那么我们可以在每次调用时添加多条规则吗?

答案1

您没有引用手册页的其余部分来澄清这一点,即:

       -A, --append chain rule-specification
          Append one or more rules to the end of the selected chain.  When the source  and/or  destina‐
          tion  names  resolve to more than one address, a rule will be added for each possible address
          combination.

这意味着通过在规则规范中使用解析为多个地址的源或目标主机名来添加多个规则,而不是可以在一次调用中添加多个不同的规则。

答案2

您可以使用 iptables-persistent,然后可以创建这样的配置规则文件并将其加载到 iptables 中

1.首先保存当前规则

`sudo /sbin/iptables-save > /etc/iptables/rules.v4 ; sudo /sbin/ip6tables-save > /etc/iptables/rules.v6`
  1. 然后,您可以编辑该 rules.v4 并以与文件中相同的格式添加规则,这是您正常运行 iptables 时的情况,但在这种情况下,配置文件中一开始没有 iptables。

3.要激活规则,您需要

sudo iptables-restore < /etc/iptables/rules.v4

sudo /sbin/ip6tables-restore < /etc/iptables/rules.v6

答案3

逗号分隔的 IP 地址也有效。

-A INPUT -s 10.26.69.0/24,10.26.70.0/24,10.26.71.0/24 -j LOG --log-prefix '** logging input traffic **'

我也相信有一个源范围选项

相关内容