8 已有 33 次阅读  2010-01-12 22:17   标签nat  inside  source  sourse 
114591_1263305772vcU8.jpg
目的是 R1 R3 不写路由,靠 NAT 实现互通。
 
先按正常带 inside 的做,
R2
114591_1263305774y101.jpg
然后 R2 e0/1 ip nat inside e0/0 ip nat outside.
 
R3 ping 29.29.23.1
114591_1263305775tT8H.jpg
切到 R2 的显示的 debug 
zoom.gif 114591_1263305786X6P1.jpg
分析:
r2(config-if)#
*Mar  1 00:37:08.843: NAT*: o: icmp (29.29.23.3, 1) -> (29.29.23.1, 1) [5]    
*Mar  1 00:37:08.843: NAT*: o: icmp (29.29.23.3, 1) -> (29.29.23.1, 1) [5]
*Mar  1 00:37:08.843: NAT*: s=29.29.23.3->29.29.12.3, d=29.29.23.1 [5]
说明从 outside inside 的时候,到了接口马上 NAT 先做地址转换,这是源转换
*Mar  1 00:37:08.847: NAT*: s=29.29.12.3, d=29.29.23.1->29.29.12.1 [5]
目的转换,这时候源目的都转完了
*Mar  1 00:37:08.847: IP: tableid=0, s=29.29.12.3 (Ethernet0/0), d=29.29.12.1 (Ethernet0/1), routed via FIB
*Mar  1 00:37:08.851: IP: s=29.29.12.3 (Ethernet0/0), d=29.29.12.1 (Ethernet0/1), g=29.29.12.1, len 100, forward
*Mar  1 00:37:08.851:     ICMP type=8, code=0
转换完了再路由,给 R1
*Mar  1 00:37:08.975: IP: tableid=0, s=29.29.12.1 (Ethernet0/1), d=29.29.12.3 (Ethernet0/1), routed via RIB
r2(config-if)#
*Mar  1 00:37:08.975: IP: s=29.29.12.1 (Ethernet0/1), d=29.29.12.3 (Ethernet0/1), len 100, rcvd 3
*Mar  1 00:37:08.979:     ICMP type=0, code=0
这是 R1 的回包, debug 到这里为止了,不通,说明 inside outside 的时候是先查路由表才做 NAT 转换
 
既然如此,就给它加一条静态
114591_1263305787IOx9.jpg
然后在 R3 上就通了
114591_1263305790KlPJ.jpg
ping 一个包,切到 R2 上看 DEBUG
zoom.gif 114591_1263305799LK6A.jpg
结果就是,加上那条静态路由以后, R1 的回包就可以进行 NAT 转换了
整个过程结束,说明 NAT 这种敲法从外到内是先 NAT 再路由,从内到外先路由再 NAT
 
 
上面是 ip nat [inside|outside] source ,下面是 ip nat source 的用法:
先把上面的命令全 NO 掉,包括接口 下的 ip nat inside ip nat outside
114591_1263305814oCZn.jpg
完了再用 ip nat source 的命令做:
114591_1263305815MV41.jpg
这时候接口上就不用写 inside 或者 outside 了,改为打开 nat 功能  : ip nat enable
114591_126330581789PU.jpg
然后到 R3 ping 一下,一样通了 ~~~
114591_1263305823OT3F.jpg
Ping 一个包,切到 R2 上看 DEBUG ,看看有什么不同
zoom.gif 114591_12633058291Edz.jpg
*Mar  1 01:41:03.219: IP: tableid=0, s=29.29.23.3 (Ethernet0/0), d=29.29.23.1 (Ethernet0/0), routed via RIB
这种先走一次路由,但不是真正的路由行为,匹配一下 NAT 的转换表,转到所谓的虚接口
*Mar  1 01:41:03.219: NAT: i: icmp (29.29.23.3, 6) -> (29.29.23.1, 6) [14]    
*Mar  1 01:41:03.223: NAT: s=29.29.23.3->29.29.12.3, d=29.29.23.1 [14]
*Mar  1 01:41:03.223: NAT: s=29.29.12.3, d=29.29.23.1->29.29.12.1 [14]
匹配了以后开始 NAT 转换
*Mar  1 01:41:03.223: IP: tableid=0, s=29.29.12.3 (Ethernet0/0), d=29.29.12.1 (Ethernet0/1), routed via RIB
*Mar  1 01:41:03.227: IP: s=29.29.12.3 (Ethernet0/0), d=29.29.12.1 (Ethernet0/1), g=29.29.12.1, len 100, forward
*Mar  1 01:41:03.227:     ICMP type=8, code=0
转换完了走路由。下面的回包过程是对称的
r2(config-if)#
*Mar  1 01:41:03.271: IP: tableid=0, s=29.29.12.1 (Ethernet0/1), d=29.29.12.3 (Ethernet0/1), routed via RIB
*Mar  1 01:41:03.271: NAT: i: icmp (29.29.12.1, 6) -> (29.29.12.3, 6) [14]    
*Mar  1 01:41:03.271: NAT: s=29.29.12.1->29.29.23.1, d=29.29.12.3 [14]
*Mar  1 01:41:03.271: NAT: s=29.29.23.1, d=29.29.12.3->29.29.23.3 [14]
*Mar  1 01:41:03.275: IP: tableid=0, s=29.29.23.1 (Ethernet0/1), d=29.29.23.3 (Ethernet0/0), routed via RIB
*Mar  1 01:41:03.275: IP: s=29.29.23.1 (Ethernet0/1), d=29.29.23.3 (Ethernet0/0), g=29.29.23.3, len 100, forward
*Mar  1 01:41:03.279:     ICMP type=0, code=0
r2(config-if)#
 
结论就是, ip nat source 不用在接口上指 inside 或者 outside ,要打开 ip nat enable ,然后转发过程不一样,路由进虚接口 ---NAT 转换 --- 真正路由转发,然后两边是对称的。

1

收藏

jessyxu

21篇文章,6W+人气,0粉丝

Ctrl+Enter 发布

发布

取消

f92360e227f9d91cdff7ea95120630ef.png
left-qr.jpg

扫一扫,领取大礼包

1

0

分享
qr-url?url=https%3A%2F%2Fblog.51cto.com%2Fjessy%2F267388
jessyxu
noavatar_middle.gif