我正在尝试在 Debian 6 Squeeze amd64 上设置 iptables,但遇到了此错误消息
root@Vision:~/bin# iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT
iptables: No chain/target/match by that name.
我在网上搜索过,但没有找到解决方案。其他规则也给出了同样的错误。
答案1
你的内核需要 netfilter 模块 conntrack
Location: │
│ -> Networking support (NET [=y]) │
│ -> Networking options │
│ -> Network packet filtering framework (Netfilter) (NETFILTER [=y]) │
│ -> Core Netfilter Configuration │
│ -> Netfilter Xtables support (required for ip_tables) (NETFILTER_XTABLES [=m])
答案2
检查 dmesg 输出中的实际错误,还可以使用 strace 运行规则来获取丢失的模块
答案3
您的内核似乎缺少一些 Netfilter 功能。正如 Fabio 指出的那样,您需要 Xtables 支持。但是,您还需要 xt_conntrack 功能。它可能被编译为模块,因此输入您编写的命令应该会加载它。但在某些情况下,您需要自己加载它,因此在继续之前,请尝试
# modprobe xt_conntrack
如果不起作用,您必须重新编译内核以启用它。您可以在此处找到该选项:
Symbol: NETFILTER_XT_MATCH_CONNTRACK
│ Depends on: NET [=y] && INET [=y] && NETFILTER [=y] && NETFILTER_XTABLES [=y] && NF_CONNTRACK [=y]
│ Location:
│ -> Networking support (NET [=y])
│ -> Networking options
│ -> Network packet filtering framework (Netfilter) (NETFILTER [=y])
│ -> Core Netfilter Configuration
│ -> Netfilter Xtables support (required for ip_tables) (NETFILTER_XTABLES [=y])
如果你不熟悉内核构建,你可能需要看一下http://www.kroah.com/lkn/它以非常清晰的方式解释了您从一开始就需要知道的所有内容。
(我知道回答这个问题有点晚了。不过,我今天遇到了同样的问题,所以我想它有一天可能会对某些人有所帮助。)