![如何运行 iptables-multi? EL7 中 iptables 符号链接的目标。](https://linux22.com/image/115883/%E5%A6%82%E4%BD%95%E8%BF%90%E8%A1%8C%20iptables-multi%EF%BC%9F%20EL7%20%E4%B8%AD%20iptables%20%E7%AC%A6%E5%8F%B7%E9%93%BE%E6%8E%A5%E7%9A%84%E7%9B%AE%E6%A0%87%E3%80%82.png)
iptables
如果我在 EL7 环境下查看命令:
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 中的第一个和第二个条目。作为子命令传递main
回 iptables。