泉州建设银行网站,网站开发设计报告书怎么写,wordpress 注册体验,wordpress最新文章的分类名称本文仅讨论FreeSWITCH部署在NAT之后#xff08;里面#xff09;这种场景#xff0c;假设私网地址与公网地址有一个确定的映射关系。这里只涉及mod_sofia#xff08;SIP信令及媒体#xff09;相关配置#xff0c;其他模块不在本文讨论之列。配置mod_sofia默认提供两个prof…本文仅讨论FreeSWITCH部署在NAT之后里面这种场景假设私网地址与公网地址有一个确定的映射关系。这里只涉及mod_sofiaSIP信令及媒体相关配置其他模块不在本文讨论之列。配置mod_sofia默认提供两个profile可以理解成是两套配置最主要的区别是监听端口不一样其他的区别包括是否启用TLS加密使用哪个拨号计划等等。这里以internal profile为例。1、配置预处理变量FreeSWITCH的惯例是把预处理变量定义在vars.xml文件中然后再由其他配置文件去引用。这里我们主要关注公网地址以及SIP监听端口。etc/freeswitch/vars.xmlinclude!-- 注意X-PRE-PROCESS开头的配置都是预处理配置有点像是定义全局变量但是变量的值可以在程序启动时动态获取到 --!-- 这两个变量必须要设置成公网IP有3种方法配置公网IP --!-- 1、配一个固定的公网IP --X-PRE-PROCESS cmdset dataexternal_rtp_ip172.21.221.137/X-PRE-PROCESS cmdset dataexternal_sip_ip172.21.221.137/!-- 2、通过公网上的stun服务动态获取 --X-PRE-PROCESS cmdstun-set dataexternal_rtp_ipstun:stun.freeswitch.org/X-PRE-PROCESS cmdstun-set dataexternal_sip_ipstun:stun.freeswitch.org/!-- 3、通过域名解析动态获取 --X-PRE-PROCESS cmdset dataexternal_rtp_iphost:host.server.com/X-PRE-PROCESS cmdset dataexternal_sip_iphost:host.server.com/!-- 配置两个profile所监听的SIP端口 --!-- Internal SIP Profile --X-PRE-PROCESS cmdset datainternal_auth_callstrue/X-PRE-PROCESS cmdset datainternal_sip_port5060/X-PRE-PROCESS cmdset datainternal_tls_port5061/X-PRE-PROCESS cmdset datainternal_ssl_enablefalse/!-- External SIP Profile --X-PRE-PROCESS cmdset dataexternal_auth_callsfalse/X-PRE-PROCESS cmdset dataexternal_sip_port5080/X-PRE-PROCESS cmdset dataexternal_tls_port5081/X-PRE-PROCESS cmdset dataexternal_ssl_enablefalse/
/include2、配置sip profiles这里才是mod_sofia真正会读取的配置。这里以internal profile为例external同理。etc/freeswitch/sip_profiles/internal.xmlprofile nameinternalsettings!--这里引用vars.xml里面配置的全局变量。注意要以$${var}的形式引用注意local_ip_v4这个全局变量是fs_core自动设置的每分钟更新一次。如果机器有多个IP需要手动指定一个详见官方文档https://developer.signalwire.com/freeswitch/Channel-Variables-Catalog/local_ip_v4_16353556/--!-- 当前这个profile所要监听的SIP端口。 --param namesip-port value$${internal_sip_port}/!-- 接收RTP流的端口要绑定在哪个地址上。只能是IP地址不能是域名 --param namertp-ip value$${local_ip_v4}/!-- 接收SIP请求的端口要绑定在哪个地址上。同上只能是IP地址。 --param namesip-ip value$${local_ip_v4}/!-- 对外通告RTP消息时所用的地址。 --param nameext-rtp-ip value$${external_rtp_ip}/!-- SIP报文中Contact header的地址。 --param nameext-sip-ip value$${external_sip_ip}//settings
/profile3、配置媒体端口范围有些NAT或防火墙只能映射或允许一个范围内的端口这就需要调整FreeSWITCH接收RTP媒体流所用的端口范围。注意FreeSWITCH使用偶数端口接受RTP流使用奇数端口收发RTCP消息。假如需要承载50路通话则至少要映射100个端口etc/freeswitch/autoload_configs/switch.conf.xmlconfiguration nameswitch.conf descriptionCore Configurationsettings!-- RTP port range --param namertp-start-port value40000/param namertp-end-port value40009//settings
/configuration验证人为改一下ext-rtp-ip和ext-sip-ip观察它们的作用此时有一个到达internal profile的呼叫从FreeSWITCH回复的200 OK中可以看到Contact header中填的是ext-sip-ip而SDP部分填的是ext-rtp-ip问题私网端口号与公网端口号不一样怎么办比如私网:5060 公网:8060恐怕只能修改代码了。mod_sofia可以支持监听IP与通告IP不一致但端口不能不一致。即它就只能在SIP报文中通告它自己本地监听的端口。以上就是FreeSWITCH跨NAT部署配置详解的详细内容更多关于FreeSWITCH跨NAT部署的资料请关注其它相关文章