当前位置:文档之家› NAT技术基本原理及其在实际中的应用

NAT技术基本原理及其在实际中的应用

2009年1月第14卷第1期 西 安 邮 电 学 院 学 报JOURNAL OF XI ’AN UN IV ERSIT Y OF POST AND TEL ECOMMUN ICA TIONS Jan.2009Vol 114No 11收稿日期:2008-10-21作者简介:李广华(1981-),男,河南洛阳人,西安邮电学院通信技术研究所硕士研究生;朱志祥(1959-),男,天津人,西安邮电学院通信技术研究所教授;李振兴(1976-),男,山西太原人,西安邮电学院通信技术研究所硕士研究生。

NA T 技术基本原理及其在实际中的应用李广华,朱志祥,李振兴(西安邮电学院通信技术研究所,陕西西安 710061)摘要:网络地址翻译(NA T )技术是Internet 上最常见的网络技术之一。

正确检测识别NA T 的具体实现形式,无论对于网络安全还是网络应用都是十分必要的。

论文给出了NA T 技术的基本原理和类型,深入分析了NA T 穿越技术在P2P 中的应用,并描述应用程序穿越中间设备建立P2P 通讯时可能产生的安全问题。

关键词:NA T ;公有地址;私有地址;地址映射;地址翻译中图分类号:TP393 文献标识码:A 文章编号:1007-3264(2009)01-0091-05 随着Internet 的飞速发展,网上丰富的资源产生着巨大的吸引力,接入Internet 、访问Internet 已经成为大众需求。

这样就面临两个最迫切的问题:IP 地址的匮乏和路由规模的扩大。

对此,长期的和短期的解决方案都有所发展,那就是网络地址转换(NA T )和IPv6技术。

几年前,人们就意识到目前的IPv4地址空间将会耗尽。

在IPv6技术上在研究中切还未完全取代现有的IPv4的情况下,短期解决方案NA T 技术对于缓解目前的地址缺乏问题,具有积极意义。

NA T 核心就是要把一个私有地址域里的地址转换为可路由的全局因特网地址,这样就使得内部主机访问因特网得以实现。

1 基本原理及其类型1.1 基本原理NA T (Network Address Translation ,网络地址转换),它允许一个机构以一个公有IP 地址出现在Internet 上。

将局域网内每个节点的私有地址转换成一个公有IP 地址,反之亦然。

而且,它可以应用于防火墙技术,把个别地址隐藏起来不被外界发现,使外界无法直接访问内部网络设备。

同时,它可以帮助网络超越地址的限制,合理地安排网络中的公有Internet 地址和私有IP 地址的使用。

NA T 技术能帮助解决令人头疼的IP 地址紧缺的问题,实现公网地址和私网地址之间的映射,而且能使内部和外部的网络隔离,提供一定程度的网络安全保障。

它解决问题的办法是:在内部网络中使用内部地址,通过NA T 把内部地址翻译成合法的IP 地址在Internet 上使用,其具体的做法是把IP 包内的地址域用合法的外部IP 地址来替换。

工作的基本流程可以从两个方面来概括:(1)当私网内的IP 包经NA T 流入公网时,NA T 将此IP 包的源IP 地址改为NA T 接口上的一个公网地址。

(2)当公网中的IP 包经NA T 访问私网资源时,NA T 将此IP 包目的地址改为某一私网IP 地址。

下面通过一个网络结构图举例说明NA T 技术工作流程。

网络结构图,如图1所示。

由图1可见,NA T A 后的主机A (内网地址为192.168.2.50)需要向公网中的Proxy 通信,主机从5000端口发送消息至NA T A 。

NA T A 发现此IP地址,从空闲的端口中分配一个给这个连接(比如8000),并在申报中建立了192.168.2.50:5000和202.100.0.1:8000之间的映射。

当Proxy 回消息到NA T A 的8000端口时,NA T A 就将此包的地址改为192.168.2.50:5000。

这样就可以实现私网和公网的通信了。

图1 网络结构图 当若在主机A 向Proxy 发起消息前Proxy 向地址202.168.2.50:8000发送消息,NA T 不知道将这个地址和端口映射到哪个内网地址上。

这时NA T 会将此消息丢弃。

因为NA T 映射的地址可能是动态的,所以此时Proxy 无法知道确切的端口号。

1.2 NA T 技术的类型NA T 有三种类:静态NA T (static NA T )、NA T池(pooled NA T )和端口NA T (PA T )。

其中,静态NA T 设置起来最为简单,内部网络中的每个主机都被永久映射成外部网络中的某个合法的地址。

而NA T 池则是在外部网络中定义了一系列的合法地址,采用动态分配的方法映射到内部网络。

PA T 则是将多个内网地址映射到同一个外网地址的不同端口上。

根据不同的需要,各种NA T 方案都是有利有弊。

1.2.1 NA T 池使用NA T 池,可以从未注册的地址空间中提供被外部访问的服务,也可以从内部网络访问外部网络,而不需要重新配置内部网络中的每台机器的IP 地址。

采用NA T 池意味着可以在内部网络中定义很多的内部用户,通过动态分配的办法,共享很少的几个外部IP 地址。

而静态NA T 则只能形成一一对应的固定映射方式。

