设为首页收藏本站language 语言切换
查看: 3453|回复: 4
收起左侧

[分享] 深入了解NAT中ACL和Route-map的区别

[复制链接]
发表于 2012-3-30 17:47:34 | 显示全部楼层 |阅读模式
  众所周知,NAT可以使用ACL和Route-map来进行所需翻译源地址和目的地址的选定。
  R1(config)#ipnatinsidesource?
  listSpecifyaccesslistdescribinglocaladdresses
  route-mapSpecifyroute-map
  staticSpecifystaticlocal->globalmapping
  我们可以看到NAT可以使用静态,ACL,Route-map来进行选定需要翻译的地址。其中ACL和Route-map都是可以选定复杂地址对的。因为Route-map中可以引用ACL,同时还可以match很多其他的信息。那么可以说Route-map比ACL能更为具体的来进行地址对的匹配。那么是不是他们的区别就仅限于此呢。我们先来看一个例子。
  本例中,PC1的IP地址为192.168.12.2。他需要在访问到PC2时,被R1NAT为地址192.168.3.1。在访问PC3时,被R1NAT为IP地址192.168.5.1。
  情况一使用list匹配ACL
  在配置R1的时候,使用如下ACL来进行匹配
  access-list100permitip192.168.12.00.0.0.255192.168.34.00.0.0.255
  access-list101permitip192.168.12.00.0.0.255192.168.56.00.0.0.255
  开辟地址池,将ACL用list来进行匹配响应的策略
  ipnatpoolpool_3192.168.3.1192.168.3.254netmask255.255.255.0
  ipnatpoolpool_5192.168.5.1192.168.5.254prefix-length24
  ipnatinsidesourcelist100poolpool_3
  ipnatinsidesourcelist101poolpool_5
  在接口上开启NAT之后,开始运行NAT。从ACL上看,没有任何问题。去往34网段的变为3,去往56网段的变成5。但是实际上会正常运行吗,我们来看下。
  首先ping192.168.34.4,没有问题,观察R1的NAT表,我们可以看到如下条目
  PC1#ping192.168.34.4
  Typeescapesequencetoabort.
  Sending5,100-byteICMPEchosto192.168.34.4,timeoutis2seconds:
  !!!!!
  R1#shipnattranslations
  ProInsideglobalInsidelocalOutsidelocalOutsideglobal
  icmp192.168.3.3:14192.168.12.2:14192.168.34.4:14192.168.34.4:14
  ---192.168.3.3192.168.12.2------
  然后再用PC1来ping192.168.56.6,按道理来说应该一样会成功,同时NAT表会出现新的条目,但是结果是这样吗
  PC1#ping192.168.56.6
  Typeescapesequencetoabort.
  Sending5,100-byteICMPEchosto192.168.56.6,timeoutis2seconds:
  .....
  Successrateis0percent(0/5)
  结果我们发现PC1ping不通56.6这个地址。再来看R1的NAT表,同时打开R5的debugippacket,看看有什么发现。
  R1#shipnattranslations
  ProInsideglobalInsidelocalOutsidelocalOutsideglobal
  ---192.168.3.3192.168.12.2------
  R5(config)#
  *Jan208:28:46.726:IP:s=192.168.56.6(Ethernet0/0),d=192.168.3.3,len56,inputfeature,MCICheck(64),rtype0,forusFALSE,sendselfFALSE,mtu0
  *Jan208:28:46.726:IP:s=192.168.56.6(Ethernet0/0),d=192.168.3.3,len56,unroutable
  可见R1并没有像我们想象的那样,顺利的将192.168.12.1翻译到192.168.5.x。而是沿用了192.168.3.x。原因就是因为list匹配的ACL在翻译的时候,仅在NAT表中留下insideglobal和insidelocal表项,并没有记录outside那边的情况。所以当目的地址改变的时候,由于NAT表里面已经有表项了,所以R1直接沿用原来的表项,将192.168.12.1翻译成192.168.3.x。
  情况二使用route-map匹配
  ACL沿用前面的100和101,route-map和NAT配置如下
  route-mapnat_5permit10
  matchipaddress101
  route-mapnat_3permit10
  matchipaddress100
  ipnatinsidesourceroute-mapnat_3poolpool_3
  ipnatinsidesourceroute-mapnat_5poolpool_5
  那么这次配置完毕之后,效果又是什么样的呢,还是先ping下192.168.34.4
  PC1#ping192.168.34.4
  Typeescapesequencetoabort.
  Sending5,100-byteICMPEchosto192.168.34.4,timeoutis2seconds:
  !!!!!
  Successrateis100percent(5/5),round-tripmin/avg/max=1/1/1ms
  R1(config)#doshipnatt
  ProInsideglobalInsidelocalOutsidelocalOutsideglobal
  icmp192.168.3.3:16192.168.12.2:16192.168.34.4:16192.168.34.4:16
  可以ping通,且NAT表中我们可以发现源和目的地址都有信息
  再ping192.168.56.6,我们可以发现也能成功,同时NAT表项中增加新的条目
  PC1#ping192.168.56.6
  Typeescapesequencetoabort.
  Sending5,100-byteICMPEchosto192.168.56.6,timeoutis2seconds:
  !!!!!
  Successrateis100percent(5/5),round-tripmin/avg/max=1/1/1ms
  R1(config)#doshipnatt
  ProInsideglobalInsidelocalOutsidelocalOutsideglobal
  icmp192.168.3.3:18192.168.12.2:18192.168.34.4:18192.168.34.4:18
  icmp192.168.5.1:17192.168.12.2:17192.168.56.6:17192.168.56.6:17
  总结以上几点我们可以看出,在执行NAT的时候,使用list匹配ACL和使用route-map在处理上是有区别的。在这里要申明下,如果想使用list匹配ACL,同时要达到route-map的效果,也就是匹配具体的源和目的对的话,必须使用PAT。但是在有些情况下,我们不想使用PAT,比如在VPN的情况下。
  
发表于 2012-3-30 18:13:58 | 显示全部楼层

好深奥的!
沙发 2012-3-30 18:13:58 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2012-3-30 18:20:42 | 显示全部楼层
这是哪里贴来的。。。空格都没有
板凳 2012-3-30 18:20:42 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2012-3-30 18:24:22 | 显示全部楼层
谢谢分享
地板 2012-3-30 18:24:22 回复 收起回复
回复 支持 反对

使用道具 举报

发表于 2012-3-30 19:52:39 | 显示全部楼层
复制的一点不漏呀
5# 2012-3-30 19:52:39 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-1-31 01:52 , Processed in 0.064166 second(s), 10 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表