问:语音和视频通讯如何穿越防火墙和NAT?
答: 其实解决防火墙和NAT问题的一个最简单的办法就是避免使用它们,对大多数机构来说,这种方法太冒险,网络安全没有保证,而且要得到足够多的可路由的IP地址或许是困难的,昂贵的。因此大多数希望利用IP进行多媒体通讯的机构将不可避免的面对防火墙或NAT的挑战。事实上,大多数机构都同时使用了防火墙和NAT,因此单单解决其中一个问题还不够。现有的一些解决办法如下:
1.使用PSTN网关
如果不太关心在局域网外是否基于IP通信,那么可以使用网关把局域网上的IP语音和视频转换为公共电路交换网上的PSTN语音和视频。使用这样一个网关就不用关心网络防火墙的穿透问题了,因为没有数据包要通过防火墙。这也解决了NAT问题,所有到局域网内终端的呼叫都是可路由的,因为通过网关进入局域网的呼叫都是可路由的。今天大多数IP电话都是通过一个网关和非IP电话来进行通讯的。网关方法是一个局部解决方案,要求所有参与呼叫者在最后一道NAT和防火墙后要有一个相应的网关。
2.DMZ MCU
一些机构通过把MCU放在所谓的DMZ区域来解决防火墙和NAT穿越问题。DMZ区域通常位于外部Internet和内部网络防火墙之间,想要对外提供他们自己的Internet服务(例如web服务,ftp服务,email服务和域名服务)的机构一般把这些服务放在DMZ区域,这样可以很好地保护他们的私有网络。
放在DMZ区域的MCU被装上两块网卡,这样一块网卡提供访问私有网络的入口,另一块网卡提供访问公网Internet的入口。这个解决方案的一个最大缺点是即使是进行点对点的呼叫也得需要使用MCU,另外如果在呼叫路径上有多个NAT设备,那么在每个NAT设备的位置都需要放置一个MCU。
3.H.323代理
H.323代理能被用来解决NAT问题或者同时解决NAT和防火墙问题,这取决于代理如何被配置。代理其实是一种特殊类型的网关,但并不是把IP协议转换为别的,在代理两边使用的是相同的协议。代理使终端到终端的呼叫过程看起来像两个分离的呼叫:一个是从私有网上的终端到代理,另一个是从代理到公众网上的终端,代理通过对这个呼叫进行中转解决了NAT问题。
H.323代理一般结合标准的网守的功能和RTP/RTCP多媒体流的代理功能。这种解决方案典型应用是在防火墙后放一个H.323代理,代理需要被分配公有IP地址。防火墙被配置允许代理和外部进行多媒体通讯。有时候沿着网络路径在许多位置都应用了NAT设备,这时就需要在每一个使用NAT的地方放置代理。
4.应用层网关
应用层网关(Application layer gateways)是被设计能识别指定IP协议(象H.323和SIP协议)的防火墙,也被叫做ALG Firewall。它不是简单地察看包头信息来决定数据包是否可以通过,而是更深层的分析数据包负载内的数据,也就是应用层的数据。H.323和SIP协议都在负载中放了重要的控制信息,例如语音和视频终端使用哪一个数据端口来接收别的终端的语音和视频数据。通过分析哪一个端口需要打开,防火墙动态地打开那些被应用的端口,而所有别的端口依然安全地保持关闭状态。
如果一个NAT被应用来屏蔽内部IP地址,这时ALG就需要一个代理,一些防火墙生产厂商把代理结合到ALG上越过NAT。
主要的防火墙厂商象Cisco, Checkpoint, Gauntlet都对他们的防火墙产品提供H.323 ALG升级功能,但市场上大多数防火墙还不支持ALG。这种解决方案还有一些缺点:由于要分析数据包负载,这样就加重了防火墙的处理任务,影响网络的运行,成为潜在的网络瓶颈;并且如果这儿有多层防火墙和NAT,则在呼叫路径上的每个防火墙都必须被升级来支持ALG功能;对大多数公司的网络来说防火墙是关键部件,在一些公司增加一个ALG或许是困难的。
5.虚拟专用网(VPN)
VPN技术是当前在IP网络上提供安全通讯的的方法之一,在同一个VPN网内可以解决防火墙穿越问题;不久的未来,确保网络安全和QoS的VPRN技术将是IP网上进行多媒体通讯的最有潜力的解决方案。
在VPN技术中,在UDP和TCP层下的IPSec层被用来提供安全的IP通讯,但由于基于VPN技术的IPSec层使用它自己的连接标识符而不是UDP或TCP端口,而且IPSec上面的层要被加密,这套自己的机制对NAT尤其是NAPT是不可通过的。为了解决NAT穿越问题,最好选择由一个生产商提供的整合防火墙,NAPT和VPN功能的解决方案。
另外,虽然VPN方案是很安全的,但它仅仅允许位于同一个VPN内的设备进行通讯,而无法与位于公众网的终端用户进行通讯。
6.隧道穿透方案
一般企业网都不想升级或者改动他们的防火墙和NAT设备的配置,也不想让内外的交互通讯绕过这些设备,采用允许IP语音和视频穿越防火墙和NAT的隧道穿透方案也许是最合适的,目前提供此类解决方案的有美国的Ridgeway公司。
隧道穿透解决方案由两个组件构成,Server软件和Client软件。Client放在防火墙内的私有网,它同时具有网守功能和代理功能,私有网内的终端注册到Client上,它和防火墙外的Server创建一个信令和控制通道,可以把所有的注册和呼叫控制信令转发到Server,也把音视频数据转发到Server,在转发时它把内部终端发送的和外部发往终端的数据包的地址和端口号替换为自己的。Server放在防火墙外的公众空间,可以位于服务提供商网络或者位于企业网的DMZ区域,Server扮演网守代理的角色,从Client收到的所有注册和呼叫信令都被Server转发到中心网守。
Server和Client之间的通讯主要通过两个固定的端口来传输数据,这两个端口是2776和2777端口,被IANA机构分配给Ridgeway的系统。
当私网内Client启动时:
1.它与Server上的2776端口建立一个固定连接用来传送控制和状态信息;
2.它监听私网内H.323网守注册和请求信息;
当一个终端启动时:
1.终端通过Client/Server之间的连接发送注册信息到中心网守;
2.Server分配给每一个注册的终端一个唯一的端口号(与Server的IP地址对应)。
当一个终端呼叫防火墙外的另一个终端时,所有的数据包都通过Client路由到Server,返回的数据也从Server通过Client路由回到终端。当呼叫被建立后,Client确保所有必需的经过防火墙的音视频通道保持开放,这样音视频数据可以通过这些防火墙上开放的通道进行传输。
使用用这种方法IP地址信息被很好的屏蔽,因为所有的数据包通过Server来路由转发,每个终端好像看来在直接地和Server进行通信,而不是和别的终端,这保证了终端的IP地址在网络外不可得到。而且这种方法在大多数情况下不用对防火墙配置进行任何修改。对于那些防火墙设置限制打开向外的端口的情况,管理员可以创建简单的原则来允许从Client到Server上两个固定的端口2776和2777的向外的连接。
这个方法最大的缺点是所有经过防火墙的通讯都必须经由Server来进行中转,这会引起潜在的瓶颈,这个经由Client和Server的过程会增加少于5ms的延迟。但是这又是必须的,因为Server是防火墙唯一信任的设备。
本文地址:http://com.8s8s.com/it/it32244.htm