[转]Freeswitch在阿里云服务器语音不通问题小记(FS的NAT穿越穿透)
网上找了一大堆,基本都是说设置ext-rtp-ip和ext-sip-ip为公网地址就可以,但没有效果!
最后,我在 这篇CSDN博主「flybird_168」的原创文章 找到的处理,真谢谢他了!下面对他的文章调整一下内容说明一下:
1、路由器去掉upnp和alg功能。服务器的路由本身没进行UPNP,没打开NAT ALG (阿里云服务器都没有!除非你自己去安装)
2、在FS端开启rport功能,这个配置默认是被注释掉了;(下面都是修改配置文件 internal.xml)
不开启的话,默认是从 Contact 头部字段中取对方地址的,这可能会导致IP和端口是对方在其内网中而不是其外网的,就送不到了。
<param name="NDLB-force-rport" value="true"/>
3、设置rtp自动调整功能 (这个配置默认被注释掉了,而且原来设置的是true)
<param name="disable-rtp-auto-adjust" value="false"/>
4、设置sip和rtp的外网地址(也可以直接设置公网IP)
<param name="ext-rtp-ip" value="autonat:公网IP"/>
<param name="ext-sip-ip" value="autonat: 公网IP "/>
5、设置acl参数,以此来判断内外网呼叫
<param name="local-network-acl" value="lan"/>
6、acl中配置lan(这里修改配置文件 acl.conf.xml)
<list name="lan"default="deny"/>
<node type="allow"cidr="172.16.19.0/24" />
</list>
7、在开放FS的sip端口和rtp端口(安全组和防火墙都需要设置开放相应的端口)
实际上只开放 Profile 监听端口就行了,如5060,5080; rtp 端口会自动nat
8、针对没有rport功能的终端,在 reg.xml (分机配置文件)中加入
<variable name="sip-force-contact" value="NDLB-connectile-dysfunction"/>
9、fs启动项:freeswitch -nonat
--- auth:lzpong