我在 ESXi 7 上的 VM 中设置了最新版本的 OPNsense。OPNsense 与 pfSense 非常相似,我怀疑该解决方案适用于两者。所有 NIC 都是 PCI 直通设备:
- 管理界面
- WAN 1,我的首选 WAN,除非 WAN 1 出现故障,否则将一直使用
- WAN 2,我的后备 WAN,仅在 WAN 1 发生故障时才使用
- 所有 LAN 客户端都通过 LAN 接口连接到互联网
WAN 1 和 WAN 2 设置为网关。WAN 1 是我想要一直使用的连接,除非它出现故障或丢失严重,其优先级为 254,而 WAN 2 的优先级为 255,因此优先使用 WAN 1。没有其他启用的网关。两者都是上游网关。没有 ping 目标 IP,因此它们会 ping ISP 提供的各自网关 IP。
然后,我创建了一个网关组,其中两个 WAN 都是成员。第 1 层只有 WAN 1,第 2 层只有 WAN 2。“触发级别”是“数据包丢失或高延迟”。我的理解是,像这样有两个层意味着除非第 1 层出现故障,否则它会 100% 的时间使用,然后第 2 层会 100% 的时间使用,直到第 1 层恢复。
在正常情况下,如果两个 WAN 都正常运行且未报告任何丢失,则此方法可行。除了健康检查和防火墙阻止随机脚本小子对其进行探测外,所有流量似乎都通过 WAN 1 发送,而 WAN 2 被忽略。
但是,当 WAN 2 开始报告数据包丢失并且 OPNsense 认为它已关闭时(这种情况通常每天发生几次,每次持续几分钟),尽管 WAN 1 是健康的,但它仍然会造成干扰。一些尝试访问互联网的设备突然无法访问,直到 WAN 2 恢复正常。或者,如果我完全禁用 WAN 2 网关,连接就会稳定,当然前提是 WAN 1 也保持正常运行。当这种情况发生时,OPNsense 仍然说 WAN 1 是健康的。
日志表明,当 WAN 2 发生故障时,WAN 1 的路由根本没有改变,这让情况更加令人困惑。以下是 WAN 2 发生故障时的日志条目:
2021-03-10T10:31:44 kernel pflog0: promiscuous mode disabled
2021-03-10T10:31:44 opnsense[38519] /usr/local/etc/rc.filter_configure: ROUTING: keeping current default gateway '(WAN 1's IP)'
2021-03-10T10:31:44 opnsense[41442] /system_gateways.php: The LAN_DHCP monitor address is empty, skipping.
2021-03-10T10:31:44 opnsense[41442] /system_gateways.php: Choose to bind WAN 1 on (WAN 1's IP) since we could not find a proper match.
2021-03-10T10:31:44 opnsense[41442] plugins_configure monitor (execute task : dpinger_configure_do())
2021-03-10T10:31:44 opnsense[41442] plugins_configure monitor ()
2021-03-10T10:31:44 opnsense[41442] /system_gateways.php: ROUTING: keeping current default gateway '(WAN 1's IP)'
2021-03-10T10:31:44 opnsense[41442] /system_gateways.php: ROUTING: setting IPv4 default route to (WAN 1's IP)
2021-03-10T10:31:44 opnsense[41442] /system_gateways.php: ROUTING: IPv4 default gateway set to opt2
2021-03-10T10:31:44 opnsense[41442] /system_gateways.php: ROUTING: entering configure using defaults
2021-03-10T10:31:43 configctl[59484] event @ 1615397503.05 exec: system event config_changed
2021-03-10T10:31:43 configctl[59484] event @ 1615397503.05 msg: Mar 10 10:31:43 OPNsense.localdomain config[41442]: config-event: new_config /conf/backup/config-1615397503.052.xml
以下是大约同一时间的网关日志条目:
2021-03-10T10:31:03 dpinger[59862] GATEWAY ALARM: WAN 2 (Addr: ******* Alarm: 1 RTT: 8702us RTTd: 7796us Loss: 22%)
2021-03-10T10:31:03 dpinger[77013] WAN 2 *******: Alarm latency 8702us stddev 7796us loss 22%
2021-03-10T10:30:05 dpinger[79106] GATEWAY ALARM: WAN 2 (Addr: ******* Alarm: 0 RTT: 9164us RTTd: 14634us Loss: 11%)
对我来说最令人困惑的条目是,keeping current default gateway
它明确地表示“WAN 2 失败,但我不在乎,因为 WAN 1 是默认网关”,但也许我误解了它。
那么,在这种双 WAN 故障转移场景中,为什么第二个据称不活动的 WAN 的故障转移会导致活动 WAN 不可用?
答案1
尝试进入防火墙>设置>高级并勾选“网关故障时禁用状态终止”。
我想我遇到了和你一样的问题。我只能得出这样的结论:网关故障会终止所有网关的所有状态 - 在你的情况下,尽管 WAN2 发生故障,但通过 WAN1 建立的大量有状态连接的状态也会终止。
答案2
我遇到过类似的问题,并通过进入系统-->设置-->常规并启用“允许默认网关切换”解决了该问题,如果默认网关是问题所在,它会转到另一个网关。