linux – 如何修复“iptables:没有链/目标/匹配的名称”?

前端之家收集整理的这篇文章主要介绍了linux – 如何修复“iptables:没有链/目标/匹配的名称”?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在 linux嵌入式系统上构建并安装了iptables.如果我列出所有规则,一切正常:
#iptables --list
Chain INPUT (policy ACCEPT)
target     prot opt source               destination
Chain FORWARD (policy ACCEPT)
target     prot opt source               destination
Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

但是,如果我添加一个新规则来阻止icmp ping,我将得到以下错误

iptables -A INPUT -i eth0 -p icmp --icmp-type any -s 0/0 -d 10.20.3.179 -m state --state NEW,ESTABLISHED,RELATED -j DROP
iptables: No chain/target/match by that name.

怎么解决

注意:我以超级用户身份启动命令

解决方法

您需要确定规则的哪个部分导致该错误消息.它可能是-m州的一部分,但不一定.必须将iptables和netfilter的各种扩展编译到iptables用户空间二进制文件中,并编译到Linux内核中的netfilter中.您可以通过询问iptables获取有关您正在测试的扩展的帮助信息来确定您缺少哪个部分.以下是一些测试各种扩展的方法
$iptables -m state -h
$iptables -p icmp -h
$iptables -j DROP -h

如果您获得的帮助输出包含有关输出底部的扩展的信息,那么它将被编译到用户空间二进制文件中.如果没有,那么你需要重新编译iptables.如果可行,请尝试使用最简单的规则来查看扩展是否包含在内核空间中:

$iptables -A INPUT -m state --state NEW
$iptables -A INPUT -p icmp
$iptables -A INPUT -j DROP

(小心这些规则,你要删除的最后一个,因为它可能会比你想要的更多!)当你再次收到错误消息时:没有链/目标/匹配这个名称你会知道特定的扩展不会编译到您的内核中.您需要重新编译内核.

查看linux / net / ipv6 / netfilter,linux / net / ipv4 / netfilter和linux / net / netfilter中的make文件,了解为内核启用各种扩展的选项.对于用户空间,我认为有问题的make文件是在iptables / extensions中,但我认为文件夹结构在更新的版本中有所改变.

原文链接:/linux/399600.html

猜你在找的Linux相关文章