随着Internet的日益普及,人们对网络的依赖性也越来越强。这同时对网络的稳定性提出了更高的要求,人们自然想到了基于设备的备份结构,就像在服务器中为提高数据的安全性而采用双硬盘结构一样。路由器是整个网络的核心和心脏,如果路由器发生致命性的故障,将导致本地网络的瘫痪,如果是骨干路由器,影响的范围将更大,所造成的损失也是难以估计的。因此,对路由器采用热备份是提高网络可靠性的必然选择。在一个路由器完全不能工作的情况下,它的全部功能便被系统中的另一个备份路由器完全接管,直至出现问题的路由器恢复正常,这就是热备份路由协议HSRP(HotStandbyRouterProtocol)

     热备份路由器协议(HSRP)的设计目标是支持特定情况下 IP 流量失败转移不会引起混乱、并允许主机使用单路由器,以及即使在实际第一跳路由器使用失败的情形下仍能维护路由器间的连通性。换句话说,当源主机不能动态知道第一跳路由器的 IP 地址时,HSRP 协议能够保护第一跳路由器不出故障。

     但HSRP是cisco平台一种特有的技术,是cisco的私有协议。它的工作原理是:负责转发数据包的路由器称之为活动路由器(Active Router)。一旦主动路由器出现故障,HSRP 将激活备份路由器(Standby Routers)取代主动路由器。HSRP 协议提供了一种决定使用主动路由器还是备份路由器的机制,并指定一个虚拟的 IP 地址作为网络系统的缺省网关地址。如果主动路由器出现故障,备份路由器(Standby Routers)承接主动路由器的所有任务,并且不会导致主机连通中断现象。

     下面我们举一个实例:

     有一家公司有两台路由器,要想做到负载均衡,让公司的两个vlan走不同的路径上网,如Vlan10的从左边路由上网,vlan20从右边路由上网,(当然这里vlan10中的机器也能和vlan20中的机器自由通信)另外当某一台路由器坏掉时,都能从另一台不坏的路由器上网,其简单的拓扑图如下:

wps_clip_p_w_picpath-10498

先看R1的配置:

Router>en  

Router#conf t      进入全局模式

Router(config)#int s1/0   

Router(config-if)#no shutdown     把s1/0端口打开

Router(config-if)#ip add 192.168.1.2 255.255.255.0     给s1/0端口配置地址

Router(config-if)#exit

Router(config)#int f0/0    

Router(config-if)#no shut    打开f0/0端口

Router(config-if)#int f0/0.10   进入f0/0的子接口f0/0.10

Router(config-subif)#encapsulation dot1Q 10    将子接口封装为dot1Q,并做vlan标签10

Router(config-subif)#ip add 192.168.10.1 255.255.255.0   给子接口配置ip

Router(config-subif)#int f0/0.20     进入f0/0的子接口f0/0.20

Router(config-subif)#encapsulation dot1Q 20     将子接口封装为dot1Q,做vlan标签20

Router(config-subif)#ip add 192.168.20.1 255.255.255.0   给20子接口配置地址

Router(config-subif)#exit

Router(config)#int f0/0.10      在子接口上做nat

Router(config-subif)#ip nat inside    要想和外网通信,必须做NAT,f0/0是内口

Router(config-subif)#int f0/0.20

Router(config-subif)#ip nat inside

Router(config-subif)#int s1/0

Router(config-if)#ip nat outside   s1/0为外出接口

Router(config-if)#exit

Router(config)#access-list 10 permit any     做个访问控制列表,允许内网和外网通信

Router(config)#

Router(config)#ip nat inside source list 10 interface s1/0 overload   让列表10中所允许的地址转换成s1/0口的地址出去

Router(config)#ip route 0.0.0.0 0.0.0.0 192.168.1.1  做个静态路由

Router(config)#int f0/0.10

Router(config-subif)#standby 10 ip 192.168.10.254    配置hsrp,建个热备份组,做个虚拟ip,

Router(config-subif)#standby 10 priority 120         设置优先级

Router(config-subif)#standby 10 preempt            设置其抢占功能

Router(config-subif)#standby 10 track serial 1/0 30     设置跟踪s1/0,当s1/0不通是,自动降30的优先级

Router(config-subif)#int f0/0.20      再进入f0/0.20的子接口中

Router(config-subif)#standby 20 ip 192.168.20.254     也配置个组号为20的备份组

Router(config-subif)#standby 20 preempt      设置抢占功能

Router(config-subif)#exit                   这里没有配置优先级,因为默认的为100;

路由器R2的配置:

Router>en  

Router#conf t

Router(config)#int s1/1

Router(config-if)#no shut

Router(config-if)#ip add 192.168.2.2 255.255.255.0

Router(config)#int f0/0

Router(config-if)#no shut

Router(config-if)#int f0/0.10         创建子接口,并配置此接口的信息

Router(config-subif)#encapsulation dot1Q 10

Router(config-subif)#ip add 192.168.10.2 255.255.255.0

Router(config-subif)#int f0/0.20

Router(config-subif)#encapsulation dot1Q 20

