我有以下 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
如果您希望系统将流量路由wlan1
至wlan0
,则必须启用转发。为此,第一步是启用转发的主开关:
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