WAN 上 VRRP 中的备份 Ubiquiti 路由器继续作为主设备接管

网络工程 虚拟现实 无处不在
2021-07-07 11:10:24

我有两个 EdgeRouter 4。我有两个 /28 的公共 IP 地址块。每个 EdgeRouters 都有一个到我的 ISP 的上行链路,并且可以互相 ping 通。

我正在尝试设置 VRRP,并使用此资源作为指南:https : //help.ui.com/hc/en-us/articles/204962174-EdgeRouter-Virtual-Router-Redundancy-Protocol-VRRP-

我已经删除了两个中间八位字节,但下面是我对两个路由器的相关配置。您会注意到,我已经为两个路由器分配了相同的 /28 静态地址,然后将其余地址配置为虚拟地址。

两台路由器可以互相ping通。209.xx82可以ping通209.xx83,反之亦然。

主路由器的配置:

set interfaces ethernet eth0 address 209.x.x.82/28
set interfaces ethernet eth0 vrrp vrrp-group 3 advertise-interval 1
set interfaces ethernet eth0 vrrp vrrp-group 3 preempt true
set interfaces ethernet eth0 vrrp vrrp-group 3 priority 200
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.84/28
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.85/28
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.86/28
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.87/28
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.88/28
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.89/28
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.90/28
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.91/28
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.92/28
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.93/28
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.94/28

备份路由器的配置:

set interfaces ethernet eth0 address 209.x.x.83/28
set interfaces ethernet eth0 vrrp vrrp-group 3 advertise-interval 1
set interfaces ethernet eth0 vrrp vrrp-group 3 preempt true
set interfaces ethernet eth0 vrrp vrrp-group 3 priority 100
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.84/28
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.85/28
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.86/28
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.87/28
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.88/28
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.89/28
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.90/28
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.91/28
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.92/28
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.93/28
set interfaces ethernet eth0 vrrp vrrp-group 3 virtual-address 209.x.x.94/28

这是 eth0 的主路由器的 vrrp 摘要

$ show vrrp summary
                VRRP    Addr                    Interface       VRRP            
Interface       Group   Type    Address         State           State           
---------       -----   ----    -------         -----           -----           
eth0            3       vip     209.x.x.84/28up              master          
                        vip     209.x.x.85/28
                        vip     209.x.x.86/28
                        vip     209.x.x.87/28
                        vip     209.x.x.88/28
                        vip     209.x.x.89/28
                        vip     209.x.x.90/28
                        vip     209.x.x.91/28
                        vip     209.x.x.92/28
                        vip     209.x.x.93/28
                        vip     209.x.x.94/28

问题 每次我将备份路由器的配置放置到位时,备份路由器都会使自己成为主路由器 - 同时,主路由器继续显示它是主路由器。所以两个路由器都认为他们是主人。

我曾尝试将备份路由器修改为不抢占 ( set interfaces ethernet eth0 vrrp vrrp-group 3 preempt false)。此外,一旦我将更改提交到备份路由器,我就尝试强制清除其 vrrp 状态,并强制其进入备份模式,并将抢占设置为 false:

所以在备份路由器上,应用上述配置后,我运行:

$ clear vrrp master interface eth0 group 3
Forcing vyatta-eth0-3 to BACKUP...

然后我运行show vrrp summary,我看到第 3 组处于 VRRP 备份状态。但是我等了几秒钟,show vrrp summary在Backup路由器上运行了同样的命令,它又回到了Master的状态。

我如何解决为什么我的备份路由器继续尝试使自己成为主路由器,即使每个路由器都可以互相 ping 通,即使我已经尝试设置preemptfalse

就上下文而言,应该注意我的上游 ISP 使用 Cisco arp 缓存,如果 MAC 地址进入他们的 arp 缓存,我必须等待 3 个小时才能清除它,然后 IP 才能再次开始工作。对于我自己的故障排除目的来说,这很烦人。

为了让 vrrp 通信正常工作,我是否必须在任一路由器上设置额外的防火墙流(即,除了 ICMP ping 之外,我还需要其他任何东西吗)?我的 ISP 是否有可能在他们的交换机上进行某种过滤?还有其他建议吗?

3个回答

VRRP PDU 使用 IP 协议112,如RFC 5798 §5.1.1.4 中所述

为了让 vrrp 通信正常工作,我是否必须在任一路由器上设置额外的防火墙流(即,除了 ICMP ping 之外,我还需要其他任何东西吗)?

是的,您必须允许协议 112 数据包。如果他们被阻止,则会导致您所描述的行为。

每个 EdgeRouters 都有一个到我的 ISP 的上行链路

对于单独的上行链路,路由器之间可能没有透明的 L2 连接,而 VRRP 则需要这些连接。

仅仅能够在它们之间 ping 是不够的。VRRP 数据报使用多播目标地址 224.0.0.18 和 IP 协议 112。如果这些不能通过,则每个路由器假定另一个路由器离线并取得控制权。

为确保,在WAN 端口上运行数据包捕获以查看是否可以接收合作伙伴的VRRP 数据包。

两个路由器之间没有直接链接的 VRRP 拓扑可能会导致“脑裂”情况,我相信您在您的场景中遇到了这种情况。如前所述,如果您不允许多播数据报在主机之间流动,则选举将无法正常进行,并且您会遇到这样的问题。

附带说明一下,如果本地网络中有一个路由器连接到这些边缘路由器,为什么不使用动态路由而不是 VRRP?您可以在本地路由器和边缘路由器之间设置 BGP 对等体,并为每个链路设置不同的权重。