网络地址转换原理及其配置实例

 1 引言

    随着计算机的普及以及Internet应用的推广,越来越多的计算机通过各种方式接入到Internet中。但现行Internet的IP地址(IPv4)采用的是32位的编址方式,从而导致口地址的分配面临“枯竭”的危险。针对这一潜在威胁,现已采用了一系列的补救措施。其中最彻底的措施是把IPv4升级为IPv6,使地址空间从32位扩充为128位。还有就是基于网络私有地址划分的代理(Proxy)技术和网络地址转换(Network Address Translator,NAT)技术心。对一个局域网而言,使用这两种技术,理论上只需为其分配一个可路由的IP地址,就可实现全网络机器接入并访问Internet,从而达到节约IP地址的目的。其中,代理技术是一种应用级的解决方案:由于此时网络活动的每个报文,都要从物理层一直上升到应用层才能得到处理,所以延时大,效率和通用性较差;而NAT技术则是应用层以下的解决方案,所以性能和通用性较好。

    本文在给出网络分层模型和寻址的概念后,探讨NAT技术的原理,并给出了一个配置实例。为实验室网络维护与管理提供了借鉴和参考。

 

    2网络分层模型与寻址

    基于TCP/IP技术的Internet网络分层模型如图1所示。需要说明的是,关于TCP/IP的层次结构模型有些文献中分为4层:应用层、传输层、IP层(互联网层)、网络接口层。本文把网络接口层分成网络接口和物理硬件2部分(见图1)。

    TCP/IP模型这种概念分层包含了2个重要的分界线:(1)协议地址分界线,用以区分高层和低层的寻址。具体地讲就是高层用IP地址,而低层用的是物理(MAC)地址;(2)操作系统分界线,用以区分系统程序和应用程序。具体讲就是传输层以上的为应用程序,以下的通常为系统程序。应用程序通过一种所谓的端口机制(Socket机制)访问操作系统的内容。

    除了把口地址映射为物理地址的过程称为寻址外,我们把端口的确定、域名和IP地址转换以及IP地址和物理(MAC)地址的转换都称为寻址。在这种广义寻址概念下,寻址就包括3方面的内容:(1)应用层中的应用程序访问传输层时端口的确定;(2)在域名系统(Domain Name System,DNS)哺1解析出网络域名对应的IP地址后,IP层根据目的机器IP地址进一步确定传送分组时的路由;(3)在利用低层通信链路传送信息时,实现口地址和物理地址的转换工作。为此,首先需要明确以下3点:(1)在TCP/IP构架下,端口和应用是对应的,如文件传输应用(ftp)和端口20与2l对应,网页浏览服务(ht—tp)和端口80对应,远程登录(telnet)和端口23对应等;(2)IP地址通常和机器(的连接)对应,也就是说,给定一个IP地址,可以唯一地确定和某台机器相连的一个连接,从而进一步确定某台机器(可以认为IP地址和机器之间建立了对应关系);(3)物理(MAC)地址通常和实施底层通信的具体物理硬件设备(如网卡或其他网络接口设备)联系。这样,作为端口机制(在操作系统中通常以Socket套接字方式予以实现)就可实现应用层访问传输层时端口的确定,完成端口的寻址工作;DNS解析出网络域名对应机器的IP地址,定位该机器,然后IP层的路由算法用来确定分组的投递方向,完成IP地址的寻址工作;另外,地址转换协议(Address Resolution Protocol,An_P)用来实现把IP地址映射为物理(MAC)地址的过程,反向地址转换协议(Reverse AddressResolution Protocol,RASP)用来实现物理地址映射为IP地址的过程。通过这两个协议实现IP地址和物理地址的相互映射,完成物理地址的寻址工作,并进一步实现底层链路的数据通信。

