最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

FreeSWITCH跨NAT部署配置詳解

 更新時間:2023年02月15日 14:50:45   作者:zhanwang  
這篇文章主要為大家介紹了FreeSWITCH跨NAT部署配置詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪

引言

本文僅討論FreeSWITCH部署在NAT之后(里面)這種場景,假設(shè)私網(wǎng)地址與公網(wǎng)地址有一個確定的映射關(guān)系。

這里只涉及mod_sofia(SIP信令及媒體)相關(guān)配置,其他模塊不在本文討論之列。

配置

mod_sofia默認(rèn)提供兩個profile,可以理解成是兩套配置,最主要的區(qū)別是監(jiān)聽端口不一樣,其他的區(qū)別包括是否啟用TLS加密,使用哪個撥號計劃等等。這里以internal profile為例。

1、配置預(yù)處理變量

FreeSWITCH的慣例是把預(yù)處理變量定義在vars.xml文件中,然后再由其他配置文件去引用。這里我們主要關(guān)注公網(wǎng)地址以及SIP監(jiān)聽端口。

etc/freeswitch/vars.xml

<include>
  <!-- 注意,X-PRE-PROCESS開頭的配置都是預(yù)處理配置,有點像是定義全局變量,但是變量的值可以在程序啟動時動態(tài)獲取到 -->
  <!-- 這兩個變量必須要設(shè)置成公網(wǎng)IP,有3種方法配置公網(wǎng)IP: -->
  <!-- 1、配一個固定的公網(wǎng)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、通過公網(wǎng)上的stun服務(wù)動態(tài)獲取 -->
  <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、通過域名解析動態(tài)獲取 -->
  <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所監(jiān)聽的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>

2、配置sip profiles

這里才是mod_sofia真正會讀取的配置。這里以internal profile為例,external同理。

etc/freeswitch/sip_profiles/internal.xml

<profile name="internal">
  <settings>
    <!--
      這里引用vars.xml里面配置的全局變量。注意,要以$${var}的形式引用!
      注意,local_ip_v4這個全局變量是fs_core自動設(shè)置的,每分鐘更新一次。如果機器有多個IP,需要手動指定一個,詳見官方文檔:
      https://developer.signalwire.com/freeswitch/Channel-Variables-Catalog/local_ip_v4_16353556/
    -->
    <!-- 當(dāng)前這個profile所要監(jiān)聽的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>

3、配置媒體端口范圍

有些NAT或防火墻只能映射或允許一個范圍內(nèi)的端口,這就需要調(diào)整FreeSWITCH接收RTP媒體流所用的端口范圍。

注意:FreeSWITCH使用偶數(shù)端口接受RTP流,使用奇數(shù)端口收發(fā)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-ipext-sip-ip,觀察它們的作用:

此時有一個到達internal profile的呼叫,從FreeSWITCH回復(fù)的200 OK中可以看到,Contact header中填的是ext-sip-ip,而SDP部分填的是ext-rtp-ip

問題

  • 私網(wǎng)端口號與公網(wǎng)端口號不一樣怎么辦?比如:私網(wǎng):5060 <==> 公網(wǎng):8060
  • 恐怕只能修改代碼了。mod_sofia可以支持監(jiān)聽IP與通告IP不一致,但端口不能不一致。即它就只能在SIP報文中通告它自己本地監(jiān)聽的端口。

以上就是FreeSWITCH跨NAT部署配置詳解的詳細(xì)內(nèi)容,更多關(guān)于FreeSWITCH跨NAT部署的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Java注解處理器學(xué)習(xí)之編譯時處理的注解詳析

    Java注解處理器學(xué)習(xí)之編譯時處理的注解詳析

    編譯時注解相信對每一個java開發(fā)者來說都不陌生,下面這篇文章主要給大家介紹了關(guān)于Java注解處理器學(xué)習(xí)之編譯時處理的注解的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面來一起看看吧
    2018-05-05
  • SpringBoot如何優(yōu)雅的處理校驗參數(shù)的方法

    SpringBoot如何優(yōu)雅的處理校驗參數(shù)的方法

    這篇文章主要介紹了SpringBoot如何優(yōu)雅的處理校驗參數(shù)的方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-12-12
  • 解決springboot+activemq啟動報注解錯誤的問題

    解決springboot+activemq啟動報注解錯誤的問題

    這篇文章主要介紹了解決springboot+activemq啟動報注解錯誤的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Maven構(gòu)建Hadoop項目的實踐步驟

    Maven構(gòu)建Hadoop項目的實踐步驟

    本文主要介紹了Maven構(gòu)建Hadoop項目的實踐步驟,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06
  • 手把手教你搭建SpringMVC框架——最小化配置

    手把手教你搭建SpringMVC框架——最小化配置

    這篇文章主要介紹了手把手教你搭建SpringMVC框架——最小化配置,具有一定的參考價值,感興趣的小伙伴們可以參考一下。
    2017-02-02
  • 平衡二叉樹的左右旋以及雙旋轉(zhuǎn)的圖文詳解

    平衡二叉樹的左右旋以及雙旋轉(zhuǎn)的圖文詳解

    今天小編就為大家分享一篇關(guān)于平衡二叉樹的左右旋以及雙旋轉(zhuǎn)的圖文詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧
    2019-01-01
  • JAVA實現(xiàn)感知器算法

    JAVA實現(xiàn)感知器算法

    這篇文章主要為大家詳細(xì)介紹了JAVA實現(xiàn)感知器算法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-12-12
  • MyBatis?Generator快速生成實體類和映射文件的方法

    MyBatis?Generator快速生成實體類和映射文件的方法

    這篇文章主要介紹了MyBatis?Generator快速生成實體類和映射文件的方法,通過示例代碼介紹了MyBatis?Generator?的使用,本文結(jié)合示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-10-10
  • Java中如何將?int[]?數(shù)組轉(zhuǎn)換為?ArrayList(list)

    Java中如何將?int[]?數(shù)組轉(zhuǎn)換為?ArrayList(list)

    這篇文章主要介紹了Java中將?int[]?數(shù)組?轉(zhuǎn)換為?List(ArrayList),本文通過示例代碼給大家講解的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-12-12
  • Spring Boot中整合Spring Security并自定義驗證代碼實例

    Spring Boot中整合Spring Security并自定義驗證代碼實例

    本篇文章主要介紹了Spring Boot中整合Spring Security并自定義驗證代碼實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-04-04

最新評論

小金县| 诸暨市| 竹山县| 紫阳县| 蕉岭县| 如东县| 和田县| 贵溪市| 宝坻区| 玉林市| 台山市| 汾阳市| 双流县| 望城县| 南投市| 都江堰市| 黄冈市| 定西市| 社旗县| 吉隆县| 万全县| 明溪县| 峨山| 特克斯县| 日照市| 浑源县| 镇安县| 石渠县| 团风县| 纳雍县| 伊金霍洛旗| 斗六市| 乌拉特中旗| 江永县| 望谟县| 尉犁县| 滨海县| 宜城市| 桐城市| 长治市| 恭城|