扫一扫
分享文章到微信
扫一扫
关注官方公众号
至顶头条
前些天,在网上看到些关于单口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.
对于adsl单网卡代理,也是同样的道理,只不过路由器还成了主机而已,而且装了些代理软件,比如ccproxy,这些软件的功能就是和上述的路由器一样,实现单口nat.
单接口NAT配置实例 精典,转贴大家测试下
单接口NAT配置实例
条件:
1、IOS在12.1(5)T9及以上版本。更低版本未做验证。
2、至少具有两个或多个ISP提供的的global地址。
实现思路:
1、将ISP提供的地址作为secondary地址配置在以太接口上。该以太接口同时作为inside接口。作为内部主机的网关。
2、 创建一个loopback接口做为nat的outside.
3、使用route-map,强行将内部网出去的数据包及从外部返回的对应数据包路由到loopback接口。
实例:
拓朴如下图所示:
配置如下:
interface Loopback0
ip address 172.16.2.254 255.255.255.252
ip nat outside
!
//创建一个loopback接口,并作为NAT outside接口。
interface Ethernet0
ip address 192.168.0.1 255.255.255.248 secondary
ip address 172.16.1.254 255.255.255.0
ip Nat inside
ip policy route-map rm-nat
!
//在E0接口上配置172.16.1.254做为IP,同时将ISP提供的地址做为Secondary地址。e0做为inside接口。
在本接口上应用rm-nat这个route-map
ip nat pool pool1 192.168.0.2 192.168.0.3 prefix-length 29
ip nat inside source list 10 pool pool1 overload
//常规NAT配置
ip classless
ip route 0.0.0.0 0.0.0.0 192.168.0.6
ip route 172.16.1.0 255.255.255.0 Ethernet0
access-list 10 permit 172.16.1.0 0.0.0.255
//配置路由及NAT所需要的access-list
access-list 101 permit ip 172.16.1.0 0.0.0.255 any
access-list 101 permit ip any 192.168.0.0 0.0.0.7
//配置route-map所需要的acl。第一句匹配出去的包,第二句匹配返回的包。
route-map rm-nat permit 10
match ip address 101
set ip next-hop 172.16.2.254
//配置所需要的route-map,凡是满足access-list 101条件的包均被转发到172.16.2.254(loopback0接口)。
如果您非常迫切的想了解IT领域最新产品与技术信息,那么订阅至顶网技术邮件将是您的最佳途径之一。