基于UPnP的穿越NAT的技术.docx

上传人:b****4 文档编号:12319178 上传时间:2023-04-18 格式:DOCX 页数:45 大小:1.03MB
下载 相关 举报
基于UPnP的穿越NAT的技术.docx_第1页
第1页 / 共45页
基于UPnP的穿越NAT的技术.docx_第2页
第2页 / 共45页
基于UPnP的穿越NAT的技术.docx_第3页
第3页 / 共45页
基于UPnP的穿越NAT的技术.docx_第4页
第4页 / 共45页
基于UPnP的穿越NAT的技术.docx_第5页
第5页 / 共45页
点击查看更多>>
下载资源
资源描述

基于UPnP的穿越NAT的技术.docx

《基于UPnP的穿越NAT的技术.docx》由会员分享,可在线阅读,更多相关《基于UPnP的穿越NAT的技术.docx(45页珍藏版)》请在冰豆网上搜索。

基于UPnP的穿越NAT的技术.docx

基于UPnP的穿越NAT的技术

基于UPnP的穿越NAT的技术

 

作者

唐善成

撰写时间

2005年9月7日

文档类型

研究小结

文档状态

草稿

目录

1、NAT原理4

1.1、概述4

1.2、分类4

1.2.1、传统NAT4

1.2.2、双向NAT5

1.2.3、两次NAT5

1.2.4、多宿主NAT6

1.3、工作机理6

1.3.1、FullConeNAT6

1.3.2、RestrictedConeNAT6

1.3.3、PortRestrictedConeNAT7

1.3.4、SymmetricNAT7

1.3.5、抽象原理7

1.4、应用8

2、穿越NAT的障碍8

3、现有穿越NAT的方法9

3.1、外网服务器法9

3.2、协议扩展法10

3.3、DNS-ALG10

3.4、隧道法11

3.5、ALG11

3.6、MIDCOM12

3.7、STUN(SimpleTraversalofUDPThroughNetworkAddressTranslators)13

3.8、TURN(TraversalUsingRelayNAT)13

3.9、FullProxy14

3.10、UPnP14

3.11、UDP封装法14

3.12、穿越NAT的方法的比较14

4、UPnP原理17

4.1、概述17

4.2、UPnP网络中的部件17

4.3、UPnP技术使用的协议18

4.4、UPnP网络工作步骤19

4.4.0、寻址(Addressing)19

4.4.1、发现(Discovery)19

4.4.2、描述(Description)19

4.4.3、控制(Control)20

4.4.4、事件(Eventing)20

4.4.5、展示(Presentation)20

5、基于UPnP穿越NAT的技术20

5.1、概述20

5.2、IGD技术的特点20

5.3、基于UPnP穿越NAT的原理21

6、实现基于UPnP穿越NAT的技术22

6.1、开发IGD22

7、实验目的24

8、实验方案24

9、实验平台24

10、实验过程和实验结果24

10.1、外网主机主动访问内网主机25

10.2、内网主机在数据包中包含后继会话的新地址端口25

11、实验结果分析31

12、实验结论31

参考文献32

1、NAT原理

1.1、概述

RFC1631、RFC3022以及相关RFC定义的NAT(NetworkAddressTranslator)是一种将IP地址从一个编址域映射到另一个编址域的方法,典型的应用是把RFC1918定义的私有IP地址映射到Internet所使用的公有IP地址。

NAT与网络中其它计算设备的关系如图1.1。

虽然NAT技术已经得到广泛应用,但它是一把双刃剑,在带来节省IPv4地址空间等好处的同时,破坏了Internet最基本的“端到端的透明性”的设计理念,增加了网络的复杂性,阻碍了业务的创新。

IETF一直主张利用IPv6技术解决地址短缺问题,因此IETF虽然出版了几个与NAT相关的RFC,但对NAT技术(尤其是穿越问题)一直没有系统的标准工作,如SIP和MobileIP就是NAT出现后设计的一些协议,都未考虑到NAT的穿越问题。

