OpenWRT 中使用多个 WAN 默认路由进行端口转发

OpenWRT 中使用多个 WAN 默认路由进行端口转发

我有一个 OpenWrt 设置,具有多个 WAN 连接和一个 DNAT 端口重定向,可用于访问 LAN 中的服务器。我希望我的服务器可通过两个 WAN 连接访问同时地。

我没有使用任何负载平衡包,例如mwan3因为我不需要为传出流量设置负载平衡。相反,我有多个网关在我的路由表中使用不同的度量值。所有此类网络都添加到单防火墙区域 wan在OpenWrt防火墙配置中。

路由表示例:

root@OpenWrt:~# ip route
default via 10.0.1.1 dev eth1  metric 5
default via 10.0.2.1 dev eth2  metric 8
...

我使用上述配置得到了一个简单的故障转移设置,作为10.0.1.1当链接断开时会被删除。

端口转发规则示例:

config redirect
        option name 'Server'
        option target 'DNAT'
        list proto 'tcp'
        option src 'wan'
        option src_dport '1234'
        option dest 'lan'
        option dest_ip '192.168.1.234'
        option dest_port '5678'

但是,此设置会导致我的端口转发中断:

  • 当表中存在单一默认路由时:
    • 当只有一个 WAN 连接处于活动状态时,端口转发始终有效
  • 当存在多个默认路由时:
    • 当通过具有最低度量值的网关(上例中的最高默认路由)联系服务器时,端口转发会起作用:10.0.1.1
    • 当通过具有更高度量值的网关联系服务器时,端口转发不起作用(10.0.2.1在上面的例子中)-a连接超时发生错误

这种行为让我想到,服务器返回的流量可能没有发送到其来源的同一网关 - 而是被发送到最低度量网关。
我说得对吗?有什么方法可以检查吗?


经过进一步搜索,我发现这一页在 OpenWrt wiki 中讨论了做类似的事情但使用多个路由器,但是该页面似乎不完整。

  • 如何在 OpenWrt 中实现上述连接标记解决方案?它是否也适用于 UDP、ICMP 流量?
  • 是否有任何其他可能的解决方案,不涉及使用连接标记或mwan3和 VLAN?

相关内容