防火墙双机热备之VRRP

注意:VRRP是接口概念,并不是整机概念

VRRP 的基本角色

  • VRID :一个虚拟路由器的身份证号。例如 VRID 1 代表一组路由器(通常2台:一台Master,一台Backup)。

  • 虚拟IP :这组路由器共同对外提供的网关 IP,例如 192.168.1.1。主机把网关设成这个 IP。

  • Master:当前真正干活的路由器,负责转发数据、响应 ARP 请求。

  • Backup:备胎,时刻监听 Master 的心跳(VRRP 通告),一旦 Master 挂了,Backup 接替成为新 Master。

为什么只有 Master 响应 ARP 请求?

  • 当内网主机想访问网关 192.168.1.1 时,会发送 ARP 广播:"谁拥有 192.168.1.1?请告诉我你的 MAC 地址。"

  • 如果 Master 和 Backup 都响应这个 ARP,主机就会收到两个 MAC 地址,不知道该用哪个,导致通信混乱。

  • 因此 VRRP 规定:只有 Master 设备响应虚拟 IP 的 ARP 请求,Backup 设备必须保持沉默。

这样,主机的 ARP 缓存里只会记录 Master 的 MAC 地址,所有流量都先经过 Master。

同一个 VRID 里只有一个 Master,它独占虚拟 IP 的 ARP 响应权,确保网络中的主机始终将网关 IP 解析到唯一活跃设备的 MAC 地址,避免冲突和混乱。Backup 只在 Master 失效时接管,并主动刷新 ARP 表。


VRRP Master 选举机制详解

VRRP(Virtual Router Redundancy Protocol)通过选举机制确定哪台路由器成为 Master,负责转发虚拟 IP 的流量。选举的核心依据是 优先级IP 地址

一、选举触发时机

  • 路由器启动时(初始状态)。

  • Master 设备发生故障(长时间未发送 VRRP 通告)。

  • 收到更高优先级的 VRRP 通告(抢占模式开启时)。

二、选举的核心要素

要素 说明 取值范围/默认值
VRID 虚拟路由器标识,同一组路由器必须配置相同的 VRID 1-255
优先级(Priority) 决定选举权重,数值越高越优先成为 Master 1-254(默认100),255保留给设备拥有者,0表示放弃参与选举
虚拟 IP 组内共享的网关 IP 通常与接口 IP 同网段
IP 地址 路由器物理接口的 IP,用于当优先级相同时的次选比较 IPv4 地址

三、选举规则(按顺序比较)

  1. 优先级高的获胜

    优先级范围 1-254,数值越大越优先。默认优先级为 100,可手工调整。

  2. 优先级相同时,IP 地址大的获胜

    比较的是 VRRP 通告报文源 IP 地址 (即物理接口 IP),数值较大的成为 Master。

    注意:不是比较虚拟 IP,而是接口真实 IP。

  3. 优先级 255 的特殊情况

    当一台路由器配置了虚拟 IP 与物理接口 IP 相同时(即"IP 拥有者"),其优先级自动为 255,永远成为 Master,不可被抢占(除非故障)。

  4. 优先级 0 表示放弃选举

    通常用于设备主动退出 Master 角色时发送的通告。

VRRP 选举 Master 时,先比优先级(数字大者胜);优先级相同,则比较物理接口的 IP 地址(数字大者胜)。虚拟 IP 只用作网关地址,不参与任何比较,但它通常与物理接口 IP 处于同一网段。

四、选举过程(状态机)