现在业界意识到Internet在短期内不可能过渡到IPv6,IPv4和IPv6将长期共存,NAT以及NAT-PT(NetworkAddressTranslation-ProtocolTranslation)将继续得到长期应用,因此NAT相关问题开始引起IETF(InternetEngineeringTaskForce)和ITU-T(InternationalTelecommunicationUnion)等相关国际标准化组织的关注。

中国通信标准化协会IP与多媒体工作委员会也正在积极参与ITU-TSG16组的相关活动,加紧制定中国多媒体业务NAT穿越标准[1]。

1.2、分类

从功能上看,主要有以下几种典型的NAT(RFC2663),如图1.2)。

1.2.1、传统NAT

在多数情况下,传统NAT(TraditionalNAT)允许位于内部网络的主机(采用RFC1918地址)透明地访问外部网络中的主机,把从外部网络到内部网络的访问作为一种特例。

有关传统NAT的详细描述见RFC1631和RFC3022。

传统NAT包括基本NAT和NAPT两大类。

(1)基本NAT

基本NAT可以分为两类:

静态NAT和动态NAT。

静态NAT的工作原理是将内部网络中的每个IP地址(可以是私有IP地址、公有IP地址)永久映射成外部网络中的某个IP地址。

动态NAT的工作原理则是在外部网络中定义了一系列的IP地址,采用动态分配的方法映射到内部网络中的IP地址。

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

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

需要注意的是,动态NAT中动态分配的外部IP地址全部被占用后,后续的NAT申请将会失败,不过许多NAT有超时配置功能,可以在一定程度上提高外部IP的利用率和用户满意度。

(2)NAPT

NAPT(NetworkAddressPortTranslation)把基本NAT的概念延伸了一步,在翻译IP地址的同时也翻译传输层标识(如TCP/UDP的端口号,ICMP的查询ID),从而把多个内网主机的传输层标识映射到一个外部IP地址。

NAPT可以使一组主机共享一个外部IP地址。

在实际使用中可以把NAPT和基本NAT结合起来。

对于从内部网络向外的数据包,NAPT翻译源IP地址、源传输层标识以及相关字段,如IP、TCP、UDP和ICMP头校验和。

对于进入内部网络的数据包,翻译目的IP地址、目的传输层标识以及相关字段。

传输层标识可以是TCP/UDP端口号或ICMP查询ID中的任意一种。

1.2.2、双向NAT

双向NAT(Bi-directionalNat、Two-wayNAT)支持从内部网络向外部网络发起会话请求,也支持从外部网络向内部网络发起会话请求。

当在外出或进入任何一个方向上建立连接时,把内部网络IP地址静态或动态地映射到一个外部IP地址上。

这里假设位于内部网络和外部网络之间的名字空间(FQDN,FullyQualifiedDomainNames)是端到端唯一的,因为只有这样才能使得位于外部编址域的主机能利用域名系统(DNS)访问内部网络的主机。

在双向NAT上必须部署DNS-ALG(DNS-ApplicationLevelGateway,参阅RFC2694),以处理名字到地址的映射。

当一个DNS包需要穿越内部和外部编址域时,DNS-ALG必须能够将DNS查询和响应消息中的内部地址翻译成外部地址,或把外部地址翻译成内部地址。

1.2.3、两次NAT

两次NAT(TwiceNAT)是NAT的一个变种,它同时修改源和目的IP地址。

这与传统NAT和双向NAT不同(二者仅翻译源或目的地址/端口)。

当位于同一NAT之后的两台内网主机之间以各自的公网地址进行连接时,这时NAT要做两次转换,先将包中来源主机的内网地址转换为公网地址,再将包中目的主机的公网地址转换为内网地址,最后将包转发给目的主机,上述的NAT转换过程也称之为回环转换(LoopbackTranslation)。

两次NAT在内部编址域和外部编址域存在冲突时非常有用。

