- 积分
- 0
- 鸿鹄币
- 个
- 好评度
- 点
- 精华
- 注册时间
- 2012-3-30
- 最后登录
- 1970-1-1
- 阅读权限
- 0
- 听众
- 收听
游客
|
众所周知,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的情况下。
|
|