本帖最后由 Roye2012 于 2012-12-25 11:13 编辑
学习耿叔CCNP视频第14部的时候,其中PBR案例四非常经典,不过明显耿叔稍微偷了点懒,没有配合Cisco SLA来帮助切换链路(CCNP视频13);并且叔做NAT的时候是通过Route-map中match ip + match出接口,NAT调用实现的,用了4条NAT。当时我在想,无论链路如何切换,最后出口都只有2个,能否直接Route-map中match出接口,NAT调用实现呢?
我的实验报告分享下:
需求概述
1、PC1访问Internet默认走ISP1(R1-R2),但R1-R2链路down之后能自动切换到ISP2(R1-R3);
2、PC2访问Internet默认走ISP2(R1-R3),但R1-R3链路down之后能自动切换到ISP1(R1-R2);
3、内网为私有IP,访问公网需要通过公网地址。
实验过程 一、配置基本信息。 配置如下: R1(config)#int fa0/0
R1(config-if)#ip add 192.168.10.254 255.255.255.0 R1(config-if)#ip add 192.168.20.254 255.255.255.0 secondary R1(config-if)#no shut
R1(config-if)#int fa1/0
R1(config-if)#ip add 12.1.1.1 255.255.255.0 R1(config-if)#no shut
R1(config-if)#int fa2/0
R1(config-if)#ip add 13.1.1.1 255.255.255.0 R1(config-if)#no shut
R2(config)#int fa0/0
R2(config-if)#ip add 12.1.1.2 255.255.255.0 R2(config-if)#no shut
R2(config)#int lo 0
R2(config-if)#ip add 4.4.4.4 255.255.255.0
R3(config)#int fa0/0
R3(config-if)#ip add 13.1.1.3 255.255.255.0 R3(config-if)#no shut
R3(config)#int lo 0
R3(config-if)#ip add 4.4.4.4 255.255.255.0
PC1(config)#no ip routing
PC1(config)#int fa0/0
PC1(config-if)#ip add 192.168.10.1 255.255.255.0 PC1(config-if)#no shut
PC1(config-if)#exit
PC1(config)#ip default-g 192.168.10.254
PC2(config)#no ip routing
PC2(config)#int fa0/0
PC2(config-if)#ip add 192.168.20.1 255.255.255.0 PC2(config-if)#no shut
PC2(config-if)#exit
PC2(config)#ip default-g 192.168.20.254
二、配置SLA,监测R1到ISP1和ISP2链路的可达性。 监测到ISP1链路(R1-R2)和监测到ISP2链路(R1-R3): R1(config)#ip sla monitor 10 R1(config-sla-monitor-echo)#typeecho protocol ipIcmpEcho 12.1.1.2 source-ipaddr 12.1.1.1 R1(config-sla-monitor-echo)#frequency 10 R1(config-sla-monitor-echo)#exit
R1(config)#ip sla monitor schedule 10 life forever start-time now R1(config)#track 10 rtr 10 reachability R1(config-track)#exit
R1(config)#ip sla monitor 20 R1(config-sla-monitor-echo)#typeecho protocol ipIcmpEcho 13.1.1.3 source-ipaddr 13.1.1.1 R1(config-sla-monitor-echo)#frequency 10 R1(config-sla-monitor-echo)#exit
R1(config)#ip sla monitor schedule 20 life forever start-time now R1(config)#track 20 rtr 20 reachability R1(config-track)#exit
//以上定义了track 10检测到ISP1的可达性,track 20检测到ISP2的可达性。
三、配置策略路由,使PC1访问Internet默认走ISP1(R1-R2),但R1-R2链路down之后能自动切换到ISP2(R1-R3);PC2访问Internet默认走ISP2(R1-R3),但R1-R3链路down之后能自动切换到ISP1(R1-R2)。 R1(config)#access-list 1 per 192.168.10.0 0.0.0.255 //PC1所在网段 R1(config)#access-list 2 per 192.168.20.0 0.0.0.255 //PC2所在网段 R1(config)#route-map cutover per 10 R1(config-route-map)#match ip add 1 R1(config-route-map)#set ip next-hop verify-availability 12.1.1.2 1 track 10 R1(config-route-map)#set ip next-hop verify-availability 13.1.1.3 2 track 20 R1(config-route-map)#exit
R1(config)#route-map cutover per 20 R1(config-route-map)#match ip add 2 R1(config-route-map)#set ip next-hop verify-availability 13.1.1.3 1 track 20 R1(config-route-map)#set ip next-hop verify-availability 12.1.1.2 2 track 10 R1(config-route-map)#exit
R1(config)#int fa0/0
R1(config-if)#ip policy route-map cutover
说明:以上在R1的Fa0/0口上配置了策略路由cutover,实现如下效果:
满足ip add 1,并且下一跳12.1.1.2如可达,强制设置下跳为12.1.1.2
如不可达,则忽略此条Set语句,执行下一条Set语句。
在Set 1语句失效时,满足ip add 1, 并且下一跳13.1.1.3如可达,强制设置下跳为13.1.1.3
如不可达,则忽略此条Set语句,不执行策略路由。
满足ip add 2,并且下一跳13.1.1.3如可达,强制设置下跳为13.1.1.3
如不可达,则忽略此条Set语句,执行下一条Set语句。
在Set 1语句失效时,满足ip add 2, 并且下一跳12.1.1.2如可达,强制设置下跳为12.1.1.2
如不可达,则忽略此条Set语句,不执行策略路由。
总的来说,就是策略路由cutover将根据track 10和track 20监测结果,来决定执行与否命令。
如果检测结果是不可达,那么将拒绝执行此SET命令,匹配下一条SET语句。
其中红字标注的1和2表示执行顺序。
四、配置PAT策略,使PC1和PC2访问外网时可以正确转换为公网地址。 R1(config)#route-map isp1 per 10 R1(config-route-map)#match int fa1/0 R1(config-route-map)#exit
R1(config)#route-map isp2 per 10 R1(config-route-map)#match int fa2/0 R1(config-route-map)#exit
R1(config)#ip nat inside source route-map isp1 int fa1/0 overload R1(config)#ip nat inside source route-map isp2 int fa2/0 overload R1(config)#int fa0/0
R1(config-if)#ip nat inside R1(config-if)#int fa1/0
R1(config-if)#ip nat outside R1(config-if)#int fa2/0
R1(config-if)#ip nat outside R1(config-if)#end
//路由器决定从Fa1/0出去的数据,NAT转换为公网地址12.1.1.1出去。
//路由器决定从Fa2/0出去的数据,NAT转换为公网地址13.1.1.1出去。
五、部分测试。
路由表如下,通过PAT和PBR,PC1和PC2都可以Ping通4.4.4.4
R1#sh ip ro
C 192.168.10.0/24 isdirectly connected, FastEthernet0/0 C 192.168.20.0/24 isdirectly connected, FastEthernet0/0 12.0.0.0/24 is subnetted,1 subnets C 12.1.1.0 is directlyconnected, FastEthernet1/0 13.0.0.0/24 is subnetted,1 subnets C 13.1.1.0 is directlyconnected, FastEthernet2/0
1、在R1上开启debug ip policy后,用PC1去Ping一个远端网络4.4.4.4/24,查看debug信息(截取部分):
R1#deb ip policy
Policy routing debugging is on
R1#
*Mar 1 01:31:00.003: IP:s=192.168.10.1 (FastEthernet0/0), d=4.4.4.4, len 100, FIB policy match *Mar 1 01:31:00.003: IP:s=192.168.10.1 (FastEthernet0/0), d=4.4.4.4, g=12.1.1.2,len 100, FIB policy routed *Mar 1 01:31:00.067: IP:s=192.168.10.1 (FastEthernet0/0), d=4.4.4.4, len 100, FIB policy match *Mar 1 01:31:00.067: IP:s=192.168.10.1 (FastEthernet0/0), d=4.4.4.4, g=12.1.1.2,len 100, FIB policy routed
2、关闭R2上的Fa0/0口,模拟ISP1线路Down掉,用PC1去Ping一个远端网络4.4.4.4/24,查看debug信息(截取部分):
*Mar 1 01:36:46.183: IP:s=192.168.10.1 (FastEthernet0/0), d=4.4.4.4, len 100, FIB policy match *Mar 1 01:36:46.183: IP:s=192.168.10.1 (FastEthernet0/0), d=4.4.4.4, g=13.1.1.3,len 100, FIB policy routed *Mar 1 01:36:46.391: IP:s=192.168.10.1 (FastEthernet0/0), d=4.4.4.4, len 100, FIB policy match *Mar 1 01:36:46.391: IP:s=192.168.10.1 (FastEthernet0/0), d=4.4.4.4, g=13.1.1.3,len 100, FIB policy routed
结果:线路智能切换正常。
实验说明:
1、没有发生链路切换的时候,这里如果在PC1上Ping R3的Fa0/0口或者PC2上Ping R2的Fa0/0口是不通的,但是在现实环境中时可以Ping通的,路线走的是R2和R3之间的Internet线路。
2、R1上虽然没有任何去往远端网络的路由条目,但是PBR中的set ip next-hop会强制把这个数据包发往下一跳,只要PBR中下一跳可达(路由表中有此直连路由条目)。验证方法:例如在R2上开启debug ip icmp,在PC1上随便Ping一个5.5.5.5,看下R2上的debug结果。
|