NAT实验

  在配置NAT的时候我们一般都习惯使用  ip nat inside source  这条命令,但是今天我复习之前的知识时突然想到如果使用 ip nat outside source 会有什么效果呢,这条命令的配置与常用的   ip nat inside source 有什么区别呢。

 在这个拓扑里我把R1、R3、R5模拟为PC 网关配置为2.2.2.1,

R2的F0/0口设置为inside,F0/1口设置为outside,(怎样,这里就和平常的设置不一样了拔,哈哈)。
R2上的关键配置如下:

ip nat pool kk 1.1.1.4 1.1.1.10 netmask 255.255.255.0

ip nat outside source list 10 pool kk

access-list 10 permit 2.2.2.0 0.0.0.255

开启所有设备的debug ip icmp ,还要开启R2上面的debug ip nat ,然后看看ping效果怎样。





    第一步:R4、R5 上 ping  R2保证网关正常通信:


     第二步:R4、R5 上 ping  R1测试是否正常通信:


       这里我们发现ping不通了,那就先看看R2的工作情况:


      这里可以看到其实R2是正常进行了NAT转换的,那为什么R4、R5不能ping通R1呢,我们去看看R1的工作情况:


       可以看到R1也正常的进行了ICMP回包,而且看到是以R4、R6经过NAT之后的地址作为目标IP回复的,那就奇怪了,为什么这些回包没有被R4和R5收到呢。那我们仔细看看刚刚R2上显示的信息,R2也收到了R1的回包,但是SRC、 DST也是正确的,难道是R2不能把回包正确的通过F0/1发送回R4、R5?这里我们先做一个有趣的尝试,在R2上ping 1.1.1.4 、1.1.1.6这两个ip地址看看有什么事情发生:


      显示的都是正常连通的,看起来一切正常,但是如果我们去看看R2上的ARP表呢,或许会有收获。


       注意看一下1.1.1.4和1.1.1.6对应的MAC地址,全部一样 而且都是R2的F0/0接口记录的。那我们可以想想R1回复的ICMP包目标IP地址是1.1.1.4或者1.1.1.6的时候会发生什么,R2会把从F0/1上送出去吗,肯定不会。(但是会怎样处理我也不知道,求指教)。

------------------------我是可恶的分割线------------------------

       通过上面查看的一些信息可以肯定之前的配置有错误,可以看出ip nat outside source ip nat inside source的配置是有区别的。后面我参考了http://hi.baidu.com/bystander1983/item/1a0272cdd1e15e22e80f2e44(超链接做出来会flash崩溃)博客里面的观点,具体请阅读原文:

ip nat inside source        
            Translates the source of IP packets that are traveling inside to outside.

功能1:将从内到外的IP包的源地址进行转换(将内部局部地址转换为内部全局地址)
            Translates the destination of the IP packets that are traveling outside to inside.

功能2:将从外回包到内的IP包的目的地址进行转换(将内部全局地址转换为内部局部地址)

ip nat outside source    
            Translates the source of the IP packets that are traveling outside to inside.

功能1:将从外到内的IP包的源地址进行转换(将外部全局地址转换为外部局部地址)
           Translates the destination of the IP packets that are traveling inside to outside.

功能2:将从内回包到外的IP包的目的地址进行转换(将外部局部地址转换为外部全局地址)  

        通过上面的描述可以 看出 ip nat outside source 执行NAT时NAT地址池的地址不应该是和ip nat inside source  类似相 对于流量来说出口(即F0/0)上网段的地址。既然这样我们就去修改NAT地址池试试。这里要相先 no ip nat out so li 10 poo kk,取消原先的NAT配置,再修改NAT地址
ip 
 nat poo kk 2.2.2.10 2.2.2.15 net 255.255.255.0,修改完毕之后我们再去R4、R5上看看能不能ping通R1

        可以看到R4、R5能ping通R1了,同时注意ICMP回包的目的IP地址。那我们再看看R2上的ARP表发生了什么变化 

        可以看到由现在NAT之后的IP地址所学习到的MAC地址是F0/1接口上的(为什么修改NAT地址池之后会这样改变呢?现在我也不清楚,求指教),其实我们还可以去看一下修改NAT地址前后R1上pingR4的情况:

        可以看出虽然都是可以从R1上ping通R4(同理R5也可以),而且ICMP包回复的地址也都是经过NAT转换了的,但是我们可以想一下,从R1上发起ping的时候ICMP的目标IP是2.2.2.4,对于R2来说他收到这样的ICMP包时是按照路由表去从F0/1口转发的,R4的回包虽然经过NAT之后的地址,但依然是可以到达R1的,所以R1认为ICMP是得到了响应的。但是如果ping是从R4发起的,R1的回包却是不可能回到R4的,所以出现仅能'单向发起通信。
      对于其中的一些问题还是不能找到准确的解释比如为何NAT地址池的地址不同时ARP里记录的学习接口不同,为何ICMP 回复地址与查询地址不一样依然会认为测试成功。求指教!!!!
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值