iptables -A 附加一个或多个规则

iptables -A 附加一个或多个规则

今天我查看了 iptables 的手册页,发现 -A 描述中说“附加一个或者更多规则到所选链的末尾”。这是否意味着如果我有:

iptables -A INPUT {...rule1...}
iptables -A INPUT {...rule2...}

可以简化成一行吗?

iptables -A INPUT {...rule1; rule2...}

我在谷歌上搜索过,找不到任何人这样做的例子,但如果可能的话,它只是我的一些脚本。

答案1

一次调用中只能提供一个规则定义iptables -A

但是,如果您使用的地址(例如 www.example.com)恰好解析为多个地址,则会附加多个规则,每个地址一个规则。

例如:(使用虚假 IP...):

$ host www.example.com
www.example.com has address 10.1.2.3
www.example.com has address 10.1.2.4
$ sudo iptables -A INPUT -s www.example.com -j ACCEPT
$ sudo iptables -L INPUT -vn
Chain INPUT (policy ACCEPT 0 packets, 0 bytes)
 pkts bytes target     prot opt in     out     source               destination         
 208K  250M ACCEPT     all  --  *      *       192.168.0.0/16       0.0.0.0/0           
    0     0 ACCEPT     all  --  *      *       10.1.2.3             0.0.0.0/0
    0     0 ACCEPT     all  --  *      *       10.1.2.4             0.0.0.0/0      

因此现在您已经使用一次调用插入了多个规则iptables -A

我同意这从手册页描述中不是很明显。

答案2

每个 iptables 调用仅包含 1 条规则。“附加”选项与“插入”选项相反。附加选项表示...新规则位于规则列表的末尾,而插入选项则表示将规则添加到列表的顶部。

iptables -I INPUT {Rule1}
iptables -I INPUT {Rule2}

将导致规则如下:

{Rule2}
{Rule1}

在哪里

iptables -A INPUT {Rule1}
iptables -A INPUT {Rule2}

会导致

{Rule1}
{Rule2}

相关内容