其实解决防火墙和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功能的解决方案。