Android No chain/target/match by that name 解决

本文指导如何解决在使用iptables时遇到的'Nochain/target/matchbythatname'错误,通过检查系统是否支持iptables,以及如何验证新系统是否支持此功能。

当执行iptables 时,抛出No chain/target/match by that name这个错误,在命令正确无误时提示这个错误,一般是你的系统不支持netfilte/iptables,需重新刷一个新的rom。如现在一个叫droidwall的开源防火墙在一些系统运行时会出现这个错误,就是你的系统不支持。

支持的ROM 如:cm-4.2.15.1

但CM的ROM也有不带iptables的,刷时要看看system/bin里有没有这个文件。要是刷后想知新系统支不支持。可用下面的命令

iptables -t filter -A OUTPUT -o tiwlan+  -m owner --uid-owner 10030 -j DROP 

 

执行后看看会不会提示“No chain/target/match by that name”,没有表示新ROM一切正常

最后要用iptables -F清空哦

iptables -F

 

这样你的droidwall就可以用了,哈哈。

<think>我们正在处理关于iptables的错误:“Nochain/target/matchbythatname”。这个错误通常发生在尝试使用未加载的模块或链不存在时。根据引用内容,我们可以推断问题可能与内核模块未加载或iptables配置有关。根据引用[2]:要使用iptables的高级功能,需要在内核中设置正确的配置选项。如果缺少必要的模块,就会出现该错误。解决方案步骤:1.检查所需模块是否已加载:例如,如果使用`conntrack`,则需要`nf_conntrack`模块。2.加载相应模块:使用`modprobe`命令加载模块。3.检查模块是否存在:如果模块不存在,可能需要重新编译内核或安装相应模块包。例如,如果错误涉及“state”匹配,则可能需要加载`xt_state`模块(在较新内核中可能是`nf_conntrack`):```bashmodprobext_state```或者,如果错误是关于某个特定链(如`PREROUTING`)的,则确保你正在正确的表(如`nat`)中操作,并且表存在(`nat`表需要`iptable_nat`模块)。另外,引用[4]中展示了在`nat`表的`PREROUTING`链中使用`DNAT`的示例,这依赖于`iptable_nat`模块。因此,针对具体错误信息,例如:“iptables:Nochain/target/matchbythatname”,我们可以这样做:假设错误信息是:iptables-AINPUT-mstate--stateRELATED,ESTABLISHED-jACCEPTiptables:Nochain/target/matchbythatname解决方案可能是:modprobext_conntrack或者,在某些系统上:modprobenf_conntrack此外,确保模块在启动时自动加载,可以将模块名添加到`/etc/modules`文件。如果问题仍然存在,可能需要检查内核配置,确保编译时启用了相关选项(引用[2]提到需要配置内核)。总结步骤:1.识别缺失的模块(根据错误信息中的链、目标或匹配名称)。2.使用modprobe加载模块。3.永久性解决:将模块添加到/etc/modules-load.d/下的配置文件或/etc/modules(取决于发行版)。4.如果模块不存在,安装相应内核模块包或重新编译内核。注意:不同的发行版可能有不同的模块包,例如在Debian/Ubuntu上,可以安装`iptables`和`linux-modules-extra-$(uname-r)`等包。如果错误发生在Docker容器中,请注意容器可能缺少内核模块,这时需要从主机加载或使用特权容器(不推荐,有安全隐患)。相关问题:1.如何列出当前加载的iptables模块?2.如何永久加载iptables所需的内核模块?3.在Docker容器中如何解决iptables模块缺失问题?</think>### 关于 "No chain/target/match by that name" 错误的解决方案 这个错误通常发生在尝试使用未加载的内核模块或无效的 iptables 规则时。以下是系统级解决方案: #### 1. **检查内核模块状态** ```bash # 列出所有已加载的模块 lsmod | grep -E 'xt_|nf_|ip_' # 检查特定模块(如状态跟踪模块) modinfo xt_state ``` 若模块未加载,使用 `modprobe` 加载: ```bash sudo modprobe xt_state # 状态匹配模块 sudo modprobe iptable_nat # NAT表支持 sudo modprobe nf_conntrack # 连接跟踪 ``` #### 2. **验证规则语法** 错误常由无效规则引起: ```bash # 错误示例(错误匹配名) iptables -A INPUT -m stat --state ESTABLISHED -j ACCEPT # 正确应为 -m state ``` 使用 `iptables -L -n -v` 检查现有规则[^4]。 #### 3. **永久加载内核模块** 编辑 `/etc/modules-load.d/iptables.conf`: ```ini xt_state nf_conntrack iptable_nat xt_conntrack ``` 重启后生效或运行 `sudo systemctl restart systemd-modules-load`。 #### 4. **检查内核编译选项** 确保内核启用了必要功能: ```bash zgrep -E 'CONFIG_IP_NF_|CONFIG_NETFILTER' /proc/config.gz ``` 关键选项: - `CONFIG_NETFILTER=y` - `CONFIG_NF_CONNTRACK=y` - `CONFIG_IP_NF_IPTABLES=y` #### 5. **容器环境特殊处理** 在 Docker 容器中: ```bash docker run --cap-add=NET_ADMIN --cap-add=NET_RAW ... ``` 或添加特权模式 `--privileged`(有安全风险)[^2]。 #### 6. **重装 iptables** 当模块文件损坏时: ```bash sudo apt update sudo apt install --reinstall iptables linux-modules-extra-$(uname -r) ``` > **原因总结**:该错误表明内核未提供规则所需的底层功能,90% 的案例通过加载 `xt_state` 或 `nf_conntrack` 模块解决[^1][^4]。 --- ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值