典型例子之一是当一个站点(不恰当地)使用已分配给其它机构的公有IP地址对其内网主机进行编址时;例子之二是当一个站点从一家运营商换到另一家运营商,同时希望在内部保留前一家运营商分配的地址时(而前一家运营商可能在一段时间后将这些地址重新分配给其它人使用)。

在这些情况下,非常关键的一点就是外部网络的主机可能会分配得到以前已经分配给内网主机的同一地址。

如果该地址碰巧出现在某个数据包中,则应该将它转发给内网主机,而不是通过NAT转发给外部编址域。

两次NAT通过同时翻译IP包的源和目的地址,试图桥接这些编址域,解决了地址冲突的问题。

1.2.4、多宿主NAT

使用NAT会带来很多问题(RFC2993)。

如,NAT设备要为经过它的会话维护状态信息,而一个会话的请求和响应必须通过同一NAT设备做路由,因此通常要求支持NAT的域边界路由器必须是唯一的,所有的IP包发起自或终结在该域。

但这种配置将NAT设备变成了可能的单点故障点。

为了让一个内部网络能够在某个NAT链路出故障的情况下也可以保持与外部网络的连通性,通常希望内部到相同或不同的ISP具有多条连接(多宿主的,MultihomedNAT),希望经过相同或不同的NAT设备。

共享相同的NAT配置能够为多个NAT相互之间提供故障备份。

在这种情况下,有必要让备份NAT设备交换状态信息,以便当主NAT出现故障时,备份NAT能够担负起透明地保持会话的能力。

1.3、工作机理

目前市场上使用最多的是传统NAT设备,尤其是NAPT设备,基本NAT可以看成NAPT的特例,下面以NAPT为例子论述NAT的工作机理。

NAPT的映射方式主要有以下几种典型类型(RFC3489)[2],如图1.3。

1.3.1、FullConeNAT

这种NAT的特点是由内网同一地址及端口发出的数据包,不论目的地是外网的哪个主机,在NAT设备的出口均映射到相同的外网地址和端口;而外网的任何主机发送到此外网地址和端口的数据包,也都会被转发到内网相同的地址和端口,具体过程如图1.4所示。

内网主机向外网主机A发送数据包,数据包的源地址(192.168.12.2:

1111)被NAT改为外网地址(202.117.15.5:

2222)并转发到主机A,此后不仅主机A,其它主机(B)发往外网地址(202.117.15.5:

2222)的数据包也都可以被转发给内网主机(192.168.12.2:

1111)。

1.3.2、RestrictedConeNAT

此NAT与FullConeNAT相似,唯一的区别是只有收到内网主机发出的数据包的主机才可以返回数据包到此内网主机。

如图1.5,NAT仅将主机A发往NAT入口点(202.117.15.5:

2222)的数据包转发给内网主机,而将主机B的数据包丢弃。

1.3.3、PortRestrictedConeNAT

此NAT比RestrictedConeNAT限制更为严格,只有收到内网主机发出的数据包的主机端口才可以返回数据包到此内网主机。

如图1.6,NAT仅将主机A(端口为3333)发往NAT入口点(202.117.15.5:

2222)的数据包转发给内网主机,而将主机A的其它端口(非3333)和主机B的数据包丢弃。

1.3.4、SymmetricNAT

Cone类型的NAT映射与外网目的地址无关,即内网中同一主机IP地址和端口发出的数据包均会被NAT设备映射到相同的外网地址和端口,而SymmetricNAT(对称NAT)发往不同目的主机或端口的数据包会被映射到不同的外网地址和端口。

图1.7说明了这种情况,发往主机A和主机B的数据包被映射到不同的外网地址和端口,主机A返回给内网主机的数据包不能由关联主机B的NAT入口进入,同样,主机B的数据包不能由关联主机A的NAT入口进入。

1.3.5、抽象原理

从上述分析可以抽象出NAT的一般原理,NAT的工作基础在于建立内网主机地址(端口)和外网主机地址(端口)映射表,数据包的转发均依赖于此映射表,映射表的一行是9元组:

