您的位置:首页 > 理论基础 > 计算机网络

从网络基本原理分析单口NAT的实现原理

2009-05-04 16:35 281 查看
前些天,在网上看到些关于单口nat的配置,发现此配置全部出于一人之手,而且注释的很不明白,cisco官方站上也没有说的很明白,我现在给大家详细解释一下他的原理!
原帖:
http://bbs.net130.com/showthread.php?s=&threadid=41091
以下对照此帖讲解,可能不太方便,见谅!



首先,什么是单口nat,各位,不知道你们遇到过这种情况没有,就是有一条adsl线路,但是每台机器只有一块网卡,想实现所有机器共享上网,你们说怎么办呢?^_^,可以花5块钱再买块网卡,这当然简单了,但是我们做技术的就要想想其他方法,呵呵呵.挑战一下自己.单口nat说白了就是路由上就一个口,还必须要做nat以便访问外网,这和传统的两口nat,一个inside,一个outside的方式不一样了,一个口,一条链路,必须承载两个网络的信息,一个是内网,一个是公网.所以,要求这个口设两个地址,一个与内网交互,一个与isp交互.实际的拓扑是这样的:isp过来的线路直接接入交换机,而不是路由器,路由器也接入交换机的一个口,它的作用只是做nat,把包的原地址和回包的目的地址重新封装一下,如图所示(见原帖),内网主机如果要向外网主机发包,这些包到了路由的以太口后,经过一系列的转换,最终又从以太口出来,到了isp端.

下面详细分析一个包的来去流程,这样大家就都明白了.
内网一台主机(172.16.1.1)要向公网一个地址发包,他当然是先转发给网关了,所以网关收到了包,按照顺序,路由器先检查策略路由项,然后才走正常路由,现在路由发现,这个包匹配了access-list 101 permit ip 172.16.1.0 0.0.0.255 any这一句,所以他把这个包路由到loopback口.说明一下:loopback之所以叫回环接口,就是因为,到了这个口的包会从这个口出去,立即又回来了,哈哈哈,可能不好理解,因为这是个虚拟口,路由器怎么使唤他都行,所以有这个功能,在这里,包从这个口出去的时候,由于包的来源是以太口(nat inside),出口是loopback口(nat ouside),所以在这个回环口包做了一次nat,源地址被变成池中地址(ip nat pool pool1 192.168.0.2 192.168.0.3)的一个,好,这个nat后的包从环口出去,转了转(俺也实在不知道他到哪儿去转去了),又准备从loopback口再回到路由内部,但是这一次,路由对包不作任何改变,因为nat outside,ip nat inside "source"......只对从路由内部出去的包做nat.好了,现在包的源地址是,比如192.168.0.2,目的地址还是公网的那个你要访问的地址,这个包下一步还要接受路由的检查,由于loopback口没有配置ip policy route-map,所以这次只匹配常规路由,好,看看原帖…………,除了直连路由外,就是缺省路由了(ip route 0.0.0.0 0.0.0.0 192.168.0.6 ),所以他终于把这个包成功路由到了isp.(好累啊).

再说说回来的包,外网要给本地的对外地址(192.168.0.2)回应了,本地路由的以太口通过交换机收到了isp发过来的包,由于这个包对于路由器来说是从内向外走得(路由并不知道其实以太连接的是isp),所以要先路由,后nat,好,路由器同样先匹配策略路由,看看原帖.................,他匹配了这一句:access-list 101 permit ip any 192.168.0.0 0.0.0.7,因为原地址是公网地址,也就是"any",所以他路由到loopback口,在环口,这个包又将要被nat一次了,但是,请注意,这里,这个包不符合nat的要求,请看看:ip nat inside source list 10 pool pool1 overload ,access-list 10 permit 172.16.1.0 0.0.0.255,由于这个包的原地址并不在access-list 10所规定的范围内,所以包没有被nat,这也是这个技术最巧妙的地方,这样包保留了原地址的真实性!! 好,这个包又从环口又溜达回来了,注意::!!!由于路由器已经做过nat动作了,所以本身保存了一张nat表,由于包从loopback进来的,所以对于路由器来说是从外流向内,所以路由器要先nat,后路由,所以他要匹配nat表了,好,他检查到目的地址192.168.0.2实际上对应着内部主机172.16.1.1,所以他把包的目的地址nat成172.16.1.1,好, 现在接受路由匹配(好麻烦啊!呵呵),看看...................,由于从loopback口进入不用匹配策略路由,所以查常规路由,发现目的地址172.16.1.1存在于直连路由中,所以最终发到了以太口,最终到达目的主机:172.16.1.1.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  网络 NAT 存储 原理 单口