Router(config-subif)#ip add 192.168.20.2 255.255.255.0

Router(config-subif)#exit

Router(config)#int s1/1           在相应的端口上配置nat信息

Router(config-if)#ip nat outside

Router(config-if)#int f0/0.10

Router(config-subif)#ip nat inside

Router(config-subif)#int f0/0.20

Router(config-subif)#ip nat inside

Router(config)#access-list 10 permit any

Router(config)#ip nat inside source list 10 interface s1/1 overload

Router(config)#ip route 0.0.0.0 0.0.0.0 192.168.2.1     和外网通信,需做默认路由

Router(config)#int f0/0.10       在相应的端口上做hsrp,并配置相应信息

Router(config-subif)#standby 10 ip 192.168.10.254 

Router(config-subif)#standby 10 preempt

Router(config-subif)#int f0/0.20

Router(config-subif)#standby 20 ip 192.168.20.254

Router(config-subif)#standby 20 priority 120

Router(config-subif)#standby 20 preempt

Router(config-subif)#standby 20 track s1/1 30

Router(config-subif)#exit

路由器R3的配置;

Router>en  

Router#conf t

Router(config)#int f0/0     配置f0/0端口上信息,设置此端口为外网,

Router(config-if)#no shut

Router(config-if)#ip add 202.102.224.25 255.255.255.0   配置外网端口的ip

Router(config-if)#int s1/0

Router(config-if)#no shut

Router(config-if)#ip add 192.168.1.1 255.255.255.0   配置s1/0端口的ip

Router(config-if)#int s1/1

Router(config-if)#no shut

Router(config-if)#ip add 192.168.2.1 255.255.255.0   配置s1/1端口的ip

Router(config-if)#

交换机SW1的配置:

sw1#vlan d

sw1#vlan database     建个vlan数据库

sw1(vlan)#vlan 10      创建vlan10

VLAN 10 added:

    Name: VLAN0010

Router(vlan)#vlan 20     创建vlan20

VLAN 20 added:

    Name: VLAN0020

sw1(vlan)#exit

APPLY completed.

sw1#conf terminal

sw1(config)#int range fastEthernet 0/2 - 10    把这些端口放在vlan10中

sw1(config-if-range)#switchport access vlan 10

sw1(config-if-range)#exit

sw1(config)#int range fastEthernet 0/11 - 15    把这些端口放在vlan20中

sw1(config-if-range)#sw

sw1(config-if-range)#switchport a

sw1(config-if-range)#switchport access vlan 20

sw1(config-if-range)#exit

sw1(config)#int f0/0

sw1(config-if)#switchport mode trunk     把此端口设置成trunk接口

sw1(config-if)#int f0/1

sw1(config-if)#switchport mode trunk      把此端口设置成trunk接口

最后一个SW2的配置:

sw2(config)#int f0/0     

sw2(config-if)#switchport mode trunk     把此端口设置成trunk接口

sw2(config-if)#int f0/1

sw2(config-if)#switchport mode trunk      把此端口设置成trunk接口

sw2(config-if)#exit

sw2(config)#exit

sw2#vlan database    配置相应的vlan信息

sw2(vlan)#vlan 10

VLAN 10 added:

    Name: VLAN0010

sw2(vlan)#vlan 20

VLAN 20 added:

    Name: VLAN0020

sw2(vlan)#exit

APPLY completed.

Exiting....

sw2#conf t

sw2(config)#int range fastEthernet 0/2 - 10    把这些端口加入到vlan中

sw2(config-if-range)#switchport access vlan 10

sw2(config-if-range)#exit

sw2(config)#int range f0/11 - 15

sw2(config-if-range)#switchport access vlan 20

sw2(config-if-range)#exit

查看结果:

我们看vlan10和vlan20的通信:

wps_clip_p_w_picpath-14629

追踪情况,查看其路径,可以看出走的左边路由器,(左右路由器都做了单臂路由):

wps_clip_p_w_picpath-7074

我们在做个返回的测试,Vlan20中的机器和vlan10通信:

wps_clip_p_w_picpath-21355

做个追踪,可以看出通信路径是走的右边的路由器:

wps_clip_p_w_picpath-1665

这样vlan间的通信,左右路由器可以做到了负载均衡。

再看看和外网的通信情况;

先是vlan10的和外网通信;

wps_clip_p_w_picpath-13664

看其路径,可以看到是走的左边的路由器:

wps_clip_p_w_picpath-2570

再看看vlan20和外网的通信情况:

wps_clip_p_w_picpath-31525

查看路径,可以看其路径走的是右边的路由器:

wps_clip_p_w_picpath-25022

这样和外网的通信也是实现了负载均衡;

最后我们假设左边的路由器R1坏掉了(down掉s1/0端口):

Router(config)#int s1/0   

Router(config-if)#shutdown

在看其和外网通信情况:

wps_clip_p_w_picpath-10923

还是通的,在查看它的通信路径:

wps_clip_p_w_picpath-6762

可以看出了它走的是右边路由器,成功了,

最后的完成了,很成功。

 

 

 

 

谢谢,新手制作,还有很多不足之处,请多多指教!