我有一个 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?