加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

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

发布时间:2020-12-13 17:11:27 所属栏目:Linux 来源:网络整理
导读:我在 linux嵌入式系统上构建并安装了iptables.如果我列出所有规则,一切正常: #iptables --listChain INPUT (policy ACCEPT)target prot opt source destinationChain FORWARD (policy ACCEPT)target prot opt source destinationChain OUTPUT (policy ACCEP
我在 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中,但我认为文件夹结构在更新的版本中有所改变.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读