4.1.4 虚拟路由冗余协议

摘要
虚拟路由冗余协议(VRRP)是一种网络协议,用于提高网络可靠性。它通过将多台路由器组成一个虚拟路由器组,共同对外提供服务,当主路由器发生故障时,备份路由器能够自动接管,确保网络连接不中断。本实验将演示如何配置和测试VRRP协议。

VRRP网络拓扑图

信息
在上图中,R1和R2共同组成一个虚拟路由器,为PC1提供网关服务。正常情况下,R1作为主路由器处理数据转发,当R1发生故障时,R2会自动接管,保证网络连通性。
  • 虚拟IP地址(VIP):10.0.2.1 (作为PC1的网关)
  • R1 接口IP(连接交换机):10.0.2.2/24
  • R2 接口IP(连接交换机):10.0.2.3/24
  • PC1 IP地址:10.0.2.4(手动配置或DHCP)
    • 网关:10.0.2.1(指向虚拟IP地址)
虚拟IP地址
虚拟IP地址(VIP)是VRRP的核心概念,它是一个不属于任何物理接口的IP地址,由当前的主路由器负责响应。终端设备(如PC1)将VIP设置为网关,无需关心实际提供服务的是哪台物理路由器。
  • 虚拟路由器ID(VRID):1(R1和R2相同)
  • R1优先级:105(默认为Master)
  • R2优先级:100(默认值即100,可不配置)
  • 抢占模式:在R1上启用(演示主路由恢复后重新抢占)
优先级
VRRP中,优先级较高的路由器会成为主路由器(Master)。当启用抢占模式时,如果优先级更高的路由器恢复在线,它会从当前的备份路由器手中"抢回"主路由器的角色。

按照网络规划的参数配置PC1的IP地址、子网掩码和网关:

  • IP地址:10.0.2.4
  • 子网掩码:255.255.255.0
  • 默认网关:10.0.2.1(指向虚拟IP地址,而非任何一台物理路由器)
技巧
终端设备只需要知道虚拟IP地址作为网关,不需要关心背后实际工作的是哪台物理路由器,这正是VRRP的优势所在。

在R1的系统视图下执行以下配置:

shell

# 配置连接交换机的接口
interface eth0/0/0
ip address 10.0.2.2 24           # 分配物理接口IP地址

# 配置VRRP
vrrp vrid 1 virtual-ip 10.0.2.1  # 设置虚拟路由器ID和虚拟IP
vrrp vrid 1 priority 105         # 设置优先级为105,高于默认值100
vrrp vrid 1 preempt-mode timer delay 5  # 启用抢占模式,延迟5秒
quit

# 配置另一个接口(连接R2)
# 该接口用于路由器间通信和心跳检测
interface eth0/0/1
ip address 10.0.100.2 24
quit
信息
优先级105使R1成为主路由器,抢占模式确保R1在恢复后能重新接管主路由器角色。延迟5秒是为了防止网络抖动导致频繁切换。

在R2的系统视图下执行以下配置:

shell

# 配置连接交换机的接口
interface eth0/0/0
ip address 10.0.2.3 24           # 分配物理接口IP地址

# 配置VRRP
vrrp vrid 1 virtual-ip 10.0.2.1  # 设置相同的虚拟路由器ID和虚拟IP
# R2使用默认优先级100,无需额外配置
quit
警告
确保R1和R2的虚拟路由器ID(VRID)和虚拟IP地址完全相同,否则它们将不会形成一个VRRP组。

在R1和R2上分别执行以下命令,检查VRRP的运行状态:

shell

display vrrp brief              # 显示VRRP概要信息
display vrrp vrid 1             # 显示VRID为1的详细信息

对以下两个接口进行抓包分析:

抓包位置示意图

从 PC1 ping 虚拟网关(10.0.2.1)进行测试:

text

ping 10.0.2.1

观察抓包结果,你会发现只有一个接口上有 ICMP 数据包,这表明当前只有主路由器(R1)在响应ARP请求并处理数据包。

没有ICMP数据包的那个路由器(即当前的主路由器R1)关闭或断开连接,模拟故障情况:

shell

# 在R1上执行关闭接口命令
interface eth0/0/0
shutdown

再次从 PC1 ping 网关(10.0.2.1),观察结果:

  • ping应该仍然成功
  • 在另一个接口(R2)上现在能够看到ICMP数据包
故障转移成功
如果测试成功,说明当主路由器R1发生故障时,备份路由器R2成功接管了虚拟IP地址,网络连通性没有中断。这正是VRRP协议的核心价值!

恢复R1的接口,观察是否会重新抢占主路由器角色:

shell

# 在R1上执行恢复接口命令
interface eth0/0/0
undo shutdown
技巧
由于我们在R1上配置了抢占模式,当R1恢复后,它会在延迟5秒后重新成为主路由器。这可以通过再次检查VRRP状态和抓包分析来验证。

相关内容