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

Asterisk课堂-SIP和NAT

2016-12-22 14:50:29   作者:james.zhu   来源:asterisk   评论:0  点击:


\
  Asterisk中如果使用了SIP协议进行通信,用户终端部署在外网。这样的话,不可避免会遇到语音单通的问题或者注册状态不稳定的问题。这些问题就是可能就是NAT导致。因为SIP和NAT的问题是一个非常复杂的问题,不仅仅涉及了Asterisk服务器本身,也涉及了企业网络的其他相关设备,例如防火墙和路由器,对端网络设备,NAT类型等等问题。这里,因为环境和时间限制,我们不做过多的非常深入的分析。
  视频中介绍了NAT问题,解决部署方式和RTP点对点通信设置和端口存活设置:
  因为,很多用户仍然对NAT问题没有基本的认知和服务器端设置的基础,所以我们这里仅介绍几个内容,它们包括NAT概念,如何通过其他方式来解决NAT问题,点对点媒体流通信,保持端口状态存活。下面,我们将逐一介绍这几个方面的主要内容:
  什么是NAT问题。在互联网中,NAT简单来说,NAT就是外网一个终端或设备和内网一个设备通信时,路由器不能正确转发到内网相应设备地址。更多概念或者原理大家可以参考网上的学习资料了解NAT问题的细节。在Asterisk 环境中,一个分机通过外网注册到Asterisk中,但是这个分机不能和内网另外的分机进行呼叫通信。具体表现为分机可以振铃,但是没有语音。很多情况下,就是路由器不能把语音包转发到正确的终端地址上。很多用户也把Asterisk直接部署在公网,这种方式是一种简单粗暴的方式可能解决了简单NAT环境的配置问题,但是这样会带来非常多的安全问题和其他网络部署的问题。这里的实例中,简单的设置方法就是使用NAT=yes 来解决这个问题。当然,在Asterisk设置exteral IP 地址,开启RTP端口,开启路由器RTP端口,SIP端口也可以仅仅一部分NAT问题。这些需要用户进一步测试。图例中的分机 注册到了公网的Asterisk中,但是呼叫返回时,因为Asterisk保存的是分机的内网地址,asterisk呼叫到路由器时,路由器可能不能映射这个内网地址,这样可能会导致单通的问题。如果设置了NAT以后,Asterisk 注册时保存了路由器的公网地址,呼叫则会映射到路由器,路由器再匹配相应的内网地址。
\

\
  解决NAT问题的办法很多,大部分的解决办法就是使用其他第三方的转发服务器来解决NAT问题。这里涉及了NAT类型的问题,部署成本的问题,管理的问题的相关因素。有的用户为了解决NAT问题,用户可能部署了STUN 服务器来帮助解决NAT问题,但是因为使用的第三方的服务器来解析地址,这样可能导致服务器状态不可控的问题。另外一种办法就是直接部署VPN来解决NAT问题,外网终端设备和内网设备在同一网段,这样基本上不会存在NAT的问题。但是,这样会导致用户VPN滥用的问题,同时也增加了用户的管理成本和网络的复杂度,VPN本身对SIP检测不是太友好。目前,最好的办法就是使用SBC来解决NAT问题。因为SBC 不单解决了NAT问题,同时对互联网攻击,呼叫路由,IMS等等方面也承担了很多工作,同时增加了语音编码支持,SIP-PSTN逃生功能。所以,SBC简单来说就是一个SIP防火墙,专门针对SIP通信来设计的设备类型。但是,SBC相对部署成本也比较高。
\
\
\
\

 
  关于SBC 详细介绍,用户可以观看视频:
  Direct-Media 或者点对点通信。在NAT章节中,很多用户也使用了direct media 或者点对点直接通信的方式。这种方式实际上使用的服务非常有限,如果设置了点对点通信,这样的话,Asterisk 服务器可以极大减轻服务器的压力。但是这种通信方式在实际环境中没有任何实际意义。如果设置了direct media的话,Asterisk 服务器就不会录音,CDR 完全可能失去作用,其他的呼叫业务流程等等不能工作。有时,用户设置了direct media 以后,如果需要点对点通信的话,用户同时要注意检查路由器设置和Asterisk中的NAT配置。路由器可能干扰了点对点通信配置,导致direct media 设置不成功。
\
\
\
 
  设置端口存活状态。因为防火墙的或路由器的检测设置的问题,大部分情况下,网络的很多端口不会是一直开放的状态,如果检查到有一些端口没有发送任何数据包的情况下,这些端口可能被关闭。为了让Asterisk的SIP消息不中断状态检测,我们需要让Asterisk通知其他相关服务器或终端,本地服务器是存活状态,或者SIP终端也要让Asterisk知道终端始终是活动的。所以在asterisk中要设置一个qualify的状态,保证双方确认正常的运行状态。当然,这里也产生了一个问题,因为系统消息不断发送,系统的负载也会相应增加。
\
  通过以上内容,我们介绍了NAT的概念,NAT的几种解决方式和各自特点,另外还介绍了direct media的问题和排查方式,最后,我们给大家介绍了保持端口存活动方式。这些问题都和我们所讨论的SIP和NAT问题相关,所以大家要根据具体的环境和业务类型来做进一步的分析,同时要考虑部署的复杂度,部署成本,维护难度等等问题。

相关阅读:

专题