今日iptablesのマニュアルページを見ていたら、-Aの説明に「1つ追加する」と書いてあることに気付きました。以上ルールを選択したチェーンの最後まで適用する」ということは、次のことを意味しますか:
iptables -A INPUT {...rule1...}
iptables -A INPUT {...rule2...}
1行に簡略化できますか?
iptables -A INPUT {...rule1; rule2...}
Google で調べてみましたが、これを行った例が見つかりませんでした。可能であれば、私のスクリプトのいくつかを試してみてください。
答え1
1 回の呼び出しで指定できるルール定義は 1 つだけですiptables -A
。
ただし、www.example.com など、複数のアドレスに解決されるアドレスを使用する場合は、アドレスごとに 1 つずつ、複数のルールが追加されます。
例: (偽の 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
これで、1 回の呼び出しで複数のルールが挿入されましたiptables -A
。
これは man ページの説明からはあまり明らかではないことに同意します。
答え2
iptables 呼び出しごとに 1 つ目のルール。「追加」オプションは「挿入」オプションとは対照的です。「追加」では、新しいルールはルール リストの末尾に追加されますが、「挿入」ではルールがリストの先頭に追加されます。
iptables -I INPUT {Rule1}
iptables -I INPUT {Rule2}
ルールは次のようになります。
{Rule2}
{Rule1}
どこ
iptables -A INPUT {Rule1}
iptables -A INPUT {Rule2}
結果として
{Rule1}
{Rule2}