您当前的位置是:  首页 > 资讯 > 国内 >
 首页 > 资讯 > 国内 >

鼎信通达:VoIP应用中NAT知识知多少?

2019-12-18 10:57:47   作者:   来源:CTI论坛   评论:0  点击:


  VoIP(IP语音)技术包含SIP,H.323等一系列的协议,基于IP网络通信,功能丰富,业务灵活,完全支持语音业务,而且能够提供视频以及传真等多种服务,应用也越来来越广泛,然而当前应用组网大部分都部署在NAT防火墙内部,对VoIP业务的应用有一定影响,使用中也会遇到各种问题,下面和大家分享一些常用的NAT穿越技术
  一。NAT环境常见问题
  NAT环境常见问题
  • SIP账户注册不上,注册报文收不到响应消息;
  • 呼叫通话中出现语音单通,内网设备收不到公网媒体流;
  • 收不到ACK信令,呼叫接通持续30秒自动挂断;
  • 收不到BYE消息,通话挂不断;
  二。原因分析
  SIP呼叫建立和媒体通信的建立是根据SIP消息右侧和SDP消息体里携带的IP地址和端口来协商的,如果SIP服务器在公网,设备部署在NAT网络下,NAT设备替换发出的SIP消息里携带的是内网IP地址和端口,从而导致外网服务器发生故障,收发和媒体报文送不到NAT设备,造成信令,媒体丢失。针对这种组网应用,通常采用以下三种NAT穿透技术解决:
  (1)动态NAT;(2)静态NAT;(3)STUN穿透
  设备启用NAT穿透功能后,可以实现“网络打洞”,并检测到路由器外网的IP地址,从而发出的SIP消息头部以及SDP消息体携带的IP地址和端口都会替换为获取到的公网IP和端口。
  三。NAT突破原理
  1.动态NAT穿透原理
  (1)以鼎信通达DAG语音网关为例,设备上开启动态NAT功能后,通过头里会携带的端口发出获取请求消息,如下
  发送REGISTER消息,在请求信息的Via头域中包含了没有值的rport参数,如下所示:
  注册Sip:124.40。120.188:5060 SIP / 2.0
  通过:SIP / 2.0 / UDP 124.42。4.203:15500;分支= z9hG4bK-d8754z -1049ed261d2e643d-1 --- d8754z-;运动
  最高-前锋:70
  联系人:; expires =
  至:“ 19988888888”
  来自:“ 19988888888” ;标签= 203ba359
  呼叫-ID:Yzc4N2IwMzY5OWU4MTdkMzY0NWY4OWU3NjMzNmJiM2U。
  CSeq:1个寄存器
  允许:邀请,确认,取消,选项,再见,引用,通知,消息,订阅,信息
  用户-代理:eyeBeam发行1105a邮票56793
  内容长度:
  (2)公网服务器收到请求消息后,将进行分析检测源SIP消息的NAT地址和端口,并会在响应SIP报文里使用,并通过端口传送给客户端,如示例中的获取到的NAT的公网地址(124.42.4.203)和端口(15500):
  SIP / 2.0 200确定
  通过:SIP / 2.0 / UDP 124.42。4.203:15500;分支= z9hG4bK-d8754z -1049ed261d2e643d-1 --- d8754z-; port = 15500;接收= 124.42。4.203
  来自:“ 19988888888” ;标签= 203ba359
  至:“ 19988888888” ;标签= 0005-058-7d6dc90516ae2e21
  通话-ID:Yzc4N2IwMzY5OWU4MTdkMzY0NWY4OWU3NjMzNmJiM2U。
  CSeq:4个寄存器
  允许:邀请,确认,选项,再见,取消,注册,信息,更新,包,引用,订阅,通知,消息
  联系人:
  内容-长度:
  (3)设备在收到响应200OK信息后,从移动和接收到的分段里获取NAT公网地址和端口,设备之后发SIP消息时会更改为路由器公网的IP和端口。如以下,联系携带变换成124.42.4.203:15500,例如新发的REGISTER信息转化为:
  注册Sip:124.40。120.188:5060 SIP / 2.0
  通过:SIP / 2.0 / UDP 124.42。4.203:15500;分支= z9hG4bK-d8754z -1049ed261d2e643d-1 --- d8754z-;运动
  最高-前锋:70
  联系人:;到期时间=
  至:“ 19988888888”
  来自:“ 19988888888” ;标签= 203ba359
  通话-ID:Yzc4N2IwMzY5OWU4MTdkMzY0NWY4OWU3NjMzNmJiM2U。
  CSeq:2个寄存器
  允许:邀请,确认,取消,选项,再见,引用,通知,消息,订阅,信息
  用户-代理:eyeBeam发行1105a邮票56793
  内容-长度:
  这样IPPBX(或SIP代理)就会把SIP报文发往NAT公网地址和端口,实现NAT穿透。
  2. STUN穿透原理
  UDP在NAT上的简单遍历,即NAT的UDP的简单穿越,是服务器-服务器的一种网络协议,由RFC 3489定义。该协议定义了一些消息格式,大体上分为请求/响应。帮助位于NAT后的客户端获取自己的公网地址以及NAT为该客户端的本地端口所绑定的对外端口。
  利用STUN技术实现NAT扩展,首先需要构建一个STUN服务器(也可以找免费的STUN服务器),然后在设备上配置STUNserver地址即可。

  STUN实现突破流程:
  (1)开启STUN后,设备作为客户端,会自动使用SIP端口和不同的RTP端口往STUN服务器发STUN探测消息;
  (2)服务器收到后会在响应消息里携带设备所在网络的NAT地址和端口;
  (3)路由器会记录保持对应的NAT地址表
  (4)设备收到STUN服务器响应消息后自动记录NAT公网IP和端口;
  (5)设备发起的SIP报文里contactheader和SDP分段会自动携带公网地址;
  (6)设备会定时刷新STUN报文,用于NAT洞保持打开状态。
  开启STUN报文注册消息如下:
 
  3.静态NAT
  静态NAT在实际应用中使用比较少,因为使用静态NAT实现穿透时,路由器的公网IP必须是一个固定不变的地址,如果是PPPOE拨号上网的网络,则不适合启用这种方式。
  启用静态NAT,必须手动配置好公网IP,并且需要在路由器里添加端口映射,将设备的SIP端口和RTP端口映射到公网。设备发出去的SIP消息联系头部和SDP信息里携带配置的静态公网IP地址,从而实现NAT穿透。
【免责声明】本文仅代表作者本人观点,与CTI论坛无关。CTI论坛对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。

专题

CTI论坛会员企业