{协议,持续时间,描述,内网主机IP,内网主机Port,NAT外网IP,NAT外网Port,外网主机IP,外网主机Port},其中协议指TCP、UDP等,持续时间指映射存活时间,描述是对映射的文字解释,而后6项是此9元组的核心,它们决定了NAT的类型,在后面的论述中主要参考6元组:

{内网主机IP,内网主机Port,NAT外网IP,NAT外网Port,外网主机IP,外网主机Port},如表1.1。

NAT的穿越实际上就围绕9元组的构造、内容展开。

表1.16元组与传统NAT类型的关系

NAT类型

数据方向

内网主机IP

内网主机Port

NAT外网IP

NAT外网Port

外网主机IP

外网主机Port

基本NAT

自内向外

*

*

*

*

自外向内

*

*

*

*

FullConeNAT

自内向外

*

*

自外向内

*

*

RestrictedConeNAT

自内向外

*

*

自外向内

*

PortRestrictedConeNAT

自内向外

*

*

自外向内

SymmetricNAT

自内向外

自外向内

说明:

√:

进行地址(端口)转换时需要核对的项目

*:

进行地址(端口)转换时不需要核对的项目

1.4、应用

●解决IP地址紧缺的问题,将私有地址翻译成公有地址,提供透明的端到端通信,这是最主要的应用之一;

●隔离内外网络,提供一定的网络安全保障;

●虚拟服务器(负载平衡),虚拟服务器设备可由NAT实现,客户连接到虚拟服务器上,NAT设备把目的IP地址转换为实际的服务器IP地址。

NAT设备根据各种算法来选择某一个真实的服务器,如根据每个服务器的负载来分配选择,从而实现负载平衡,如应用到HTTP服务器群;

●单目的多路由器。

2、穿越NAT的障碍

NAT解决IP地址紧缺问题的同时带来了NAT穿越问题,随着新业务的出现(如VoIP)NAT穿越问题越来越突出,主要表现在以下几个方面:

外网主机无法发起主动连接与内网主机通信;

对某些协议(如H.323、SIP)而言NAT阻碍了内网主机和外网主机的通信;

某些协议(如IPSec)在通过NAT后失效。

第一个问题与协议无关,即对所有的应用层协议来说都存在此问题。

这个问题主要随着P2P的广泛应用而日益突出,因为P2P计算模式要求会话的双方都可以主动发出通信请求,而NAT却把内网中的一方屏蔽在内网中,外网中的一方无法发起主动连接。

(P2P应用)

另外,许多网络服务或服务器假定:

如果建立监听套接字,则Internet上的所有客户机都可以与之联系。

但在网络边缘上有NAT设备时,NAT却要求进行端口映射,以便将输入通信转发给内部网络上的服务。

因此,该服务仅对专用网络上的客户机有效。

它对于Internet其余部分而言不可用。

该问题最常见的解决办法是手动配置端口映射,使NAT设备将发送到NAT特定外部IP地址和端口的数据包转发给该服务所用的内部IP地址和端口。

利用该端口映射,服务可以接收输入数据包,从而使服务可被专用网络外部的客户机所使用。

建立端口映射之前,网络是断开的。

手动配置该映射的过程通常比较复杂,要求较有经验的用户才能正确进行映射的配置。

因此,除非是联系自己宽带Internet服务提供商、PC制造商、零售商或Internet网关制造商的客户服务中心以尝试找到问题的根源及解决方案,否则许多一般用户或小型企业用户将无法使用所需的应用程序或服务。

上述情况还会造成映射的不严格:

许多外部客户机都可以使用该映射来连接服务器。

(内部网络上的服务)

接着,有些网络协议假定始终有可全局路由的已知端口可用。

当多个客户机共享IP地址时,每次将只有一个客户机能使用已知的端口。

例如,每次只有一个Web服务能使用本地网络上的端口80。

