我今天查看 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}