非常有意思的策略地址转换故障排查

某客户要求本地主机A10.1.1.1)新增访问需求,原主机A在边界路由器将地址转换为A123.1.1.30)后访问外联单位的主机B1.1.1.1),现新增加一个系统C3.3.3.3,需要将地址转换为A223.1.1.31)去访问。如下图所示网络结构,R3模拟外联单位路由器,R4模拟互联网;

wKioL1YCKCjD2hWhAACxfqqRDQ0726.jpg


简单来说就是一个策略NAT

A10.1.1.1-B1.1.1.1)将A地址转换为23.1.1.30

A10.1.1.1-B3.3.3.3)将A地址转换为23.1.1.31

首先定义匹配策略,需要定义源和目的,使用扩展访问控制列表:

ip access-listextended nat30

 permit ip host 10.1.1.1 host 1.1.1.1

ip access-listextended nat31

 permit ip host 10.1.1.1 host 3.3.3.3

然后定义route-map

route-map nat30permit 10

 match ip address nat30    

route-map nat31permit 10

 match ip address nat31

最后定义nat

ip nat insidesource static 10.1.1.1 23.1.1.30 route-map nat30

ip nat insidesource static 10.1.1.1 23.1.1.31 route-map nat31

然后进行测试,竟然不通!!!

 

然后进行测试,竟然不通!!!

 

然后进行测试,竟然不通!!!

 

由于是生产环境,无法抓包,无法debug….

 

自己检查了几遍IP地址、调用的策略名等没有任何问题,命令放入IOS同版本的模拟器去执行,测试无问题!

 

Show ip access 检查匹配项,竟然无匹配,说明问题出在匹配上,继续检查aclIP地址等等等等……

 

开始怀疑其它nat转换影响了该策略转换,发现现网配置里有这么一条:

ip nat pool nat100 23.1.1.100 23.1.1.100 netmask255.255.255.255

access-list 110permit ip host 10.1.1.1 any

ip nat insidesource list 110 pool nat100 overload

 

也就是说本网段访问其它地址时会被转换成23.1.1.100PAT,在直觉中,策略的静态一对一转换转换应该会优于PAT吧。。。

 

但是在access-list 110中插入deny iphost 10.1.1.1 host 1.1.1.1deny ip host 10.1.1.1 host 3.3.3.3后测试,没有任何问题!

 

难道是PAT优先静态转换?

 

找到问题所在就好,测试了另外一种转换方式也可以实现:

 

ip nat pool nat3023.1.1.30 23.1.1.30 netmask 255.255.255.0

ip nat pool nat3123.1.1.31 23.1.1.31 netmask 255.255.255.0

access-list 130permit ip host 10.1.1.1 host 23.1.1.30

access-list 131permit ip host 10.1.1.1 host 23.1.1.31

ip nat insidesource list 130 pool nat30 overload

ip nat insidesource list 131 pool nat31 overload

 

看来都是pat,大家级别一样了,就最小匹配啦!

 

那么留给大家的问题是,这两种实现方式在实际应用中有什么区别呢?

 

使用静态route-map的转换方式,可以用于对端需要主动发起访问的情况,这样当对端1.1.1.13.3.3.3可以主动访问23.1.1.3023.1.1.31

 


你可能感兴趣的:(NAT,route-map,策略地址转换)