有关NAT穿越以及可信设备通信系统的背景资料

上传人:豆浆 文档编号:33459747 上传时间:2018-02-15 格式:DOCX 页数:9 大小:523.56KB
返回 下载 相关 举报
有关NAT穿越以及可信设备通信系统的背景资料_第1页
第1页 / 共9页
有关NAT穿越以及可信设备通信系统的背景资料_第2页
第2页 / 共9页
有关NAT穿越以及可信设备通信系统的背景资料_第3页
第3页 / 共9页
有关NAT穿越以及可信设备通信系统的背景资料_第4页
第4页 / 共9页
有关NAT穿越以及可信设备通信系统的背景资料_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《有关NAT穿越以及可信设备通信系统的背景资料》由会员分享,可在线阅读,更多相关《有关NAT穿越以及可信设备通信系统的背景资料(9页珍藏版)》请在金锄头文库上搜索。

1、NAT穿越以及可信设备跨域通信系统介绍NAT穿越(NAT traversal)涉及 TCP/IP网络中的一个常见问题,即在处于使用了 NAT设备的私有 TCP/IP网络中的主机之间建立连接的问题。1.概述会遇到这个问题的通常是那些客户端网络交互应用程序的开发人员,尤其是在对等网络和 VoIP领域中。IPsec VPN 客户普遍使用 NAT-T来达到使 ESP包通过 NAT的目的。尽管有许多穿越 NAT的技术,但没有一项是完美的,这是因为 NAT的行为是非标准化的。这些技术中的大多数都要求有 一个公共服务器,而且这个服务器 使用的是一个众所周知的、从全球任何地方都能访问得到的 IP地址。一些方法

2、仅在建立连接时需要使用这个服务器,而其它的方法则通过这个服务器中继所有的数 据这就引入了带宽开销的问题。2.NAT穿越方法2.1 NAT/ALG 方式普通 NAT是通过修改 UDP或 TCP报文头部地址信息实现地址的转换,但对于 VOIP应用,在 TCP/UDP净载中也需带地址信息,ALG 方式是指在私网中的VOIP终端在净载中填写的是其私网地址,此地址信息在通过 NAT时被修改为NAT上对外的地址。语音和视频协议(H323、SIP、MGCP/H248)的识别和对 NAT/Firewall的控制,同时每增加一种新的应用都将需要对 NAT/Firewall 进行升级。在安全要求上还需要作一些折衷

3、,因为 ALG 不能识别加密后的报文内容,所以必须保证报文采用明文传送,这使得报文在公网中传送时有很大的安全隐患。NAT/ALG是支持 VOIP NAT穿透的一种最简单的方式,但由于网络实际情况是已部署了大量的不支持此种特性的 NAT/FW设备,因此,实际应用中,很难采用这种方式。2.2 MIDCOM 方式与 NAT/ALG不同的是,MIDCOM 的基本框架是采用可信的第三方(MIDCOM Agent)对 Middlebox (NAT/FW)进行控制, VOIP协议的识别不由 Middlebox完成,而是由外部的 MIDCOM Agent完成,因此 VOIP使用的协议对 Middlebox是透

4、明的 .由于识别应用协议的功能从 Middlebox移到外部的 MIDCOM Agent上,根据MIDCOM 的构,在不需要更改 Middlebox基本特性的基础上,通过对 MIDCOM Agent的升级就可以支持更多的新业务,这是相对 NAT/ALG方式的一个很大的优势。在 VOIP实际应用中,Middlebox 功能可驻留在 NAT/Firewall,通过软交换设备(即 MIDCOMAgent)对 IP语音和视频协议(H323、SIP、MGCP/H248)的识别和对 NAT/Firewall的控制,来完成 VOIP应用穿越 NAT/Firewall .在安全性上,MIDCOM 方式可支持控

5、制报文的加密,可支持媒体流的加密,因此安全性比较高。如果在软交换设备上实现对 SIP/H323/MGCP/H248协议的识别,就只需在软交换和 NAT/FW设备上增加 MIDCOM协议即可,而且以后新的应用业务识别随着软交换的支持而支持,此方案是一种比较有前途的解决方案,但要求现有的NAT/FW设备需升级支持 MIDCOM协议,从这一点上来说,对已大量部署的NAT/FW设备来说,也是很困难的,同 NAT/ALG方式有相同的问题。2.3 STUN 方式解决穿透 NAT问题的另一思路是,私网中的 VOIP终端通过某种机制预先得到出口 NAT上的对外地址,然后在净载中所填写的地址信息直接填写出口 N

