NAT 流量被 INPUT 链上的规则丢弃

NAT 流量被 INPUT 链上的规则丢弃

我有以下 iptables 规则:

*nat
-A POSTROUTING -o wlan0 -j MASQUERADE
COMMIT
*filter
-A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A INPUT -i wlan1 -p tcp -m state --state NEW --dport 22 -j ACCEPT
-A INPUT -j DROP
COMMIT

wlan0 连接到公共网络。

wlan1 连接到专用网络。

允许从专用网络对路由器进行 SSH。

目标是使源自连接到 wlan1 的网络的流量看起来像是源自路由器,因此是 MASQUERADE。

我不希望任何东西能够在公共接口上建立连接;最终的 INPUT 规则是丢弃所有到路由器本身的传入连接。

但是,INPUT 链上的丢弃规则似乎正在丢弃应绑定到连接到 wlan1 的网络的流量。

如果我删除 INPUT 链上的丢弃规则 - 它似乎有效,但是这样做允许连接到路由器。

更新:

同样的表观网络配置在 Centos 上正常工作,但在 Raspbian 上没有任何转发,并且 INPUT 丢弃规则继续计数。

注意:此测试环境中所有链上的策略都设置为“接受”,因此在这种情况下不需要接受答案中的“转发”规则。

答案1

如果您希望系统将流量路由wlan1wlan0,则必须启用转发。为此,第一步是启用转发的主开关:

sysctl net.ipv4.ip_forward=1

(要使其持久,请添加net.ipv4.ip_forward=1/etc/sysctl.conf。)

然后你需要一些 iptables FORWARD 规则来规定任何可转发流量会发生什么:

iptables -A FORWARD -i wlan1 -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -j DROP

相关内容