我有一个带有 1 个 WAN 端口和多个 LAN 端口的 OpenWRT 路由器。
我通过在启动脚本中添加如下命令为 WAN 端口分配了第二个 IP:
ip addr add X.Y.Z.G/24 dev eth0.2
在此之前,我已经删除了添加到 WAN 端口的桥接器,因此 br-wan 消失了。
我还添加了以下命令,将到第二个 IP 和端口 80 的连接转发到 LAN 上的一台机器。
iptables -t nat -I POSTROUTING 1 -p all -s 192.168.3.87 -j SNAT --to X.Y.Z.G
iptables -t nat -A PREROUTING -p tcp -d X.Y.Z.G --dport 80 -j DNAT --to-destination 192.168.3.87:80
iptables -I FORWARD -p tcp -d 192.168.3.87 --dport 80 -j ACCEPT
这样,我就有了 2 个 Web 服务器,每个服务器都映射到一个单独的公共 IP。
我遇到的问题是,使用此设置,LAN 内的客户端X.Y.Z.G:80
由于某种原因无法访问 IP。网络上的其他人都可以。到目前为止,我对 iptables 的了解告诉我,最后一条规则应该允许从任何地方转发到内部 IP 的连接。
答案1
在查看了 OpenWRT 还做了什么来正常转发端口并查看了包含当前 iptables 规则的防火墙状态(菜单中的状态->防火墙)后,我复制了一些规则,结果发现奇迹发生了:)。
iptables -t nat -A POSTROUTING -p tcp -s 192.168.3.0/24 -d 192.168.3.87 --dport 80 -j SNAT --to 192.168.3.1
事实证明,我必须从内部网络明确添加 SNAT 规则才能使一切正常运行。