6、AT上的对外地址,而不是私网内终端的私有 IP地址,这样净载中的内容在经过NAT时就无需被修改了,只需按普通 NAT流程转换报文头的 IP地址即可,净载中的 IP 地址信息和报文头地址信息是一致的。STUN 协议就是基于此思路来解决应用层地址的转换问题。STUN的全称是 Simple Traversal of UDP Through Network Address Translators,即 UDP对 NAT的简单穿越方式。 应用程序(即 STUN CLIENT)向 NAT外的 STUN SERVER通过 UDP发送请求 STUN 消息,STUN SERVER 收到请求消息,产生响应消息,响应

7、消息中携带请求消息的源端口,即 STUN CLIENT在NAT上对应的外部端口。然后响应消息通过 NAT发送给 STUN CLIENT,STUN CLIENT通过响应消息体中的内容得知其 NAT上的外部地址,并将其填入以后呼叫协议的 UDP负载中,告知对端,本端的 RTP接收地址和端口号为 NAT 外部的地址和端口号。由于通过 STUN协议已在 NAT上预先建立媒体流的 NAT映射表项,故媒体流可顺利穿越 NAT.STUN协议最大的优点是无需现有 NAT/FW设备做任何改动。由于实际应用中,已有大量的 NAT/FW,并且这些 NAT/FW 并不支持 VoIP的应用,如果用MIDCOM或 NAT

8、/ALG方式来解决此问题,需要替换现有的 NAT/FW,这是不太容易的。而采用 STUN 方式无需改动 NAT/FW,这是其最大优势,同时 STUN方式可在多个 NAT串联的网络环境中使用,但 MIDCOM方式则无法实现对多级 NAT的 有效控制。STUN的局限性在于需要 VOIP终端支持 STUN CLIENT的功能,同时 STUN并不适合支持 TCP连接的穿越,因此不支持 H323.另外 STUN方式不支持对防火墙的穿越,不支持对称 NAT (Symmetric NAT)类型(在安全性要求较高的企业网中,出口 NAT通常是这种类型)穿越。2.4 TURN方式TURN方式解决 NAT问题的思

9、路与 STUN相似,也是私网中的 VOIP终端通过某种机制预先得公网上的服务地址(STUN 方式得到的地址为出口 NAT上外部地址,TURN 方式得到地址为 TURN Server上的公网地址),然后在报文净载中所要求的地址信息就直接填写该公网地址。PageTURN的全称为 Traversal Using Relay NAT,即通过 Relay方式穿越NAT.TURN应用模型通过分配 TURN Server的地址和端口作为私网中 VOIP终端对外的接受地址和端口,即私网终端发出的报文都 要经过 TURN Server进行Relay转发,这种方式除了具有 STUN方式的优点外,还解决了 STUN

10、应用无法穿透对称 NAT(SymmetricNAT)以及类 似的 Firewall设备的缺陷,同时TURN支持基于 TCP的应用,如 H323协议。此外 TURN Server控制分配地址和端口,能分配 RTP/RTCP地址对(RTCP 端口号为 RTP端口号加 1)作为私网终端用户的接受地址,避免了 STUN方式中出口 NAT对 RTP/RTCP地址端口号的任意分配,使得客户端无法收到对端发来的 RTCP报文(对端发 RTCP报文时,目的端口号缺省按 RTP端口号加 1 发送)。TURN的局限性在于需要 VOIP终端支持 TURN Client,这一点同 STUN一样对网络终端有要求。此外,

11、所有报文都必须经过 TURN Server转发,增大了包的延迟和丢包的可能性。2.5 ICE方式应该说 ICE是目前在 NAT穿透中最常用的方式。ICE(交互式连接建立)- Interactive Connectivity Establishment 是一种综合性的 NAT穿越的技术。交互式连接建立是由 IETF的 MMUSIC工作组开发出来的一种 framework,可整合各种 NAT 穿透技术,如 STUN、TURN(Traversal Using Relay NAT)、RSIP(Realm Specific IP,特定域 IP)等。该 framework可以让 SIP的客户端利用各种 N

