加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

ip nat inside source 和 ip nat source 区别

(2011-04-25 21:09:23)
分类: Cisco
http://s16/middle/6912b72cxa1bdef1a794f&690nat inside source 和 ip nat source 区别" TITLE="ip nat inside source 和 ip nat source 区别" />
目的是R1和R3不写路由,靠NAT实现互通。

 

 

先按正常带 inside的做,

R2

http://s13/middle/6912b72cxa1bdeff5bddc&690nat inside source 和 ip nat source 区别" TITLE="ip nat inside source 和 ip nat source 区别" />

 

然后R2e0/1ip nat insidee0/0ip nat outside.

 

R3ping 29.29.23.1

http://s1/middle/6912b72cxa1bdf10592d0&690nat inside source 和 ip nat source 区别" TITLE="ip nat inside source 和 ip nat source 区别" />

 

切到R2的显示的debug 

http://s4/middle/6912b72cxa1bdf1e5fee3&690nat inside source 和 ip nat source 区别" TITLE="ip nat inside source 和 ip nat source 区别" />

 

 

分析:

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]

说明从outsideinside的时候,到了接口马上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到这里为止了,不通,说明insideoutside的时候是先查路由表才做NAT转换

 

既然如此,就给它加一条静态

http://s1/middle/6912b72cxa1bdf4604f60&690nat inside source 和 ip nat source 区别" TITLE="ip nat inside source 和 ip nat source 区别" />

 

然后在R3上就通了

http://s3/middle/6912b72cxa1bdf52554b2&690nat inside source 和 ip nat source 区别" TITLE="ip nat inside source 和 ip nat source 区别" />

 

ping一个包,切到R2上看DEBUG

http://s16/middle/6912b72cxa1bdf5e57cff&690nat inside source 和 ip nat source 区别" TITLE="ip nat inside source 和 ip nat source 区别" />

 

 

结果就是,加上那条静态路由以后,R1的回包就可以进行NAT转换了

整个过程结束,说明NAT这种敲法从外到内是先NAT再路由,从内到外先路由再NAT

===============================================================================

上面是ip nat [inside|outside] source,下面是ip nat source的用法:

先把上面的命令全NO掉,包括接口 下的ip nat inside和ip nat outside

http://s1/middle/6912b72cxa1bdf8be51e0&690nat inside source 和 ip nat source 区别" TITLE="ip nat inside source 和 ip nat source 区别" />

 

完了再用ip nat source的命令做:

http://s10/middle/6912b72cxa1bdf992e7e9&690nat inside source 和 ip nat source 区别" TITLE="ip nat inside source 和 ip nat source 区别" />

 

这时候接口上就不用写inside或者outside了,改为打开 nat功能 : ip nat enable

http://s16/middle/6912b72cxa1bdfabdc1cf&690nat inside source 和 ip nat source 区别" TITLE="ip nat inside source 和 ip nat source 区别" />

 

然后到R3上ping一下,一样通了~~~

http://s16/middle/6912b72cxa1bdfd86b80f&690nat inside source 和 ip nat source 区别" TITLE="ip nat inside source 和 ip nat source 区别" />

 

Ping 一个包,切到R2上看DEBUG,看看有什么不同

http://s8/middle/6912b72cxa1bdfe6526f7&690nat inside source 和 ip nat source 区别" TITLE="ip nat inside source 和 ip nat source 区别" />

 

 

*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转换---真正路由转发,然后两边是对称的。

 

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有