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 呼叫的第一條規則。 “追加”選項與“插入”選項相反。附加如下...新規則將移至規則清單的末尾,但插入會將規則新增至清單的頂部。

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

將導致規則如下:

{Rule2}
{Rule1}

在哪裡

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

會導致

{Rule1}
{Rule2}

相關內容