VRRP 设备有三种状态:InitializeBackupMaster

  1. 设备启动 → Initialize

    设备初始化,如果优先级为 255(IP 拥有者),直接成为 Master ;否则进入 Backup 状态,设置 Master_Down_Interval 定时器。

  2. Backup 状态

    • 监听来自 Master 的 VRRP 通告(组播地址 224.0.0.18,默认间隔 1 秒)。

    • 如果在 Master_Down_Interval 时间内(默认 3 倍通告间隔 = 3 秒)没有收到 Master 的通告,则认为 Master 失效。

    • 触发选举:Backup 组内所有设备比较优先级(和 IP 地址),优先级最高且 IP 地址最大的成为新 Master。

  3. Master 状态

    • 定期发送 VRRP 通告(默认 1 秒)。

    • 如果开启了 抢占模式(默认开启),当收到更高优先级的 VRRP 通告时,当前 Master 自动降级为 Backup,让出 Master 地位。

    • 如果关闭抢占模式,即使有更高优先级设备加入,也不会抢占,直到当前 Master 失效。


VRRP中,设备不会一启动就当Master,而是先等待一个超时时间(Master_Down_Interval),确认没有更高优先级的Master存在后,才会主动成为Master。这样做是为了保证选举的稳定性和唯一性。

Master_Down_Interval(通常 = 3 × 通告间隔 + Skew_time)。

Skew_Time,通常计算为 (256 - Priority)/256 秒)


虚拟 MAC 是什么?

  • 虚拟 MAC 是一个由 VRRP 协议自动生成的、不归属于任何物理网卡的 MAC 地址。

  • 它被 Master 设备 用来响应虚拟 IP 的 ARP 请求。

  • 格式(标准 VRRP,RFC 5798):00-00-5E-00-01-{VRID}(十六进制)

    • 前 3 字节 00-00-5E 是 IANA 分配给 VRRP 的 OUI。

    • 第 4 字节 00-01 固定,表示 VRRP 协议。

    • 最后 1 字节是 VRID(虚拟路由器 ID,1~255)。

    • 例如 VRID=10 的虚拟 MAC:00-00-5E-00-01-0A


VRRP 通告报文(Advertisement)

VRRP 协议的核心心跳机制就是 Advertisement 报文。Master 设备周期性地发送这个报文,向网络中的 Backup 设备宣告自己"活着"。Backup 通过监听这个报文来判断 Master 是否正常。

VRRP 通告报文是 Master 通过组播地址 224.0.0.18 定期发送的心跳包(默认 1 秒一次),Backup 监听该地址,一旦连续 3 秒左右收不到通告,就认为 Master 故障并触发切换。组播设计保证了广播域内所有 VRRP 设备都能自动发现对方,无需预先配置对端 IP。

发往组播 IP 224.0.0.18 的 VRRP 通告,必须封装对应的组播 MAC 01-00-5E-00-00-12,这个 MAC 地址不是指向某一台设备,而是指向所有加入了该 VRRP 组的设备(Master 和 Backup),由交换机根据 IGMP Snooping 或泛洪转发到相应端口。


BackUP成为Master之后,会发一个免费ARP书信MAC地址表

Backup 成为 Master 后,立即发送免费 ARP(广播),通知交换机和所有主机:虚拟 IP 现在绑定了新的 MAC 地址(即新 Master 的 MAC),从而更新交换机 MAC 表并刷新主机 ARP 缓存,实现无感知切换。


虚拟 IP、虚拟 MAC 与实际转发:封装和转发详解

在 VRRP 场景中,主机发送数据包给网关时,封装用的是虚拟 IP 和虚拟 MAC;实际处理并转发该数据包的设备是当前的 Master 设备。Backup 设备不参与数据转发,只监听 VRRP 通告。

主机访问外网前,先通过 ARP 请求网关 192.168.1.1 的 MAC 地址;只有 Master 会响应,并告知虚拟 MAC 00-00-5E-00-01-01。此后主机发出的所有数据帧,目的 MAC 都填这个虚拟 MAC,交换机根据 MAC 表转发给 Master,Master 解包后用自己的真实身份完成三层转发。切换时,新 Master 通过免费 ARP 刷新交换机 MAC 表和主机 ARP 缓存,虚拟 MAC 不变,主机完全无感知。


虚拟 MAC 的告知、交换机 MAC 表、真实 MAC 的作用,以及完整封装过程

一、虚拟 MAC 是谁告知的?