如果不是这样,NAT设备将无法确定外部请求所适用的客户机。

(内部网络多默认服务端口)

还有,一些网络应用程序使用端口X上的套接字向服务器或对等计算机发送通信信息,然后等待将服务器的通信信息接收到端口Y的独立监听套接字上。

NAT将监视输出通信并为端口X创建端口映射,但并不对寻址到端口Y的返回数据包进行端口映射。

寻址到端口Y的输入数据包将被丢弃。

这种情况实质上也是外网主机无法发起主动连接与内网主机通信。

(内部网络分散端口)

第二个问题与协议有关,主要是H.323、SIP等协议。

在这些协议中,内网主机在IP包数据字段(数据域,净荷)中包含了自己的私有IP地址和端口(供后继的会话使用),IP包在通过NAT时虽然NAT修改了IP包的源地址、源端口为NAT的公有IP地址和端口,但净荷中的私有IP地址和端口未修改,这样后继的会话将失败,因为通信的另一方试图使用得到的私有IP地址和端口来和内网主机通信。

更详细地说,有些网络应用程序假定客户机所分配的IP地址和端口将始终可进行全局路由,并可直接在Internet上使用。

许多情况下,它们属于IETF保留地址范围内的专用IP地址。

应用程序会在发送给服务器的数据包的负载中包含该专用IP地址或端口。

服务器可以将该嵌入地址用作联系客户机时所用的地址。

如果服务器试图用嵌入IP地址和端口进行回复,而非NAT提供的映射地址和端口,系统就会丢弃该数据包。

这是因为嵌入IP地址是无法路由的。

如果网络应用程序能找到NAT设备并检索到所要使用的外部IP地址和外部端口映射,应用程序就可以在数据包中嵌入正确的信息。

(嵌入地址或端口)

第三个问题与协议有关,主要是IPSec等安全协议。

IPSec为了保证通信的安全,对IP包进行了加密来防止非法用户修改IP包的任何部分,但是IP包经过NAT时肯定要被修改,这样就使得IPSec协议在NAT中失效。

总得来说产生NAT穿越障碍的原因如下:

通常NAT不允许外网主机主动发起会话请求来访问内网主机;

应用层协议在数据包净荷中包含了用于后继会话的内网地址和端口号(会话双方协商);

应用层协议不希望数据包在到达目的之前被修改。

3、现有穿越NAT的方法

穿越NAT(NATTraversal)应视为一种在需要时使用的处理机制,而非在所有情况下都发挥作用。

在IPv6中,每个客户机都具有可全局路由的IP地址,因此已不再需要NAT及NATTraversal。

就IPv6能在多长时间得到普遍部署这一问题,有各种不同的预测。

业界已投入巨资推进IPv6,但在现在及未来的几年内,本文后面所述的NATTraversal解决方案对于希望解决NAT问题的一般用户和小型企业用户而言却意义非凡。

针对不同的NAT穿越障碍,研究人员提出了各种解决方案。

3.1、外网服务器法

此方法的基础是:

利用内网主机向外网主机发送数据包建立NAT映射表6元组,来建立由外向内的会话通道,如图1.8。

主要适于普通数据业务的应用层协议,如JXTA等,不适于H.323、SIP、IPSec等协议。

仅支持FullConeNAT。

工作流程:

内网主机A、内网主机B向外网服务器发送数据包并注册它们自己,这样在NAT-A和NAT-B上都建立了映射表6元组;

如果内网主机A希望向内网主机B发起主动连接请求,则需要先访问外网服务器获得内网主机B所对应的NAT外网IP和NAT外网Port,然后将数据包发送该IP和Port,NAT-B将收到的数据包转发给内网主机B,这样实现了由外向内穿越。

3.2、协议扩展法

此方法的基础是:

利用IP包中的选项字段携带目标内网主机的私有IP和Port,NAT解析选项字段,依此建立NAT映射表6元组,来建立由外向内的会话通道,如图1.9。

工作流程:

