iptables - “错误:没有给出有效的子命令”的含义?

The*_*eer 1 iptables

我已经在带有 Linux 的嵌入式设备上安装了 iptables。我相信安装成功,因为所有其他应用程序都工作正常(busybox 等)。

我尝试运行它们,但出现以下错误:

root@AlphaEdge:~ iptables -L
ERROR: No valid subcommand given.
Valid subcommands:
 * iptables-xml
 * xml
Run Code Online (Sandbox Code Playgroud)

我通过谷歌搜索找到的唯一东西是这里的源代码,我试图在等待答案的同时找出它。

Mar*_*ich 5

在我的系统(Ubuntu 13.04)上,iptables有一个符号链接xtables-multi

martin ~ # ll /sbin/iptables
lrwxrwxrwx 1 root root 13 Feb 20  2013 /sbin/iptables -> xtables-multi*
Run Code Online (Sandbox Code Playgroud)

所有其他iptables命令也是符号链接:

martin ~ # ll /sbin|grep xtables
lrwxrwxrwx 1 root root      13 Feb 20  2013 ip6tables -> xtables-multi*
lrwxrwxrwx 1 root root      13 Feb 20  2013 ip6tables-restore -> xtables-multi*
lrwxrwxrwx 1 root root      13 Feb 20  2013 ip6tables-save -> xtables-multi*
lrwxrwxrwx 1 root root      13 Feb 20  2013 iptables -> xtables-multi*
lrwxrwxrwx 1 root root      13 Feb 20  2013 iptables-restore -> xtables-multi*
lrwxrwxrwx 1 root root      13 Feb 20  2013 iptables-save -> xtables-multi*
-rwxr-xr-x 1 root root     86K Feb 20  2013 xtables-multi*
Run Code Online (Sandbox Code Playgroud)

当您调用这些命令之一时,xtables-multi请使用执行该命令时使用的名称来确定您要使用哪个命令。直接调用xtables-multi(或使用它不知道的名称调用它)会在我的系统上产生以下输出:

martin ~ # xtables-multi 
ERROR: No valid subcommand given.
Valid subcommands:
 * iptables
 * main4
 * iptables-save
 * save4
 * iptables-restore
 * restore4
 * iptables-xml
 * xml
 * ip6tables
 * main6
 * ip6tables-save
 * save6
 * ip6tables-restore
 * restore6
Run Code Online (Sandbox Code Playgroud)

因此,解释必须是您的xtables-multi二进制文件尚未使用所有可用的子命令进行编译,因此当您将其称为iptables. 您可能需要使用正确的选项重新编译它才能使iptables命令正常工作。