<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
本文僅討論FreeSWITCH部署在NAT之後(裡面)這種場景,假設私網地址與公網地址有一個確定的對映關係。
這裡只涉及mod_sofia(SIP信令及媒體)相關設定,其他模組不在本文討論之列。
mod_sofia預設提供兩個profile,可以理解成是兩套設定,最主要的區別是監聽埠不一樣,其他的區別包括是否啟用TLS加密,使用哪個撥號計劃等等。這裡以internal profile為例。
FreeSWITCH的慣例是把預處理變數定義在vars.xml檔案中,然後再由其他組態檔去參照。這裡我們主要關注公網地址以及SIP監聽埠。
etc/freeswitch/vars.xml
<include> <!-- 注意,X-PRE-PROCESS開頭的設定都是預處理設定,有點像是定義全域性變數,但是變數的值可以在程式啟動時動態獲取到 --> <!-- 這兩個變數必須要設定成公網IP,有3種方法設定公網IP: --> <!-- 1、配一個固定的公網IP --> <X-PRE-PROCESS cmd="set" data="external_rtp_ip=172.21.221.137"/> <X-PRE-PROCESS cmd="set" data="external_sip_ip=172.21.221.137"/> <!-- 2、通過公網上的stun服務動態獲取 --> <X-PRE-PROCESS cmd="stun-set" data="external_rtp_ip=stun:stun.freeswitch.org"/> <X-PRE-PROCESS cmd="stun-set" data="external_sip_ip=stun:stun.freeswitch.org"/> <!-- 3、通過域名解析動態獲取 --> <X-PRE-PROCESS cmd="set" data="external_rtp_ip=host:host.server.com"/> <X-PRE-PROCESS cmd="set" data="external_sip_ip=host:host.server.com"/> <!-- 設定兩個profile所監聽的SIP埠: --> <!-- Internal SIP Profile --> <X-PRE-PROCESS cmd="set" data="internal_auth_calls=true"/> <X-PRE-PROCESS cmd="set" data="internal_sip_port=5060"/> <X-PRE-PROCESS cmd="set" data="internal_tls_port=5061"/> <X-PRE-PROCESS cmd="set" data="internal_ssl_enable=false"/> <!-- External SIP Profile --> <X-PRE-PROCESS cmd="set" data="external_auth_calls=false"/> <X-PRE-PROCESS cmd="set" data="external_sip_port=5080"/> <X-PRE-PROCESS cmd="set" data="external_tls_port=5081"/> <X-PRE-PROCESS cmd="set" data="external_ssl_enable=false"/> </include>
這裡才是mod_sofia真正會讀取的設定。這裡以internal profile為例,external同理。
etc/freeswitch/sip_profiles/internal.xml
<profile name="internal"> <settings> <!-- 這裡參照vars.xml裡面設定的全域性變數。注意,要以$${var}的形式參照! 注意,local_ip_v4這個全域性變數是fs_core自動設定的,每分鐘更新一次。如果機器有多個IP,需要手動指定一個,詳見官方檔案: https://developer.signalwire.com/freeswitch/Channel-Variables-Catalog/local_ip_v4_16353556/ --> <!-- 當前這個profile所要監聽的SIP埠。 --> <param name="sip-port" value="$${internal_sip_port}"/> <!-- 接收RTP流的埠要繫結在哪個地址上。只能是IP地址,不能是域名! --> <param name="rtp-ip" value="$${local_ip_v4}"/> <!-- 接收SIP請求的埠要繫結在哪個地址上。同上,只能是IP地址。 --> <param name="sip-ip" value="$${local_ip_v4}"/> <!-- 對外通告RTP訊息時所用的地址。 --> <param name="ext-rtp-ip" value="$${external_rtp_ip}"/> <!-- SIP報文中Contact header的地址。 --> <param name="ext-sip-ip" value="$${external_sip_ip}"/> </settings> </profile>
有些NAT或防火牆只能對映或允許一個範圍內的埠,這就需要調整FreeSWITCH接收RTP媒體流所用的埠範圍。
注意:FreeSWITCH使用偶數埠接受RTP流,使用奇數埠收發RTCP訊息。假如需要承載50路通話,則至少要對映100個埠!
etc/freeswitch/autoload_configs/switch.conf.xml
<configuration name="switch.conf" description="Core Configuration"> <settings> <!-- RTP port range --> <param name="rtp-start-port" value="40000"/> <param name="rtp-end-port" value="40009"/> </settings> </configuration>
人為改一下ext-rtp-ip
和ext-sip-ip
,觀察它們的作用:
此時有一個到達internal profile的呼叫,從FreeSWITCH回覆的200 OK中可以看到,Contact header中填的是ext-sip-ip
,而SDP部分填的是ext-rtp-ip
:
以上就是FreeSWITCH跨NAT部署設定詳解的詳細內容,更多關於FreeSWITCH跨NAT部署的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45