正在尝试将连接从 WLAN0 转发/伪装到 ETH0,如下所示:
sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
第一个命令有效。
第二条命令响应:iptables: No chain/target/match by that name.
如果我删除-m state --state RELATED,ESTABLISHED
命令的一部分,它会被接受。
我使用以下方法查看了内核模块lsmod | grep ip并且存在“ip_tables”。我在这里遗漏了一些明显的东西。有什么建议吗?
Debian 7 (armv7l)
答案1
Netfilter模块state
是使用名为的内核模块实现的xt_state
,因此如果尝试使用它立即失败,可以尝试执行
# modprobe xt_state
如果失败,内核很可能是在编译时禁用了对高级 Netfilter 功能的支持。
为了验证这一点,可以搜索/boot/config-<your-kernel-version>
文件以查找CONFIG_NETFILTER_XT_MATCH_STATE
应该是
- 没有注释掉,
- 分配一个值为“y”或“m”(“yes”与“module”),
- 未分配“n”值(“否”)。
进一步调查 OP 发现他们有一个由odroid
已安装,而不是适合该架构的普通 Debian Wheezy 内核armhf
。