No meu sistema (Ubuntu 13.04), iptables
é um link simbólico para xtables-multi
:
martin ~ # ll /sbin/iptables
lrwxrwxrwx 1 root root 13 Feb 20 2013 /sbin/iptables -> xtables-multi*
Todos os outros comandos iptables
também são links simbólicos:
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*
Quando você chama um desses comandos, xtables-multi
usa o nome com o qual foi executado para descobrir qual comando você deseja usar. Chamar xtables-multi
diretamente (ou chamá-lo com um nome que não conhece) produz a seguinte saída no meu sistema:
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
A explicação, portanto, deve ser que o seu binário xtables-multi
não tenha sido compilado com todos os subcomandos disponíveis e, portanto, ele não sabe o que fazer quando você o chama como iptables
. Você provavelmente terá que recompilá-lo com as opções corretas para obter o comando iptables
funcionando.