啥是宿主NAT?
我们人理解,就是部署了route-map,pbr策略路由的NAT
可以实现具体数量走向控制的NAT,实现负载均衡的同时,又存在冗余备份
应用场景,当出现单网关双线接入/多线接入时。
原理:定义PBR指定数据流走向,NAT调用route-map,而不再是list,实现策略部署
我们通过一个实例来看的更加详细一些
R2上做NAT共享上网,电信和联通上都配置有loopback接口,模拟外网
需求:
192.168.1.0网段,默认走左边,故障走右边
192.168.2.0网段,默认走右边,故障走左边
这里的故障,包括(本地接口,以及上行接口)
那要怎么做呢?
先分析后动手,
1 抛开NAT部份,只看PBR,数据分流,在R2上F1/0接口中定义policy,acl抓取两个不同的网段,定义route-map 指定set ip next-hop,OK
2 nat部份,对于下面的那个网段,我如何去定义它和NAT的关联?又上它强制性的走一边呢?(NAT部份是本实例的重点)
3 对于本地接口我可以感知down,而对于远端(中间有中继设备,比如光电转换..)我又如何知道呢?所以这个时候需要 sla + track的使用,那又是如何和我的route-map 挂接的呢?
带着这三个问题,我们一起来看一下,咱们一点一点来,
IP地址部份,我就不用多说了,按照平时的惯例即可
1——定义pbr
Standard IP access list 1 10 permit 192.168.1.0, wildcard bits 0.0.0.255 Standard IP access list 2 10 permit 192.168.2.0, wildcard bits 0.0.0.255 //两个标准的ACL抓取网段 route-map wfy permit 10 match ip address 1 set ip next-hop 12.0.0.1 //强制指定下一跳方向及地址 route-map wfy permit 20 match ip address 2 set ip next-hop 23.0.0.3
2——NAT部份
还是要使用route-map,为什么?方面我在后面调用(NAT调用route-map)
我先定义4条route-map,注意,是4条,不同的名字,
route-map a permit 10 match ip address 1 match interface FastEthernet0/0 route-map b permit 10 match ip address 1 route-map c permit 10 match ip address 2 match interface FastEthernet0/1 route-map d permit 10 match ip address 2
为什么要这么做?
这个要和前面的PBR关联起来,以及route-map 的原理相关
看张图,和route-map a,b对比一下就知道了
红色为route-map a :
我们要求这个网段去访问外网时走左侧,并且PBR也是这样设置的,
那么走左侧都具备哪些因素呢?
网段肯定是要有的,匹配match ip add 1
还有其它的吗?如果没有,那如何区分两边的走向?
它还有一个和对另一侧有区别的地方,那就是接口,f0/0接口,想走左侧,也是必经之路,
并且PBR也是这样定义的,next-hop为12.0.0.1,
那意思就明白了,
也就是说,当一个数据同时满足这两个条件时,我就让你走左侧的NAT
如果当你只能满足一个条件时,对不起,你只能走另一侧了。
话说回来,如何定义两个条件都满足呢?
那就要说回route-map了,
match语句的用法,还记得吗?
1 match x,y , //逻辑的或关系
2 match x //逻辑的且关系
Match y
思路是这样的:可以定义且关系,当同时满足两个条件时,走左侧(后期调用nat时体现),而当接口down掉时,出接口也无法匹配了,
再定义一条只匹配源的route-map,让它走nat的另一个出口,也就是看到的绿色route-map b
因为下面有两个网段,每个网段要写两条,所以共4条。
PS:特别注意一点的是,由于是4条不同名字的route-map,请问它的执行顺序是什么样的呢?
经过本人实测,是按照字母以及数字顺序而定的。
这还要关乎最开始定义的wfy PBR,顺序上不要错乱,否则无法正常NAT
定义完route-map,就要到nat部份进行调用
首先定义nat的接口
Router#show ip nat sta Total active translations: 0 (0 static, 0 dynamic; 0 extended) Outside interfaces: FastEthernet0/0, FastEthernet0/1 Inside interfaces: FastEthernet1/0
定义出接口和入接口
调用route-map
ip nat inside source route-map a interface FastEthernet0/0 overload ip nat inside source route-map b interface FastEthernet0/1 overload ip nat inside source route-map c interface FastEthernet0/1 overload ip nat inside source route-map d interface FastEthernet0/0 overload
决定route-map abcd,走哪一边的出口进行nat,是在这里决定的。
例a
当满足route-map a 条件时,使用f0/0接口进行nat转换,
如果a不满足,则执行b,走f0/1口出去。
3——sla监测
此时,内网的两个网段就可以上网了,
但是问题也随之而来,如果是ISP方面出现问题,或者说由于中间的中继设备出现问题,是不是我本地R2就无法感知,这个之前咱们应该是讲过sla,(如果真没记录过,则敬请期待吧,后期一定要加上的)
这里需要提示一下,由于各IOS版本有所不同,有可能命令有些许不同,不要担心,意思大概就是这样意思了
先做左侧,
ip sla monitor 1 ///定义进程 type echo protocol ipIcmpEcho 12.0.0.1 source-interface FastEthernet0/0 //使用什么协议进行检测,以及本地源使用的是谁 frequency 5 //间隔时间 ip sla monitor schedule 1 life forever start-time now //开始这个进程直到永远 track 1 rtr 1 reachability //使用track进行关联它的连通性 route-map wfy permit 10 match ip address 1 set ip next-hop verify-availability 12.0.0.1 1 track 1 //第一个下一跳关联track,当trackdown,这个也down ,则转入第二个下一跳, set ip next-hop 23.0.0.3
再是右侧
ip sla monitor 2 type echo protocol ipIcmpEcho 23.0.0.3 source-interface FastEthernet0/1 frequency 5 ip sla monitor schedule 2 life forever start-time now track 2 rtr 2 reachability route-map wfy permit 20 match ip address 2 set ip next-hop verify-availability 23.0.0.3 1 track 2 set ip next-hop 12.0.0.1
测试阶段
192.168.1.0测试到达100.1.1.1的路径
此时将r2上的F0/0接口断掉,会走哪一边?
可以正常的进行切换,没有问题,而且是很短的时间
把R2接口恢复,现在将R1的接口断掉,看看效果
随着ISP方的接口down掉,R2上的track有所感知,状态由up-down
在PC上进行测试也是一样的效果,顺利的进行了切换。
----------------------------------------------------------
CCIE成长之路 --- 梅利