在计算机科学中,nat穿透(NAT traversal)涉及
TCP/IP网络中的一个常见问题,即在处于使用了
NAT设备的私有TCP/IP网络中的主机之间建立连接的问题。
简介
在
计算机科学中,nat穿透(NAT traversal)涉及
TCP/IP网络中的一个常见问题,即在处于使用了
NAT设备的私有TCP/IP网络中的主机之间建立连接的问题。
会遇到这个问题的通常是那些客户端网络交互应用程序的开发人员,尤其是在
对等网络和
VoIP领域中。
IPsecVPN客户普遍使用NAT-T来达到使
ESP包通过
NAT的目的。
尽管有许多穿越NAT的技术,但没有一项是完美的,这是因为NAT的行为是非标准化的。这些技术中的大多数都要求有一个公共服务器,而且这个服务器使用的是一个众所周知的、从全球任何地方都能访问得到的IP地址。一些方法仅在建立连接时需要使用这个服务器,而其它的方法则通过这个服务器中继所有的数据——这就引入了带宽开销的问题。
两种常用的
NAT穿越技术是:UDP路由验证和
STUN。除此之外,还有
TURN、
ICE、
ALG,以及
SBC。
NAT穿透与IPsec
为了于NAT之上实现
IPsec,下列的协议必须在防火墙中实作:
或者是NAT-T之例:
在家庭路由器上,这通常通过启用“IPsec穿透”来实现。
IETF文献
相关技术
NAT穿透技术与NAT行为
NAT穿透基于NAT控制
NAT穿透整合技术
research papers
用途
当前的Internet面临两大问题,即可用IP地址的短缺和路由表的不断增大,这使得众多用户的接入出现困难。
使用NAT技术可以使一个机构内的所有用户通过有限的数个(或1个)合法IP地址访问Internet,从而节省了Internet上的合法IP地址;另一方面,通过地址转换,可以隐藏内网上
主机的真实IP地址,从而提高网络的安全性。
NAT术语
在NAT中,有4个地址术语是必须正确理解的,它们是Inside Local、Inside Global、Outside Local和Outside Global。
在这些术语中,Inside(内部)是指那些由机构或企业所拥有的内部网络,这些网络上的主机通常分配了
私有地址。这些地址不能直接在Internet上进行
路由,从而也就不能直接用于对Internet的访问,必须通过
网络地址的转换,以合法IP的身份来访问Internet。前者即InsideLocal地址。后者则为Inside Global地址。Local(本地)的地址是不能在Internet上通信的IP地址;Global(全局)的地址是能在Internet上通信的地址。Outside(外部)是指除了我们考察的内部网络之外的所有网络。有了对Inside、Outsider Local和Global4个词的解释,让我们来看一看4个地址的定义。
●Inside Local Address(内部本地地址)
指一个网络内部分配给网上
主机的IP地址,此地址通常不是Internet上的合法地址,即不是网络信息中心 (NIC)或Internet服务提供商(ISP:internet service provider)所分配的IP地址。
●Inside Global Address(内部全局地址)
用来代替一个或者多个内部本地IP地址的、对外的、Internet上合法的IP地址。
●Outside Local Address(外部本地地址)
一个外部主机相对于
内部网所用的IP地址。此地址需要是Internet上合法的地址,但是从内部网可以进行
路由的
地址空间中进行分配的。
●Outside Global Address(外部全局地址)
由
主机拥有者分配给在外部网上主机的IP地址。此地址是从一个从全局可路由的地址或网络空间中分配的。
相关术语
所谓静态内部源地址转换是指将一个内部本地的IP地址转换成为惟一的内部全局地址,即
私有地址和合法地址之间的静态一一映射。这种转换通常用在内部网上的主机需要对外提供服务(如Web、E-mail服务等)的情况下。
在动态内部源地址转换的方式下,一组内部本地地址与一个内部全局
地址池之间建立起一种动态的一一映射关系。这种地址转换形式下,内部
主机可以访问外部网络,外部主机也能对内部网络进行访问,但必须是在内网IP地址与内部全局地址之间存在映射关系时才能成功,并且这种映射关系是动态的。
复用内部全局地址
Cisco
路由器可以把内部全局地址进行复用性的转换,从而实现内部本地地址对内部全局地址的多对一的映射。地址复用被启用时,路由器在高层协议(如TCP或UDP
端口号)维持有关的信息,将全局地址转换为本地地址。当多个内部本地
地址映射到同一个全局地址时,端口号将用来区别不同的本地地址。复用内部全局地址的技术也被称为PAT(Port AddressTranslation。
端口地址转换)。