本节内容介绍了对受NAT和防火墙问题影响的Windows Messenger功能,这些功能包括:即时消息和出席(Presence) 、音频和视频、应用程序共享和白板、文件传输以及远程协助。
一、防火墙或者NAT组件的具备通用即插即用(UpnP)能力
如果通信双方使用的是具有通用即插即用(UpnP)能力的防火墙或者NAT组件,所有的Windows Messenger功能都可以正常使用。如果使用的是WINME/XP/2003的ICS共享,那么具备UpnP功能,而2000的NAT共享就不具备UpnP功能。
具有UPnP能力的防火墙 比如Windows XP防火墙,即Internet Connection Firewall(Internet连接防火墙),便是具有UPnP能力的防火墙。 Windows XP 中的Windows Messenger可以通过打开数据发送、连接或媒体流所需的端口对这种能力加以利用。
这是由于UPnP规格中具有"NAT Traversal"功能,使用该功能可以使WindowsXP中标准安装的聊天软件"Windows Messenger"在运行中不会出现任何问题。 所谓的NAT(network address translation),是指在因特网中使用的全球IP地址可以同在LAN内使用的私人IP地址互换的功能。所谓连续Traversal,则意味着"完全搜索"。Windows Messenger虽然具IP电话及视频聊天功能,但这种功能无法经由使用NAT的宽带路由器使用。这是由于在使用此项功能时,Windows Messenger在数据部分也嵌入了IP地址的缘故。在NAT功能中,虽然位于IP数据包头部的收信方及发信方的IP地址可以更换,但数据内的地址无法更换,因此前后不统一,无法进行通信。NAT Traversal 由路由器将服务提供商分配的全球IP地址等信息通知给LAN内的计算机。LAN内的个人电脑收到来自路由器的信息后,可以向因特网应用方传送WAN方面的IP地址等信息。如果因特网应用方采用这一结构,可以在一开始就将WAN方面分配到的IP地址写入分组的数据中,所以在通过NAT进行通信时,IP数据包头部和数据部可以使用相同的全球IP地址,从而便可以进行通信。
Windows Messenger使用了Windows XP及较早期Windows版本中的UPnP架构。随着越来越多的Internet网关设备开始为UPnP提供支持,这种解决方案的可用性将变得越来越强。
实验:验证ICS的UPnP自动端口映射功能(来自info521)
MSN Messenger中已经使用了UPnP自动端口映射,我们不妨先来看看MSN Messenger中的UPnP自动端口映射究竟是什么样子的。
网络络环境:
网关:192.168.0.1,Windows XP Professional SP1,中国电信ADSL,速率1M,使用ICS让内网电脑共享上网。内网电脑192.168.0.99,Windows XP Professional SP1,使用MSN Messenger 6.1。
图截于网关,注意我们关闭了“允许其他网络用户控制禁用共享的Internet连接”。与此同时,我们在内网电脑192.168.0.99上运行MSN Messenger 6.1的截图。
请注意,在关闭了网关上“允许其他网络用户控制禁用共享的Internet连接”的情况下,内网电脑192.168.0.99上MSN Messenger 6.1的高级连接信息显示为“您是通过非UPnP IP受限的NAT连接到Internet的。”
如果我们打开网关上的“允许其他网络用户控制禁用共享的Internet连接”,情况又将如何?
打开网关上的“允许其他网络用户控制禁用共享的Internet连接”后,内网电脑192.168.0.99上MSN Messenger 6.1的高级连接信息显示为“您是通过UPnP IP受限的NAT连接到Internet的。”
这时候,如果你使用内网电脑上的MSN Messenger 6.1与其他朋友语音聊天或传输文件的同时,再看看网关上的ICS的高级选项,请注意奇妙的变化,如图4(在4楼)。
我们可以惊奇地发现在ICS的“高级设置”中,比图1多了一项“msnmsgr(192.168.0.99:2292)16328 TCP”。etuotech以BTFans的人格担保,这一项并非我手动加上去的,而是由内网电脑192.168.0.99上运行的MSN Messenger 6.1向网关发出的UPnP自动端口映射指令自动添加的。
经由这项实验,可以得出以下几个结论:
1、ICS确实支持UPnP自动端口映射;
2、ICS中有权限设置,可以手动设置网关是否接受内网电脑发起的端口映射的请求;
3、MSN Messenger 6.1的确具备UPnP自动端口映射功能,而且不用在MSN Messenger 6.1中进行任何设定。
二、防火墙或者NAT组件不具备通用即插即用(UpnP)能力
1、在防火墙同一侧的通信双方可以使用Windows Messenger的所有特性。
2、不同的应用需要映射不同的端口
即时消息和出席(Presence)功能,不需要映射任何端口。
一般来说,防火墙和NAT设备对IM和出席功能不会有任何的影响。如果Windows XP客户机可以创建并维护一条到服务器的连接,那么其它的IM和出席也能够沿着相同的途径进行通信。如果在SIP客户端与服务器间存在一个NAT设备,那么,反映在SIP消息中的端口和地址可能会与实际的端口和地址有所不同。Windows Messenger拥有的某些机制可以解决这些问题。
音频和视频
在协商进行一个音频-视频会话的时候,音频-视频流会选择使用动态端口。在使用动态端口时,应用程序无需考虑系统中还运行了哪些其它的应用程序以及这些程序都使用哪些端口资源即可正常工作。
用来传输应用程序共享(AS)和白板(WB)数据的TCP连接使用1503端口,您需要启用该端口,以便数据能够通过所有的防火墙。 因为TCP数据连接使用一个特定的端口(1503),如果客户端位于一个不具备UPnP能力的NAT设备之后,该端口必须被映射到该客户端上。以确保能够通过最常见的NAT设备进行通信。这还意味着:该端口一般不能被NAT设备后面的其它客户端所使用;在一个时间中,只有位于相同NAT设备后面的一个客户端能够拥有一个AS或WB会话。
文件传输
外来和外出的TCP连接都使用6891到6900间的端口。这使得每个发送方最多只能建立10条文件传输连接。在通信双方之间的所有防火墙上,这些端口都必须被开放。如果您仅仅开放6891端口,用户每次只能建立起一条文件传输连接。
远程协助
远程协助使用远程桌面协议(Remote Desktop Protocol,RDP);与Microsoft Terminal Services使用同一个协议。RDP建立在TCP连接之上。Windows Messenger使用基于服务器的会话邀请逻辑(与FT类似)建立远程协助会话。所以,它同样会因为NAT产生与FT同样的问题。
远程协助包括了一个附加逻辑,以应对可能遇到的NAT环境。该逻辑会简单地尝试从会话双方两个方向上建立TCP连接。如果只有一个客户端位于NAT设备之后,那么连接仍然可以建立,远程协助会话也依然可以进行。如果两个客户端都位于(不具备UPnP能力)NAT设备的后面,那么连接将不能建立。只有在远程协助中加入了语音会话时,这个附加的SIP邀请逻辑才会被加入。
除了由NAT地址转换产生的问题(只有在通信路径中存在多个NAT设备才会出现问题)之外,远程协助协议需要 使用3389端口建立TCP连接。这意味着,通信双方之间的所有防火墙都必须开放3389端口。
三、总结
IM 和出席功能在大多数防火墙配置中都可以使用。
要想为处于防火墙两侧的通信双方提供AV支持,5004到65535之间的所有UDP端口都必须打开,以允许SIP和媒体流(RTP)数据通过防火墙。这种设置是必需的,因为这些操作使用动态端口。AS 和 WB也使用动态端口进行通信。
Ft可以通过在防火墙上开放6891到6900间的端口得以实现。使用远程协助功能需要开放3389端口。
为了使Windows Messenger的语音和视频通信能够通过一个不支持UPnP的防火墙,您需要对防火墙进行配置,使其允许UDP端口5004 – 65535间的外来流量能够通过防火墙。
对于其它通信目的,您可以相应启用以下端口:
文件传输:tcp 6891(如果想实现10条并发的文件传输连接,您需要开放6891到6900间的所有端口)
应用程序和白板共享:tcp1503
远程协助:3389
缩略术语表
ALG–应用程序层网关
AS–应用程序共享
AV–音频和视频
FT–文件传输
ICF–Internet连接防火墙
ICS–Internet连接共享
IM–即时消息
ISA–Internet Security and Acceleration
ISP–Internet 服务提供商 NAT–网络地址转换
RDP–远程桌面协议
RTC–实时通信
RTP–实时传输协议
SDP–会话描述协议
SIP–会话初始化协议
SSL–安全套接字层
TCP–传输控制协议
UDP–用户数据报协议
UPnP–通用即插即用
WB–白板(共享)