#import "labtemplate.typ": * #show: nudtlabpaper.with(title: "虚拟路由器冗余协议(VRRP)配置", author: "程景愉", id: "202302723005", training_type: "无军籍", grade: "2023", major: "网络工程", department: "计算机学院", advisor: "张军", jobtitle: "工程师", lab: "306-707", date: "2025.09.26", header_str: "《网络工程》实验报告", ) #set page(header: [ #set par(spacing: 6pt) #align(center)[#text(size: 11pt)[《网络工程》实验报告]] #v(-0.3em) #line(length: 100%, stroke: (thickness: 1pt)) ],) #show heading: it => box(width: 100%)[ #v(0.50em) #set text(font: hei) #it.body ] #outline(title: "目录",depth: 3, indent: 1em) // #pagebreak() #outline( title: [图目录], target: figure.where(kind: image), ) #show heading: it => box(width: 100%)[ #v(0.50em) #set text(font: hei) #counter(heading).display() // #h(0.5em) #it.body ] #set enum(indent: 0.5em,body-indent: 0.5em,) #pagebreak() = 实验目的 1. 了解虚拟路由器冗余协议(VRRP)的基本概念; 2. 掌握VRRP协议的工作原理; 3. 掌握VRRP协议的配置方法。 #para[ 通过本实验,我将学习虚拟路由器冗余协议(VRRP)的基本概念,理解其在提高网络可靠性和可用性方面的重要作用,并熟悉其工作机制,包括虚拟路由器角色的划分、主备切换的触发条件及优先级的配置影响。同时,通过实际配置VRRP协议,我将掌握相关命令和参数的设置方法,了解如何根据网络需求优化配置以确保高效稳定的运行。实验还将通过模拟网络故障场景,验证VRRP在主路由器失效情况下的自动切换能力和高可用特性,帮助深入理解冗余技术的应用价值。此外,实验还将增强对冗余协议(如HSRP、GLBP)与负载均衡技术异同点的认识,为在实际网络环境中应用和维护相关技术奠定基础。 ] = 实验原理 == VRRP概述 #para[ 单网关、多网关这两种设计方案都要有各自的缺点。单网关缺陷:当路由器的网关接口发生故障时会导致无法与本网段下的所有主机正常通信。多网关缺陷:主机的网关只可以有一个,如果存在多个网关会导致IP地址冲突,无法正常寻址。 ] #para[ 而虚拟路由器冗余协议(Virtual Router Redundancy Protocol,简称VRRP)能够在不改变组网的情况下,将多台路由器虚拟成一个虚拟路由器,通过配置虚拟路由器的IP地址为默认网关,实现网关的冗余备份,提高网络的可靠性和可用性。 ] == VRRP术语 - 虚拟路由器(Virtual Router):由多台路由器组成的一个虚拟路由器,提供默认网关服务。 - 主路由器(Master Router):虚拟路由器中的主要路由器,提供默认网关服务。 - 备份路由器(Backup Router):虚拟路由器中的备用路由器,当主路由器失效时,备份路由器接管主路由器的工作。 - 路由器ID(Router ID):路由器的唯一标识,用于VRRP协议中的路由器选举。 == VRRP工作原理 === 路由器选举 #para[ VRRP路由器选举是指在一个VRRP组中,多台路由器通过VRRP协议选举出主路由器。VRRP备份组中的设备根据优先级选举出Master。选举规则:比较优先级的大小,优先级高者当选为Master设备。当两台设备优先级相同时,如果已经存在Master,则其保持Master身份,无需继续选举;如果不存在Master,则继续比较接口IP地址大小,接口IP地址较大的设备当选为Master设备。 ] === 工作机理 #para[ 主备切换过程:Master设备通过发送免费RP报文,将虚拟MAC地址通知给与它连接的设备或者主机,从而承担报文转发任务。Master和Backup中会以Advertisement_Interval(一般是1秒)的时间互相发送通告报文,当Backup设备在Master_Down_Interval定时器超时后没有收到对方的通告,可认为已经Master设备发生故障。还有一种情况是Master主动弃置地位,Master发送优先级为0的通告报文,不用等定时器超时,经过Skew_Time的时间Backup主动成为Master。注意: ] $ "Master_Down_Interval"=3×"Advertisement_Interval" plus "Skew_Time" $ $ "Skew_Time"=(256-"Backup设备的优先级")/256 $P.S. 单位均为秒。 #para[ 恢复过程:当原Master的故障已经恢复会触发抢占机制,抢占时间为0,即现Master地位变为Backup。 ] #para[ 此外,如果虚拟路由器都在互发通告时,由于网络拥塞,使得Master没有在规定时间内接受到对端报文,变成Backup,Backup变为Master,但是此时,原Master又接受到了原Backup的通告,这样会使他们的地位不断地发生变化,导致网络震荡。我们可以配置抢占时间,在Backup等待了定时器超时,在等待delay超时仍然没有对方的通告时,则宣告自己为Master。 ] = 实验环境 == 实验背景 #para[ 本实验模拟企业网络场景。公司内员工所用电脑,如 PC-1、PC-2,通过交换机LSW1 连接到公司网络,LSW1 连接到公司出口网关路由器。为了提高网络的可靠性,公司使用两台路由器 R2 与 R3 作为双出口连接到外网路由器 RI。RI、R2、R3之间运行 OSPF 协议。在双网关的情况下,如果在 PC 上配置 R2 或 R3 的真实 IP地址作为网关,当其中一台路由器故障时,就需要手动更改 PC 的网关 IP,若网络中有大量 PC 则需要耗费大量时间和人力去更改配置,且会带来一定时间的断网影响。为了能够使故障所造成的断网影响达到最小化,增强网络的可靠性,网络管理员在R4 与 R3 之间部署 VRRP 协议,这样当任一网关发生故障时就能自动切换而无需更改 PC 的网关 IP 地址。 ] == 实验设备 #align(center)[#table( columns: (auto, auto,auto), rows:(1.5em,1.5em,2.5em), inset: 10pt, align: horizon+center, table.header( [*设备名称*], [*设备型号*], [*设备数量*] ), "交换机", "华为S5735", "1", "路由器", "华为R6120-S", "3", "PC", "联想启天M410 Windows 10", "2", )] #para[ 另有网线若干,控制线2条。 ] = 实验步骤及结果 == 实验拓扑 #para[ 按实验背景,绘制拓扑图如下: ] #figure(image("拓扑图.png",format: "png",fit:"stretch",width: 100%),caption: "实验拓扑图") == 按照拓扑图接线 #para[ 按照拓扑图接线。 ] #figure(image("接线图正面.jpg",format: "jpg",fit:"stretch",width: 100%),caption: "机柜正面接线图") #figure(image("接线图后面.jpg",format: "jpg",fit:"stretch",width: 100%),caption: "机柜背面接线图") == 配置PC #para[ 设置PC1的IP地址为`172.16.1.1`,设置PC2的IP地址为`172.16.1.2`,网关均为`172.16.1.254`。 ] == 配置OSPF协议实现互通 === 配置路由器IP地址 #para[ 配置R1的G0/0/0口IP地址为`172.18.2.254/24`,G0/0/1口IP地址为`172.16.3.254/24`;配置R2的G0/0/0口IP地址为`172.16.2.100/24`,G0/0/1口IP地址为`172.16.1.100/24`;配置R3的G0/0/0口IP地址为`172.16.3.200/24`,G0/0/1口IP地址为`172.16.1.200/24`。 ] #figure(image("step1.jpg",format: "jpg",fit:"stretch",width: 70%),caption: "配置R1的接口IP地址(1)") #figure(image("step2.jpg",format: "jpg",fit:"stretch",width: 70%),caption: "配置R1的接口IP地址(2)") #figure(image("step3.jpg",format: "jpg",fit:"stretch",width: 70%),caption: "配置R2的接口IP地址(1)") #figure(image("step4.jpg",format: "jpg",fit:"stretch",width: 70%),caption: "配置R2的接口IP地址(2)") #figure(image("step5.jpg",format: "jpg",fit:"stretch",width: 70%),caption: "配置R3的接口IP地址(1)") #figure(image("step6.jpg",format: "jpg",fit:"stretch",width: 70%),caption: "配置R3的接口IP地址(2)") === 配置OSPF协议 #para[ 为R1,R2,R3配置OSPF协议,实现三台路由器之间的互通。 ] #figure(image("step7.jpg",format: "jpg",fit:"stretch",width: 70%),caption: "为R1配置OSPF协议") #figure(image("step8.jpg",format: "jpg",fit:"stretch",width: 70%),caption: "为R2配置OSPF协议") #figure(image("step9.jpg",format: "jpg",fit:"stretch",width: 70%),caption: "在R3查看OSPF邻居关系") == 配置VRRP协议 #para[ 在R2和R3的内网接口上配置VRRP。 ] #figure(image("step10.jpg",format: "jpg",fit:"stretch",width: 70%),caption: "在 R2 (主网关) 上配置 VRRP (1)") #figure(image("step11.jpg",format: "jpg",fit:"stretch",width: 70%),caption: "在 R2 (主网关) 上配置 VRRP (2)") #figure(image("step12.jpg",format: "jpg",fit:"stretch",width: 70%),caption: "在 R3 (备网关) 上配置 VRRP (1)") == 配置检验 #para[ 使用`display vrrp`命令查看VRRP组的状态,确认Master和Backup的状态。 在R2上执行`display vrrp`命令,显示如下: ] #figure(image("step14.jpg",format: "jpg",fit:"stretch",width: 70%),caption: "R2显示VRRP组状态") #para[ 可以看到R2的G0/0/1口为Master,状态为Master,优先级为120。 在R3上执行`display vrrp`命令,显示如下: ] #figure(image("step13.jpg",format: "jpg",fit:"stretch",width: 70%),caption: "R3显示VRRP组状态") #para[ R3的G0/0/1口为Backup,状态为Backup,优先级为100。 此时使用`traceroute`命令检验PC1到R1的连通性,显示如下: ] #figure(image("step15.jpg",format: "jpg",fit:"stretch",width: 55%),caption: "traceroute命令查看路由") #para[ @beforeoff 中显示从PC1到R1的路径为`172.16.2.1->172.16.1.200->172.18.2.254`,经过的是R2。 现在对R2的G0/0/1口执行`shutdown`命令关闭该接口,再次使用`traceroute`命令检验连通性,显示如下: ] #figure(image("step17.jpg",format: "jpg",fit:"stretch",width: 55%),caption: "断开后traceroute命令查看路由") #para[ @afteroff 中显示从PC1到R1的路径出现变化,VRRP协议生效,实现了主备切换,保证了网络的连通性。 ] #figure(image("step16.jpg",format: "jpg",fit:"stretch",width: 55%),caption: "断开后ping命令查看连通性") #para[ 最后,再对R2的G0/0/1口添加track功能,监控接口状态,当接口恢复时,自动切换回主路由器。 ] #figure(image("step18.jpg",format: "jpg",fit:"stretch",width: 50%),caption: "开启track功能监控接口状态") #para[ 至此,VRRP协议配置完成,PC1与PC2之间的通信实现了冗余备份。 ] = 实验总结 #para[ 通过本次实验,我了解了虚拟路由器冗余协议(VRRP)的基本概念和工作原理,掌握了VRRP协议的配置方法。VRRP协议通过将多台路由器虚拟成一个虚拟路由器,提供默认网关服务,实现了网关的冗余备份,提高了网络的可靠性和可用性。在实验中,我按照实验步骤,配置了VRRP协议,通过检验,确认了Master和Backup的状态,验证了主备切换的过程,实现了网络的冗余备份。通过本次实验,我不仅掌握了VRRP协议的配置方法,还加深了对冗余技术的应用价值的理解,为今后在实际网络环境中应用和维护相关技术打下了基础。 ] #show heading: it => box(width: 100%)[ #v(0.50em) #set text(font: hei) // #counter(heading).display() // #h(0.5em) #it.body ] #pagebreak() #bibliography("ref.yml",full: true,title: "参考文献",style:"gb-7714-2015-numeric")