iptables-multiをどのように実行しますか? EL7のiptablesシンボリックリンク先です。

iptables-multiをどのように実行しますか? EL7のiptablesシンボリックリンク先です。

iptablesEL7環境でコマンドを表示すると、次のようになります。

bash-4.1# uname -rvos
Linux 3.10.0-327.18.2.el7.x86_64 #1 SMP Thu May 12 11:03:55 UTC 2016 GNU/Linux

シンボリックリンクは sbin ディレクトリの iptables-multi-1.4.7 プロセスで終了します。

bash-4.1# namei /sbin/iptables
f: /sbin/iptables
 d /
 d sbin
 l iptables -> /etc/alternatives/iptables.x86_64
   d /
   d etc
   d alternatives
   l iptables.x86_64 -> /sbin/iptables-1.4.7
     d /
     d sbin
     l iptables-1.4.7 -> iptables-multi
       l iptables-multi -> /etc/alternatives/sbin-iptables-multi.x86_64
         d /
         d etc
         d alternatives
         l sbin-iptables-multi.x86_64 -> /sbin/iptables-multi-1.4.7
           d /
           d sbin
           - iptables-multi-1.4.7

iptables-multi-1.4.7と同じパラメータを使用して実行すると、iptables不明なサブコマンドエラーが発生します。

bash-4.1# iptables --list INPUT 1
KUBE-FIREWALL  all  --  anywhere             anywhere

bash-4.1# iptables-multi-1.4.7 --list INPUT 1
iptables multi-purpose version: unknown subcommand "--list"

同じバイナリ(互いにシンボリックリンクされている)であっても、同じコマンドライン引数は異なる出力を生成します。それを呼び出す正しい方法は何ですかiptables-multi-1.4.7

答え1

bash-4.1# iptables-multi-1.4.7 main --list INPUT 1
KUBE-FIREWALL  all  --  anywhere             anywhere

倒れた後ソースコード iptables-multiを使用すると、argvの最初の項目と2番目の項目を解析しようとしていることがわかります。サブコマンドとしてiptablesに戻されますmain

関連情報