您当前的位置是:  首页 > 新闻 > 国内 >
 首页 > 新闻 > 国内 >

融合通信之“NAT技术原理”(下)

2017-03-09 09:27:53   作者:   来源:CTI论坛   评论:0  点击:


  融合通信产品是基于SIP协议实现的音视频通信系统,包括服务器、网关和终端产品。下面是融合通信产品在不同网络环境中遇到的NAT问题及解决办法:
  1.单一网络环境
  如上图,手机APP和IP话机通过SIP注册消息,向服务器提供自身的IP地址,服务器将注册地址保存起来,两个终端互相通话没有什么问题。
  2.  服务器处于公网环境
\
  NAT设备会将IP数据包头的地址和端口,换成外网的地址和端口,但是服务器正常情况下采用的SIP注册消息中携带的地址作为终端地址,此时两个终端连注册都无法成功,服务器在SIP注册消息中获取的是局域网IP地址,发出的200 OK无法抵达终端设备。
  这里涉及三个角色,有各自的办法可解决NAT穿透问题:
  1)终端设备侧
  采用STUN服务,STUN的原理是:在公网上部署一个STUN服务器,位于NAT后面的客户端设备向它发送一系列的UDP包先在NAT设备上“打洞”,STUN服务器取到UDP包的来源地址后,回送相关的消息告诉该客户端它被映射的外网地址。使用STUN后,SIP消息的contact头域中就可以直接填入外网地址。
\
  注意,STUN技术在对称型NAT设备中是无能为力的,因为学习到的外网IP地址会失效,此时需要和TURN中继服务配合使用。
  2)NAT设备侧
  应用层网关(ALG)是解决NAT对应用层协议无感知的一个最常用方法,已经被NAT设备厂商广泛采用,通过感知应用层协议,对报文深层的内容进行检查,当发现任何形式表达的IP地址和端口时,将会把这些信息同步转换,并且为这个新连接创建一个附加的转换表项。
\
  注意,NAT设备的ALG无法解决私有协议或加密协议的穿越问题。
  3)服务器侧
  融合通信服务器通过开启NAT检测功能,内含nat.auto是一个ACL,包含了RFC1918规定的私网地址,并去掉了本地网络的地址。当SIP终端注册时,通过比较contact地址是否包含在此ACL中来判定该终端是否处于NAT背后,如果是那么它就把contact地址自动替换为SIP包的来源地址,信令就可以正常抵达。
\
  3. 服务器处于内网NAT环境
  当服务器处于内网环境时,服务器的解决办法有:STUN、直接配置外网地址,同时服务器还支持Upnp协议,需要NAT设备支持该协议并开启,该协议允许应用程序向NAT设备申请并管理内外网地址、端口映射。
\
  之所以要配置端口转发,是因为NAT设备的特性决定了只能内网主机接触过的外网主机才能向内发数据,而融合通信系统首先发起注册的是终端设备。
  4.服务器和客户顿都处于NAT环境
  测试环境中很多都是这个网络环境,但是实际部署的环境通常却比较简单。
\
  这样的结构,将解决NAT穿透的问题主要交给了服务器侧,因为终端设备的种类多,无法让所有终端都自行解决穿透问题。

专题