12、AT穿透方式打穿远程的防火墙。2.6 有关 TCP NAT穿越Internet的迅速发展以及 IPv4 地址数量的限制使得网络地址翻译(NAT,Network Address Trans2lation)设备得到广泛应用。NAT 设备允许处于同一 NAT后的多台主机共享一个公网(本文将处于同一 NAT后的网络称为私网,处于 NAT 前的网络称为公网) IP 地址。一个私网 IP 地址通过 NAT设备与公网的其他主机通信。公网和私网 IP地址域,如下图所示: 广域网与私网示意图 一般来说都是由私网内主机(例如上图中“电脑 A-01”)主动发起连接,数据包经过 NAT地址转换后送给公网上的服务器(例

13、如上图中的 “Server”),连接建立以后可双向传送数据,NAT 设备允许私网内主机主动向公网内主机发送数据,但却禁止反方向的主动传递,但在一些特殊的场合需 要不同私网内的主机进行互联(例如 P2P软件、网络会议、视频传输等),TCP 穿越 NAT的问题必须解决。网上关于 UDP穿越 NAT的文章很多,而且还有 配套源代码,但是我个人认为 UDP数据虽然速度快,但是没有保障,而且 NAT为 UDP准备的临时端口号有生命周期的限制,使用起来不够方便,在需要保证传 输质量的应用上TCP连接还是首选(例如:文件传输)。网上也有不少关于 TCP穿越 NAT(即 TCP打洞)的介绍文章,但不幸我还没找

14、到相关的源代码可以参考,我利用空余时间写了一个可以实现 TCP穿越NAT,让不同的私网内主机建立直接的 TCP通信的源代码。 这里需要介绍一下 NAT的类型: NAT设备的类型对于 TCP穿越 NAT,有着十分重要的影响,根据端口映射方式,NAT可分为如下 4类,前 3种 NAT类型可统称为 cone类型。 (1)全克隆( Full Cone) : NAT 把所有来自相同内部 IP地址和端口的请求映射到相同的外部 IP地址和端口。任何一个外部主机均可通过该映射发送 IP包到该内部主机。 (2)限制性克隆(Restricted Cone) : NAT 把所有来自相同内部 IP地址和端口的请求映射

15、到相同的外部 IP地址和端口。但是,只有当内部主机先给 IP地址为X的外部主机发送 IP包,该外部主机才能向该内部主机发送 IP包。 (3)端口限制性克隆( Port Restricted Cone) :端口限制性克隆与限制性克隆类似,只是多了端口号的限制,即只有内部主机先向 IP地址为 X,端口号为 P的外部主机发送 1个 IP包,该外部主机才能够把源 端口号为 P的 IP包发送给该内部主机。 (4)对称式 NAT ( Symmetric NAT) :这种类型的 NAT与上述 3种类型的不同,在于当同一内部主机使用相同的端口与不同地址的外部主机进行通信时, NAT 对该内部主机的映射会有所不

16、同。对称式 NAT不保证所有会话中的私有地址和公开 IP之间绑定的一致性。相反,它为每个新的会话分配一个新的端口号。 我们先假设一下:有一个服务器 S在公网上有一个 IP,两个私网分别由NAT-A和 NAT-B连接到公网,NAT-A 后面有一台客户端 A,NAT-B 后面有 一台客户端 B,现在,我们需要借助 S将 A和 B建立直接的 TCP连接,即由 B向 A打一个洞,让 A可以沿这个洞直接连接到 B主机,就好像 NAT-B不存在一 样。 实现过程如下(请参照源代码): 1、 S 启动两个网络侦听,一个叫【主连接】侦听,一个叫【协助打洞】的侦听。 2、 A 和 B分别与 S的【主连接】保持联系。 3、 当 A需要和 B建立直接的 TCP连接时,首先连接 S的【协助打洞】端口,并发送协助连接申请。同时在该端口号上启动侦听。注意由于要在相同的网络终端上绑定 到不同的套接上,所以必须为这些套接字设置 SO_REUSEADDR 属性(即允许重用),否则侦听会失败。 4、 S 的【协助打洞】连接收到 A的申请后通过【主连接】通知 B,并将 A

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 行业资料 > 其它行业文档

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号