深入了解NAT中ACL和Route-map的区别
众所周知,NAT可以使用ACL和Route-map来进行所需翻译源地址和目的地址的选定。R1(config)#ip nat inside source ?list Specify access list describing local addressesroute-mapSpecify route-mapstatic Specify static local->global mapping我们可以看到NAT可以使用静态,ACL,Route-map来进行选定需要翻译的地址。其中ACL和Route-map都是可以选定复杂地址对的。因为Route-map中可以引用ACL,同时还可以match很多其他的信息。那么可以说Route-map比ACL能更为具体的来进行地址对的匹配。那么是不是他们的区别就仅限于此呢。我们先来看一个例子。本例中,PC1的IP地址为192.168.12.2。他需要在访问到PC2时,被R1 NAT为地址192.168.3.1。在访问PC3时,被R1 NAT为IP地址192.168.5.1。情况一 使用list匹配ACL在配置R1的时候,使用如下ACL来进行匹配access-list 100 permit ip 192.168.12.0 0.0.0.255 192.168.34.0 0.0.0.255access-list 101 permit ip 192.168.12.0 0.0.0.255 192.168.56.0 0.0.0.255 开辟地址池,将ACL用list来进行匹配响应的策略ip nat pool pool_3 192.168.3.1 192.168.3.254 netmask 255.255.255.0ip nat pool pool_5 192.168.5.1 192.168.5.254 prefix-length 24ip nat inside source list 100 pool pool_3ip nat inside source list 101 pool pool_5 在接口上开启NAT之后,开始运行NAT。从ACL上看,没有任何问题。去往34网段的变为3,去往56网段的变成5。但是实际上会正常运行吗,我们来看下。 首先ping 192.168.34.4,没有问题,观察R1的NAT表,我们可以看到如下条目PC1#ping 192.168.34.4Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 192.168.34.4, timeout is 2 seconds:!!!!! R1#sh ip nat translationsPro Inside global Inside local Outside local Outside globalicmp 192.168.3.3:14 192.168.12.2:14 192.168.34.4:14 192.168.34.4:14--- 192.168.3.3 192.168.12.2 --- --- 然后再用PC1来ping 192.168.56.6,按道理来说应该一样会成功,同时NAT表会出现新的条目,但是结果是这样吗PC1#ping 192.168.56.6Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 192.168.56.6, timeout is 2 seconds:.....Success rate is 0 percent (0/5) 结果我们发现PC1ping 不通56.6这个地址。再来看R1的NAT表,同时打开R5的debug ip packet,看看有什么发现。 R1#sh ip nat translationsPro Inside global Inside local Outside local Outside global--- 192.168.3.3 192.168.12.2 --- --- R5(config)#*Jan2 08:28:46.726: IP: s=192.168.56.6 (Ethernet0/0), d=192.168.3.3, len 56, input feature, MCI Check(64), rtype 0, forus FALSE, sendself FALSE, mtu 0*Jan2 08:28:46.726: IP: s=192.168.56.6 (Ethernet0/0), d=192.168.3.3, len 56, unroutable 可见R1并没有像我们想象的那样,顺利的将192.168.12.1翻译到192.168.5.x。而是沿用了192.168.3.x。原因就是因为list匹配的ACL在翻译的时候,仅在NAT表中留下inside global和inside local表项,并没有记录outside那边的情况。所以当目的地址改变的时候,由于NAT表里面已经有表项了,所以R1直接沿用原来的表项,将192.168.12.1翻译成192.168.3.x。 情况二 使用route-map匹配ACL沿用前面的100和101,route-map和NAT配置如下route-map nat_5 permit 10 match ip address 101route-map nat_3 permit 10 match ip address 100ip nat inside source route-map nat_3 pool pool_3ip nat inside source route-map nat_5 pool pool_5 那么这次配置完毕之后,效果又是什么样的呢,还是先ping下192.168.34.4PC1#ping 192.168.34.4Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 192.168.34.4, timeout is 2 seconds:!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms R1(config)#do sh ip nat tPro Inside global Inside local Outside local Outside globalicmp 192.168.3.3:16 192.168.12.2:16 192.168.34.4:16 192.168.34.4:16 可以ping通,且NAT表中我们可以发现源和目的地址都有信息再ping 192.168.56.6,我们可以发现也能成功,同时NAT表项中增加新的条目PC1#ping 192.168.56.6Type escape sequence to abort.Sending 5, 100-byte ICMP Echos to 192.168.56.6, timeout is 2 seconds:!!!!!Success rate is 100 percent (5/5), round-trip min/avg/max = 1/1/1 ms R1(config)#do sh ip nat tPro Inside global Inside local Outside local Outside globalicmp 192.168.3.3:18 192.168.12.2:18 192.168.34.4:18 192.168.34.4:18icmp 192.168.5.1:17 192.168.12.2:17 192.168.56.6:17 192.168.56.6:17 总结以上几点我们可以看出,在执行NAT的时候,使用list匹配ACL和使用route-map在处理上是有区别的。在这里要申明下,如果想使用list匹配ACL,同时要达到route-map的效果,也就是匹配具体的源和目的对的话,必须使用PAT。但是在有些情况下,我们不想使用PAT,比如在VPN的情况下。
http://bbs.spoto.net/xwb/images/bgimg/icon_logo.png 该贴已经同步到 songjiaqi的微博 本帖最后由 ★浓_眉☆※兴 于 2012-7-21 11:37 编辑
-funk-从哪里copy过来的?图呢? 从思科论坛copy过来的,没有拓扑图。。。-woniu8 --woniu8 --woniu8 - -- 校园网双出口案例。-- --拓扑可以用想象力来画哈!-- jkrh9 发表于 2012-7-22 10:00 static/image/common/back.gif
拓扑可以用想象力来画哈!
就是哇-lol--lol- 支持支持 谢谢分享啦 话说 靠想象 还不如你画一个-- 路过,拿米走人
-------------------------------------yili-----------------------------------------
达达电影 http://www.dadady.com -woniu2-
页:
[1]
2