疑难问题解决和 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 类型链可用的钩子是:preroutinginputoutputpostrouting