Routing 具有多个连接的Ubuntu NAT

Routing 具有多个连接的Ubuntu NAT,routing,iptables,nat,Routing,Iptables,Nat,我有一台带有2个WAN连接的linux服务器。它有两个公共IP地址,即WAN_IP1和WAN_IP2。服务器默认网关为WAN_IP1 服务器还具有2个LAN接口和相关子网 这个服务器应该将一些端口从WAN地址转发到som LAN服务器,我一直使用DNAT或伪装 例如,我的LAN中有一个地址为LAN_IP1的web服务器,规则如下: iptables -A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.

我有一台带有2个WAN连接的linux服务器。它有两个公共IP地址,即WAN_IP1和WAN_IP2。服务器默认网关为WAN_IP1

服务器还具有2个LAN接口和相关子网

这个服务器应该将一些端口从WAN地址转发到som LAN服务器,我一直使用DNAT或伪装

例如,我的LAN中有一个地址为LAN_IP1的web服务器,规则如下:

iptables -A PREROUTING -p tcp -m tcp --dport 80 -j DNAT --to-destination 192.168.1.10:80
iptables -A POSTROUTING -j MASQUERADE
当我尝试通过WAN_IP1连接到web服务器时,一切正常,WAN_IP1是默认网关,但当我尝试通过WAN_IP2连接时,LAN服务器的回复通过默认网关WAN_IP1路由,因此连接从未建立

我已经看到了很多可能的解决方案,但我认为可能有比标记数据包和制作ip别名更“干净”的方法


有什么建议吗?

如果没有其他路由匹配,则通过默认网关路由所有传出流量是默认行为。如果要通过其他网关将流量路由到特定目的地,则必须为这些目的地定义其他路由

我想到的一个更“干净”的方法是在服务器前面放置一个路由器,它保持与WAN的连接和与服务器的连接。您的服务器将只与路由器(其默认网关)通信,路由器将路由数据包。
虽然这实际上类似于在服务器上指定其他路由,但在本解决方案中,这些路由是在路由器上配置的,但这会将网络管理的负担放到网络硬件上