非常有意思的策略地址转换故障排查
2015-09-23 12:21
323 查看
某客户要求本地主机A(10.1.1.1)新增访问需求,原主机A在边界路由器将地址转换为A1(23.1.1.30)后访问外联单位的主机B(1.1.1.1),现新增加一个系统C(3.3.3.3),需要将地址转换为A2(23.1.1.31)去访问。如下图所示网络结构,R3模拟外联单位路由器,R4模拟互联网;
简单来说就是一个策略NAT:A(10.1.1.1)-》B(1.1.1.1)将A地址转换为23.1.1.30A(10.1.1.1)-》B(3.3.3.3)将A地址转换为23.1.1.31首先定义匹配策略,需要定义源和目的,使用扩展访问控制列表:ip access-listextended nat30 permit ip host 10.1.1.1 host 1.1.1.1ip 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 nat30ip nat insidesource static 10.1.1.1 23.1.1.31 route-map nat31然后进行测试,竟然不通!!! 然后进行测试,竟然不通!!! 然后进行测试,竟然不通!!! 由于是生产环境,无法抓包,无法debug…. 自己检查了几遍IP地址、调用的策略名等没有任何问题,命令放入IOS同版本的模拟器去执行,测试无问题! Show ip access 检查匹配项,竟然无匹配,说明问题出在匹配上,继续检查acl、IP地址等等等等…… 开始怀疑其它nat转换影响了该策略转换,发现现网配置里有这么一条:ip nat pool nat100 23.1.1.100 23.1.1.100 netmask255.255.255.255access-list 110permit ip host 10.1.1.1 anyip nat insidesource list 110 pool nat100 overload 也就是说本网段访问其它地址时会被转换成23.1.1.100的PAT,在直觉中,策略的静态一对一转换转换应该会优于PAT吧。。。 但是在access-list 110中插入deny iphost 10.1.1.1 host 1.1.1.1和deny 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.0ip nat pool nat3123.1.1.31 23.1.1.31 netmask 255.255.255.0access-list 130permit ip host 10.1.1.1 host 23.1.1.30access-list 131permit ip host 10.1.1.1 host 23.1.1.31ip nat insidesource list 130 pool nat30 overloadip nat insidesource list 131 pool nat31 overload 看来都是pat,大家级别一样了,就最小匹配啦! 那么留给大家的问题是,这两种实现方式在实际应用中有什么区别呢? 使用静态route-map的转换方式,可以用于对端需要主动发起访问的情况,这样当对端1.1.1.1或3.3.3.3可以主动访问23.1.1.30或23.1.1.31。
本文出自 “菠萝味咖啡的领地” 博客,请务必保留此出处http://ccies.blog.51cto.com/717209/1697415
简单来说就是一个策略NAT:A(10.1.1.1)-》B(1.1.1.1)将A地址转换为23.1.1.30A(10.1.1.1)-》B(3.3.3.3)将A地址转换为23.1.1.31首先定义匹配策略,需要定义源和目的,使用扩展访问控制列表:ip access-listextended nat30 permit ip host 10.1.1.1 host 1.1.1.1ip 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 nat30ip nat insidesource static 10.1.1.1 23.1.1.31 route-map nat31然后进行测试,竟然不通!!! 然后进行测试,竟然不通!!! 然后进行测试,竟然不通!!! 由于是生产环境,无法抓包,无法debug…. 自己检查了几遍IP地址、调用的策略名等没有任何问题,命令放入IOS同版本的模拟器去执行,测试无问题! Show ip access 检查匹配项,竟然无匹配,说明问题出在匹配上,继续检查acl、IP地址等等等等…… 开始怀疑其它nat转换影响了该策略转换,发现现网配置里有这么一条:ip nat pool nat100 23.1.1.100 23.1.1.100 netmask255.255.255.255access-list 110permit ip host 10.1.1.1 anyip nat insidesource list 110 pool nat100 overload 也就是说本网段访问其它地址时会被转换成23.1.1.100的PAT,在直觉中,策略的静态一对一转换转换应该会优于PAT吧。。。 但是在access-list 110中插入deny iphost 10.1.1.1 host 1.1.1.1和deny 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.0ip nat pool nat3123.1.1.31 23.1.1.31 netmask 255.255.255.0access-list 130permit ip host 10.1.1.1 host 23.1.1.30access-list 131permit ip host 10.1.1.1 host 23.1.1.31ip nat insidesource list 130 pool nat30 overloadip nat insidesource list 131 pool nat31 overload 看来都是pat,大家级别一样了,就最小匹配啦! 那么留给大家的问题是,这两种实现方式在实际应用中有什么区别呢? 使用静态route-map的转换方式,可以用于对端需要主动发起访问的情况,这样当对端1.1.1.1或3.3.3.3可以主动访问23.1.1.30或23.1.1.31。
本文出自 “菠萝味咖啡的领地” 博客,请务必保留此出处http://ccies.blog.51cto.com/717209/1697415
相关文章推荐
- 升级Xcode7-directory not found for option
- 用TTS实现文本转语音
- c++的类中typedef的作用
- PHP中常见的缓存技术实例分析
- item.Name=dataReader.GetString(dataReader.GetOrdinal ("proName"));
- Linux进程间通信(IPC)编程实践(二) FIFO命名管道
- 帧动画 连续播放多张图片动画 以及ui动画 SoundPool
- c++中构造函数之前的explicit的作用
- ArrowDownloadButton 分享
- 一个人再有钱也不会有习主席风光了
- Linux开机启动流程
- 随便写写,当作了解--Css
- 第一个打击木马病毒查杀007一片:反向熊猫的分析(下一个)
- 互联网也难抵大势所“曲”
- windows 图片处理
- 计算机网络之域名系统DNS
- phoenix客户端API使用
- 质数定理:一个非同寻常的发现
- 计算机网络之域名系统DNS
- 计算机网络概览