如果内网主机A希望向内网主机B发起主动连接请求,则需要将内网主机B的IP和Port写入选项字段,将数据包发往NAT-B(约定端口范围:

60001~65535);

数据包经过NAT-A时,NAT-A建立映射表6元组,并修改数据包的源IP和Port;

NAT-B收到数据包后,检查映射表,如果没有相应的表项则检查目的Port,如果在60001~65535之间,则根据选项字段的内容添加映射表6元组,然后修改数据包目的IP和Port,进而将包转发给内网主机B。

这样实现了由外向内穿越。

3.3、DNS-ALG

此方法的基础是:

在任一方向上建立连接的时候内部网络地址静态或动态地与外网唯一地址绑定在一起,在内部网络和外部网络主机间建立唯一的端到端的名字空间,外部区域主机访问内部网络主机时使用DNS来做地址解析,如图1.10。

工作流程:

建立起DNS-ALG(DomainNameService-ApplicationLevelGateway)服务器来协助名字到地址的映射;

当DNS包通过NAT设备穿越内部和外部网络时,在DNS查询和应答中DNS-ALG必须能够互相转换内部网络地址和外部网络地址绑定;每当建立了一条连接,就相应的生成一个名字,并且这个名字要能够作为建立的连接的索引,也就是说,名字一定要是独一无二的;

公网中的主机要访问私网的主机,必须经过DNS服务器,将名字解析为对应的IP地址映射。

3.4、隧道法

此方法的基础是:

在内部和外部网络中分别建立一个服务器,在两个服务器之间建立隧道,所有的通信将经过此隧道,客户端、NAT、多媒体业务协议不需作任何修改,如图1.11。

工作流程:

建立起内网服务器和外网服务器之间的隧道;

当内网主机希望和外网主机会话时,只需发送数据包到内部网络中的服务器,经由隧道到达外网主机。

图1.11隧道法

3.5、ALG

此方法的基础是:

修改NAT以监视所有经过NAT的数据包,根据应用层协议修改相应的数据,包括IP地址、端口等。

普通NAT通过修改UDP或TCP报文头部地址信息实现地址转换,对于很多会话类业务,TCP/UDP净荷中也携带了地址信息,ALG(ApplicationLevelGateway)机制主要修改净荷中的地址信息实现会话类业务的穿越,如图1.12。

ALG功能目前主要驻留在一些NAT设备中,要求这些设备本身具有应用层的智能,同时每增加一种新的应用都需要对ALG进行升级。

对会话类业务,ALG需要支持IP语音和视频协议(H.323、SIP、H.248)的识别和对NAT的控制,以使会话类业务顺利穿越NAT。

图1.12ALG

3.6、MIDCOM

MIDCOM的框架结构采用可信的第三方(MIDCOMAgent)对Middlebox(NAT)进行控制的机制,应用业务识别功能由Middlebox转移到外部的MIDCOMAgent上,因此应用层协议对Middlebox是透明的。

由于应用业务识别的功能从Middlebox转移到外部的MIDCOMAgent上,因此根据MIDCOM的架构,在不需要更改Middlebox基本特性的基础上,通过对MIDCOMAgent的升级就可以支持更多的新业务。

MIDCOM是一种VoIP安全服务协议,该协议涉及媒体传输的应用策略,如包过滤、QoS、隧道、入侵检测等。

它将功能服务从Middlebox转移到MIDCOMAgent中,使Middlebox的设计与具体应用无关,专门提供如防火墙、NAT等的服务。

MIDCOM协议允许MIDCOMAgent访问Middlebox的资源,允许Middlebox取消MIDCOMAgent的应用。

Middlebox在MIDCOMAgent的帮助下实现具体应用功能,而不需要把该功能放在Middlebox中。

通过该协议,Middlebox能无缝地使用第三方提供的应用程序。

在MIDCOM协议中,Middlebox各个服务间共享资源,这些资源由Mi

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 考试认证 > 财会金融考试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1