我有一台装有 Ubuntu 操作系统的 NanoPi M1 Plus 设备,我将其用作路由器。该设备通过以太网电缆(eth0 接口)接入互联网,并通过接口 wlan0 提供 WiFi AP。
我已经编写了 iptables 规则,但似乎不起作用。并且已启用 IP_FORWARDING。
此外,在执行iptables-restore > /etc/iptables.ipv4.nat
命令时它会冻结并且终端上不会打印任何输出。
iptables.ipv4.nat
*filter
:INPUT ACCEPT [186:14306]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [131:13477]
-A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i wlan0 -o eth0 -j ACCEPT
COMMIT
*nat
:PREROUTING ACCEPT [142:11472]
:INPUT ACCEPT [27:2092]
:OUTPUT ACCEPT [28:2049]
:POSTROUTING ACCEPT [0:0]
-A POSTROUTING -o eth0 -j MASQUERADE
COMMIT
这里的问题是什么?
答案1
此外,在执行
iptables-restore > /etc/iptables.ipv4.nat
命令时它会冻结并且终端上不会打印任何输出。
它正在等待输入iptables-restore 的目的是从文件中读取规则集,但你使用了错误的重定向运算符并告诉 shell写给该文件。此命令的正确运算符是<
。
请注意,使用>
会立即清空文件的先前内容,因此请确保在重试之前用规则重新填充。
除此之外,规则集没有任何明显的问题。您可能在其他地方遇到问题,尤其是 uRPF 过滤功能,它会拒绝接受来自“错误”接口的数据包。确保通过 sysctl 禁用它,方法是将其设置net.ipv4.conf.all.rp_filter
为 0 表示“关闭”(或 2 表示“松散”)。