应引起注意的是,NA T 池中动态分配的外部IP 地址全部占用后,后续的NA T 翻译请求将会失败。

庆幸的是,许多有NA T 功能的路由器有超时配置功能。

如Cisco4700中配置成开始15分钟后自动删除当前的NA T 进程,为后续的NA T 申请预留出外部IP 地址。

通过实验表明,一般的外部链接不会很长,所有短的时间阀值也是可以接受的。

当然用户可以自行调节时间阀值,以满足各自的需求。

NA T 池提供很大灵活性的同时,也影响到网络原有的一些管理功能。

例如,一些管理系统要利用IP 地址来跟踪设备的运行情况。

但使用NA T 之后,意味着那些被翻译的地址对应的内部地址是变化的,今天可能对应一台工作站,明天可能对应一台服务器。

这给网络管理带来了麻烦。

一个可行的解决方案就是把划分给NA T 池的那部分地址在网络管理平台上标记出来,对于这些不影响管理信号的地址不予处理,就如同他们被关掉了一样。

1.2.2 PA TPA T 在远程访问产品中得到了大量的应用,特别是在远程拨号用户使用的设备中。

PA T 可把内部的TCP/IP 映射到外部一个注册IP 地址的多个端口上,还可支持同时连接64500个TCP/IP 、UDP/IP ,但实际可支持的工作站个数会少一些。

因为许多Internet 的应用,如HTTP ,实际上是有许多小的连接所组成的。

在Internet 中使用PA T 时,所有不同的TCP・29・西 安 邮 电 学 院 学 报 2009年1月和UDP信息流看起来仿佛都来源于同一个IP地址。

这个优点在小型办公室内非常实用,通过从ISP处申请的一个IP地址,通过PA T将多个连接接入Internet。

实际上,许多远程访问设备支持基于PPP的动态IP地址。

这样,ISP甚至不需要支持PA T,就完全可以做到多个内部IP地址公用一个外部IP地址上Internet。

虽然会导致信道的一定拥塞,但考虑到节省的ISP上网费用和易管理的特点,用PA T还是很值得的。

2 STUN穿越技术在P2P中的应用在P2P穿越NA T设备的研究中,很多学者提出了解决方案,也产生了一些通信协议。

应用最为广泛的是STUN(Simple Traversal of User Datagram Protocol),下面以STUN协议为例详细说明NA T 穿越的过程。

(1)STUN,简单UDP包穿越协议,它使用一种简单的客户/服务器模型,确定NA T类型以及发现NA T上映射的IP地址和端口号。

根据该协议的描述,STUN Client使用UDP数据报与STUN Server 通信。

在多次通信中,STUN Client根据需要变化目的地址,STUN Server变化源地址,最终确定STUN Client是否处在NA T设备之后,并确定该NA T设备的类型,同时得到STUN Client在NA T 上映射的IP地址和端口。

它通过这种机制得到NA T设备给UDP通信分配的IP地址和端口号。

STUN协议中有两个重要的字段需要介绍: MAPPED-ADDRESS和CHAN GE-REQU EST。

MAPPED-ADDRESS总是出现在STUN Server对STUN Client的绑定响应中,表示STUN Server在绑定请求中看到的IP地址和端口,即STUN Client 经过NA T映射后的IP地址和端口号。

CHAN GE -REQU EST只能在STUN Client发给STUN Server的绑定请求中出现,它包含两个标志来控制STUN Server从不同的IP地址和端口发送绑定响应。

STUN协议最大的优点是无需现有NA T设备做任何改动,并且STUN方式可在多个NA T串联的网络环境中使用。

STUN的局限性在于需要客户端支持STUN Client的功能,同时不支持对称NA T的穿越。

(2)P2P利用STUN穿越NA T:位于NA T后面终端A与B要穿越NA T直接通讯,可以借助在公网上的第三者Server来帮助。

穿越NA T的情况分为为两种方式:(1)一方在NA T之后,一方在公网上。

这种情况相对简单,只要让NA T之后的终端先发起通讯, NA T就没有作用了,它可以从Server上取得另一个Peer的地址,主动连接,回来的数据包就可以方便地穿越NA T。

(2)双方都在NA T之后,连接的成功与否与两个NA T的类型有关。

主要的思路的先通过终端与Server的连接,获得两个终端在NA T外部的地址(IP与端口号),再由终端向对方的外部地址发邀请包,获取自己与对方通讯的外部地址,俗称为“打洞”。

关键是获取了NA T外部映射的地址,就可以发包直接沟通,建立连接。

但当一方是对称型,另一方是Port Restricted或对称型时,无法有效获取外部地址,邀请包无法到达对方,也就无法穿越NA T。

具体的分析可以根据两个NA T的类型分成若干情况分析,这里给一般的穿越例子。

图2 P2P穿越NA T(两个主机都在NA T内)(3)实例:UDP穿越NA T:A登录Server,NA T A分配端口11000,Server 得到A的地址为100.10.10.10:11000B登录Server,NA T B分配端口22000,Server 得到B的地址为200.20.20.20:22000此时B会把直接来自A的包丢弃,所以要在NA T B上打一个方向为A的洞,那么A就可以向200.20.20.20:22000发送数据了。

相关主题