图1 网络分层模型与寻址

    图1 网络分层模型与寻址

    3 网络地址转换原理

    网络地址转换指的是NAT,而不是ASP或RARP。在上述TCP/IP分层模型构架下,1个网络通信连接由五元组构成,即源IP地址,源端口,目的IP地址,目的端口,协议类型。1台参与通信的主机可以同时建立的连接数取决于协议端口号。在IPv4中,协议端口号为16 bit,所以可建立的连接数最多为。一般情况下,1台主机并发的网络连接数远小于216个。根据统计,1台普通客户机并发网络连接一般为5—50个,而一般的服务器为50—500个。这样,如果能够充分利用协议端口,就可以使1个IP地址给很多主机同时使用。以端口空间换地址空间,这就是NAT的核心思想。下面通过一个实例解释“以端口空间换地址空间的思想”以及NAT的操作过程。如图2所示,有1个内部局域网络(172.20.x.x)使用的是私有IP地址(172.20.130.x),通过1个NAT网关和外部Inter—net相连。其中,NAT网关有两个接口,一个和内部网络相连,其接口IP为172.20.130.168;另一个接I:1和外部网络相连,其接口IP为202.1 15.143.16。在这种结构下,只要配置好NAT网关,就可实现内部局域网络(172.20.L X)所有机器(其私有IP地址为:172.20.130.x)通过1个外部IP地址(即NAT网关和外部网络相连的IP地址:202.115.143.16)接入Internet的效果。

    如图2所示,假设机器172.20.130.1通过http向机器202.115.128.33发送一个网页服务(www)请求。此时网络连接对应的五元组为(172.20.130.1,Source—Port—AA,202.115.128.33,80,TCP),假定此连接源机器端口为AA,并且协议类型为传输层的TCP而不是应用层的http。

图2 NAT网络连接示意图

    图2 NAT网络连接示意图

    由于源IP是一个不可路由的私有IP,只能在局域网内部使用,所以,如果此时五元组不做任何修改的话,那么此网络连接返回的信息将不可达。实际情况是:在网络传送分组经过NAT网关时,NAT网关要对分组报头控制信息做修改(主要是对IP地址、端口号以及校验和3项进行修改)。表1显示了局域网内部1台主机向外部互联网某一机器发送www请求以及外部主机对其请求进行响应时,2个不同方向分组信息传送过程网络连接五元组数值在经过NAT网关前后的调整情况。从表1可以发现:内网主机对于外网是不可见的,外网看到的只是NAT网关。这一点可以从对www的请求对应的网络连接五元组的目的IP地址清楚地得到反映。

    既然内网主机对于外网是不可见的,那么信息是如何传送回发起请求的源内网主机呢?这是通过NAT网关设备保留一个如表2所示的数据结构来实现的。具体就是:产生响应的主机先把信息传送回NAT网关,NAT网关根据此时五元组的目的端口号(为NAT全局端口号)查表2所示的数据结构,得到源内网主机IP和源端口号,从而修改五元组的数值(见表1)把数据从NAT网关发送回源内网主机相应的端口(应用),这样就完成了整个网络活动。从表2可见,NAT网关设备中的全局端口号是非常关键的,因为正是通过它才实现了内网主机IP和源端口号与外网主机IP和目的端口号之间的映射关系,这也正是“以端口空间(NAT网关的全局端口)换地址空间(内网所有主机IP地址)”思想的体现。

    表1 2个不同方向上网络连接(请求和响应)五元组在经过NAT网关前后时的变化值

表1 2个不同方向上网络连接(请求和响应)五元组在经过NAT网关前后时的变化值

    表2 NAT网关中保留的内网IP和源端口号与外网IP和目的端口号的映射关系

表1 2个不同方向上网络连接(请求和响应)五元组在经过NAT网关前后时的变化值

 

    4 基于NAT技术的配置实例

    一个在Linux环境下基于NAT技术的配置实例已在笔者所在实验室通过测试且运行稳定。其中,内网主机136台,只搭配一台NAT服务器和占用1个外部可路由IP。NAT网关设备所处的网络环境如图2所示。并且假定NAT网关与外部网络互连的网卡名为ethO。

    如果eth0对应IP地址是通过动态方式获得,配置如下:

    其中语句1:打开口转发功能,语句2:装载nat模块,语句3和4:保证在应用NAT技术时ftp操作的顺利进行,语句5:清空nat表中的所有规则,语句6和7:配置NAT转发功能。语句6和语句7的区别在于一个针对的是动态IP,而另一个则是静态IP。每个语句的细节限于篇幅在此不作详细介绍,有兴趣的读者可以参阅Linux相关书籍。

 

    5 结论

    NAT技术是一种实用性较强并且经过了实践检验的比较成熟的技术,它能较好地解决部分单位IP地址短缺的问题。特别是由于它能完全隐藏内网信息,并保持较高的吞吐量和较低的延迟,因此它经常和包过滤技术相结合并成为新一代防火墙构筑的基础。它的不足之处在于仍有部分应用需要特殊处理才能通过NAT。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值