疑难问题解决和 FAQ
在这一节,你可以找到在 Netfilter 邮件列表里经常被问到的问题。
问题 1:协议不支持地址族问题
如果我使用 nft
,我得到以下错误:
% nft list table filter
<cmdline>:1:1-17: Error: Could not receive sets from kernel: Address family not supported by protocol
list table filter
^^^^^^^^^^^^^^^^^
解答:你需要在列出表之前首先创建它,例如 nft add table filter
。请参见如何配置表。而且,确信你编译了地址族支持,例如 CONFIG_NF_TABLES_IPV4
并且这个模块能被加载(例如 nf_tables_ipv4
)。
问题 2:当添加链时显示 No such file or directory
nft> add chain arp filter input {type nat hook input priority 0 ;}
<cli>:1:1-64: Error: Could not add chain: No such file or directory
add chain arp filter input {type nat hook input priority 0 ;}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
这说明链的类型不存在于指定的地址族中。在上面的例子中,问题是 NAT 链的类型不存在于 ARP 族里。如果你忘记在 Linux内核里编译支持这个链类型的模块时也会出现这个问题。
问题 3:当添加链时显示 Operation not supported
例如:
nft> add chain ip filter forward {type nat hook forward priority 0 ;}
<cli>:1:1-64: Error: Could not add chain: Operation not supported
add chain filter forward {type nat hook forward priority 0 ;}
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
这说明指定地址族的链类型在那个钩子上不可用。在上面的例子中,问题是 NAT 类型链可用的钩子是:prerouting
,input
,output
和 postrouting
。