答案:Master 设备通过两种方式告知网络中的设备(主机和交换机)虚拟 MAC 的存在。

方式 1:响应主机的 ARP 请求(告知主机)

  • 主机发送 ARP 广播:"谁拥有虚拟 IP 192.168.1.1?"

  • 只有 Master 会回复单播 ARP 应答,报文中携带:

    • 源 MAC = 虚拟 MAC (如 00-00-5E-00-01-01

    • 发送者 IP = 虚拟 IP192.168.1.1

  • 主机收到后,将 ARP 缓存更新为:192.168.1.1 → 虚拟 MAC

方式 2:发送免费 ARP(告知交换机和所有主机)

  • Master 在启动、切换后、或定期(可选)发送 免费 ARP(广播)。

  • 免费 ARP 的格式:

    • 源 MAC = 虚拟 MAC

    • 目标 MAC = 广播地址 FF-FF-FF-FF-FF-FF

    • 内容:Sender IP = 虚拟 IPTarget IP = 虚拟 IP

  • 交换机 收到广播帧后,会学习到 源 MAC 与接收端口的对应关系,从而更新 MAC 地址表:虚拟 MAC 对应 Master 的端口。

  • 主机也会收到免费 ARP,刷新 ARP 缓存中的网关条目。

结论:虚拟 MAC 是由 Master 主动或被动宣告出去的,Backup 不参与宣告。


二、交换机的 MAC 地址表学习的是什么?

答案:交换机的 MAC 地址表中,记录的是"虚拟 MAC"对应哪个物理端口,不记录真实 MAC(除非真实 MAC 自己发送单播帧)。

  • 当 Master 发送 免费 ARP (源 MAC = 虚拟 MAC)时,交换机学到:虚拟 MAC → Master 端口

  • 当 Master 发送 VRRP 通告 (源 MAC = 真实 MAC)时,交换机学到:真实 MAC → Master 端口(可能同一个端口,也可能不同接口,但通常都是 Master 的端口)。

所以交换机的 MAC 地址表中同时存在两条记录

MAC 类型 MAC 地址示例 端口
虚拟 MAC 00-00-5E-00-01-01 G0/1(连 Master)
真实 MAC(R1) 00-1A-2B-3C-4D-5E G0/1(连 Master)

这没有问题,就像一个人有身份证号(真实 MAC)和工号(虚拟 MAC),但在公司门禁系统中,两个号都指向同一个人的办公位。

故障切换时,只有虚拟 MAC 需要更新

原 Master R1 故障后,新 Master R2 发送免费 ARP(源 MAC = 虚拟 MAC),交换机收到后,会更新 MAC 地址表:

  • 虚拟 MAC 00-00-5E-00-01-01 现在对应的端口从 G0/1 改为 G0/2(连接 R2)。

真实 MAC(R1)的记录呢?

  • 交换机中的 00-1A-2B-3C-4D-5E → G0/1 这条条目仍然存在 ,因为交换机还没有收到 R1 的任何新帧来触发老化(默认老化时间 300 秒)。但这条记录不影响主机数据流量,因为主机发送的帧目的 MAC 是虚拟 MAC,不是 R1 的真实 MAC。

为什么流量不会出错?

关键点:主机发出的数据帧,目的 MAC 始终是虚拟 MAC 。交换机会根据虚拟 MAC 表项转发到新 Master 的端口。真实 MAC 表项虽然还指向老端口,但没有任何数据帧的目的 MAC 是那个真实 MAC(除非有人直接 ping R1 的物理 IP,但那不是主机访问外网的场景)。

所以故障切换时,交换机只需要更新虚拟 MAC 的映射即可。 真实 MAC 的表项即使暂未老化,也不影响主机的正常通信。

交换机的 MAC 地址表同时保存虚拟 MAC 和真实 MAC,但主机流量只使用虚拟 MAC 做目的地址。故障切换时,新 Master 通过免费 ARP 更新虚拟 MAC 的端口映射,真实 MAC 的旧表项即使暂时残留也不影响主机通信,因为没有任何数据包会查询那个旧的真实 MAC 条目。


三、真实 MAC 有什么用?为什么还需要它?

虽然对外通信使用虚拟 MAC,但真实 MAC 在以下场景仍然必不可少:

场景 说明
VRRP 协议报文 Master 和 Backup 之间发送的 VRRP 通告(组播 224.0.0.18),源 MAC 是真实 MAC,而不是虚拟 MAC。这样交换机才能区分不同物理设备。
设备管理 管理员通过 SSH、Telnet 或 SNMP 直接管理 Master 或 Backup 的物理 IP 时,使用的就是真实 MAC。
路由协议 如果路由器上运行 OSPF、BGP 等,邻居之间建立会话使用物理接口的真实 MAC 和 IP。
三层转发 Master 将数据包发往外部网络时,在出口链路上重新封装以太网帧,源 MAC 是出口接口的真实 MAC(不是虚拟 MAC)。
交换机学习真实 MAC 交换机通过 VRRP 通告等报文学习到真实 MAC 与端口的映射,这主要用于设备之间的直接单播通信(如管理、路由协议),不用于主机数据转发。

结论:真实 MAC 是设备自身的"身份证",用于底层协议、管理和对外通信;虚拟 MAC 是 VRRP 组对外提供的"服务商标",用于主机数据流量的稳定转发。




VRRP状态机

一、只有三种状态

状态 角色
Initialize 初始状态(刚启动或接口挂了)
Backup 备机(监听,不转发流量)
Master 主机(发通告,转发流量)

二、状态如何变化

场景1:设备刚启动(接口Up)

  • 如果是IP地址拥有者(优先级=255) → 直接变 Master

  • 如果不是IP地址拥有者(优先级<255) → 先变 Backup

场景2:Backup状态时

发生什么 变成什么 一句话原因
长时间没收到Master的通告 Master Master死了,我顶上
收到优先级比自己低的Master通告 + 开启抢占 Master 我更强,我抢过来
收到优先级比自己高的Master通告 保持Backup 对方更强,我老实待着
接口Down Initialize 物理挂了,重新开始

场景3:Master状态时

发生什么 变成什么 一句话原因
收到优先级比自己高的通告 Backup 对方更强,我让位
收到优先级相同但对方IP更大的通告 Backup 对方IP更大,我让位
接口Down Initialize 物理挂了,重新开始

Master变Backup:因为遇到了更强的对手。Backup变Master:因为对手死了(超时),或者自己更强且开了抢占。


特殊优先级

一、先定义清楚:什么是"IP地址拥有者"?

IP地址拥有者 = 在物理接口上配置的真实IP地址,恰好等于该VRRP组的虚拟IP地址的那台路由器。

正确示例:

  • 虚拟IP = 192.168.1.1

  • 路由器A的接口真实IP = 192.168.1.1/24 → 路由器A是 IP地址拥有者

  • 路由器B的接口真实IP = 192.168.1.2/24 → 路由器B不是

注意:虚拟IP可以与任何物理IP不同,也可以相同。只有相同时,该路由器才是拥有者。


二、为什么IP地址拥有者的优先级必须为255?(逻辑推导)

前提事实:

  1. 局域网内所有主机将虚拟IP 作为默认网关(例如 192.168.1.1)。

  2. 当主机访问网关时,它会发送ARP请求解析 192.168.1.1 的MAC地址。

  3. 谁拥有这个虚拟IP的物理配置? 只有IP地址拥有者(路由器A)的真接口上配着 192.168.1.1。因此,ARP响应一定是路由器A发出的,主机会把流量发给路由器A的MAC。

问题来了:

  • 如果路由器A因为VRRP选举成了Backup(例如优先级被调低),它不转发流量、不应答虚拟IP的ARP(作为Backup它不承担网关角色)。

  • 但主机已经发了ARP得到路由器A的MAC,流量依然源源不断发给路由器A,而路由器A作为Backup会丢弃流量 → 网络瘫痪

解决方案:

  • 必须保证:只要路由器A(IP地址拥有者)存活,它就是Master,没有例外

  • 所以VRRP规定:IP地址拥有者的优先级强制为255 (最高),且不可配置。优先级255意味着:

    • 无论其他路由器优先级多高、是否开启抢占,都无法抢夺Master。

    • 拥有者一旦启动VRRP,立即成为Master(不经过Backup)。

结论:优先级255 = 绝对Master。


三、优先级0是什么?

优先级0不参与正常竞选,它是个"自杀信号"。

  • 何时发送:当Master要主动退出VRRP角色时(如接口down、管理员关闭VRRP、优先级被人为降低到0以下)。

  • 发送内容:Master发出一个VRRP通告,其中优先级字段=0。

  • Backup收到后 :立即切换为Master,不需要等待Master_Down_Timer超时(快速切换,通常几十毫秒)。

为什么需要优先级0?

正常情况下,Master挂了,Backup要等3秒多才能切换。但Master主动退出时,如果也等3秒,会造成不必要的业务中断。发送优先级0,Backup瞬间接替,业务几乎无感知。


四、一张表总结优先级0和255

优先级 谁设置 何时出现 作用
255 系统自动(不可改) 仅当接口真实IP = 虚拟IP时 保证拥有者永远是Master
0 Master主动发送(不可手动配置为静态优先级) Master主动放弃角色时 让Backup立即接管,不用等超时
1-254 手动配置 非拥有者正常竞选 决定谁当Master(数值大者优先)

VRRP的问题及华为的解决方案

普通VRRP的问题

  • 多VRRP组时:内网侧一个组,外网侧一个组。

  • 如果外网口断了,只会降低外网组的优先级,外网组的主备切换了,但内网组的主还是原来的。

  • 结果 :流量走到旧主设备,但它外网不通 → 业务断

普通VRRP的应对方式(track)

  • track 追踪上行链路,检测到故障后主动降低本设备所有VRRP组的优先级

  • 这样内外网组的主会一起切换到备机 → 解决"主备不一致"问题。

  • 但仍有切换速度慢、状态不共享等不足。

华为防火墙的整机方案(VGMP + HRP)

核心思想

把"接口级"的VRRP抽象成"设备级"的主备。

  • VGMP:把所有VRRP组捆绑成一个"设备组"。

    • 组状态只有 Active(主)Standby(备)

    • 任何一个VRRP组状态变化,都强制同步到所有组 → 保证两台设备的主备状态永远一致

  • HRP :主备之间实时同步会话表、NAT表、Server-map等状态信息。

    • 切换时业务完全不中断,不需要重新建连接。

一句话总结

普通VRRP + track 只能解决"接口级"的联动问题,但切换慢、不共享状态
华为VGMP + HRP 将VRRP提升为"整机级"高可用,主备状态一致 + 会话同步,实现真正无感知切换。

相关推荐
阿Y加油吧2 小时前
小林计算机网络・传输篇TCP/UDP|三次握手|四次挥手|可靠传输
网络
其实防守也摸鱼2 小时前
面试常问问题总结--渗透测试工程师方向
网络·sql·面试·职场和发展·xss·工具·owasp
刘佬GEO2 小时前
线下医美机构做 GEO 的实际价值:从策略到效果拆解
网络·人工智能·搜索引擎·ai·语言模型
2501_913061342 小时前
网络原理知识(7)
java·网络·面试
zs宝来了2 小时前
网络篇11-本机网络IO工作原理
服务器·网络·tcp/ip
YaBingSec2 小时前
玄机靶场-2024ccb初赛sc05 WP
android·运维·网络·笔记·安全·ssh
S1998_1997111609•X2 小时前
company:/erp:-9/po-api=-TCP—iOSUCdc.=no?=-ERP•£
网络协议·百度·ssh
CPUOS20103 小时前
嵌入式C语言高级编程之接口隔离原则
c语言·网络·接口隔离原则
万法若空3 小时前
TCP网络编程基础
服务器·网络·tcp/ip