随着Internet的日益普及,人们对网络的依赖性也越来越强。这同时对网络的稳定性提出了更高的要求,人们自然想到了基于设备的备份结构,就像在服务器中为提高数据的安全性而采用双硬盘结构一样。路由器是整个网络的核心和心脏,如果路由器发生致命性的故障,将导致本地网络的瘫痪,如果是骨干路由器,影响的范围将更大,所造成的损失也是难以估计的。因此,对路由器采用热备份是提高网络可靠性的必然选择。在一个路由器完全不能工作的情况下,它的全部功能便被系统中的另一个备份路由器完全接管,直至出现问题的路由器恢复正常,这就是热备份路由协议HSRP(HotStandbyRouterProtocol)
热备份路由器协议(HSRP)的设计目标是支持特定情况下 IP 流量失败转移不会引起混乱、并允许主机使用单路由器,以及即使在实际第一跳路由器使用失败的情形下仍能维护路由器间的连通性。换句话说,当源主机不能动态知道第一跳路由器的 IP 地址时,HSRP 协议能够保护第一跳路由器不出故障。
但HSRP是cisco平台一种特有的技术,是cisco的私有协议。它的工作原理是:负责转发数据包的路由器称之为活动路由器(Active Router)。一旦主动路由器出现故障,HSRP 将激活备份路由器(Standby Routers)取代主动路由器。HSRP 协议提供了一种决定使用主动路由器还是备份路由器的机制,并指定一个虚拟的 IP 地址作为网络系统的缺省网关地址。如果主动路由器出现故障,备份路由器(Standby Routers)承接主动路由器的所有任务,并且不会导致主机连通中断现象。
下面我们举一个实例:
有一家公司有两台路由器,要想做到负载均衡,让公司的两个vlan走不同的路径上网,如Vlan10的从左边路由上网,vlan20从右边路由上网,(当然这里vlan10中的机器也能和vlan20中的机器自由通信)另外当某一台路由器坏掉时,都能从另一台不坏的路由器上网,其简单的拓扑图如下:
先看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的通信:
追踪情况,查看其路径,可以看出走的左边路由器,(左右路由器都做了单臂路由):
我们在做个返回的测试,Vlan20中的机器和vlan10通信:
做个追踪,可以看出通信路径是走的右边的路由器:
这样vlan间的通信,左右路由器可以做到了负载均衡。
再看看和外网的通信情况;
先是vlan10的和外网通信;
看其路径,可以看到是走的左边的路由器:
再看看vlan20和外网的通信情况:
查看路径,可以看其路径走的是右边的路由器:
这样和外网的通信也是实现了负载均衡;
最后我们假设左边的路由器R1坏掉了(down掉s1/0端口):
Router(config)#int s1/0
Router(config-if)#shutdown
在看其和外网通信情况:
还是通的,在查看它的通信路径:
可以看出了它走的是右边路由器,成功了,
最后的完成了,很成功。
谢谢,新手制作,还有很多不足之处,请多多指教!
转载于:https://blog.51cto.com/sf418/967144