freeswitch配置SBC實(shí)例


概述

freeswitch 是一款好用的開(kāi)源軟交換平臺(tái)。

隨著voip客戶的發(fā)展和運(yùn)營(yíng)商網(wǎng)絡(luò)的升級(jí)換代梳凛,SBC在對(duì)接測(cè)試中的應(yīng)用場(chǎng)景越來(lái)越多轻绞。

freeswitch通過(guò)簡(jiǎn)單的安裝配置即可滿足大部分SBC的功能需求。

我們需要有一個(gè)穩(wěn)定版本的fs-sbc的安裝過(guò)程和配置指南。

在這里記錄一下新安裝的fs作為sbc的基本配置郭卫。

環(huán)境

centos:CentOS? release 7.0 (Final)或以上版本

freeswitch:v1.10.7

GCC:4.8.5

fs1.10.7安裝

freeswitch-1.10.7基礎(chǔ)平臺(tái)的編譯安裝見(jiàn)文檔“freeswitch1.10.7 on CENTOS7編譯安裝“。

配置方案

FS-SBC的初始配置方案背稼。

刪除多余配置

conf/chatplan/default.xml

conf/dialplan/*

conf/directory/*

conf/ivr_menus/*

conf/jingle_profiles/*

conf/mrcp_profiles/*

conf/sip_profile, external-ipv6 external-ipv6.xml internal-ipv6.xml internal.xml

conf/skinny_profiles/*

conf配置

vars.xml

<X-PRE-PROCESS cmd="set" data="default_password=dq.1.2.3.4.warn"/>

<X-PRE-PROCESS cmd="set" data="global_codec_prefs=PCMA,PCMU"/>

<X-PRE-PROCESS cmd="set" data="outbound_codec_prefs=PCMA,PCMU"/>

<X-PRE-PROCESS cmd="set" data="console_loglevel=debug"/>

autoload_configs/acl.conf.xml

<list name="list_out" default="deny">

? <node type="allow" cidr="1.2.3.4/32"/>

</list>

<list name="list_in" default="deny">

? <node type="allow" cidr="1.2.3.4/32"/>

</list>

autoload_configs/log.conf.xml

<param name="rollover" value="104857600"/>

<!-- <param name="maximum-rotate" value="32"/> -->

autoload_configs/modules.conf.xml

<!-- <load module="mod_verto"/> -->

<!-- <load module="mod_conference"/> -->

<load module="mod_translate"/>

autoload_configs/sofia.conf.xml

autoload_configs/switch.conf.xml

<param name="min-idle-cpu" value="20"/>

<param name="max-sessions" value="60000"/>

<param name="sessions-per-second" value="1000"/>

<param name="loglevel" value="debug"/>

<param name="rtp-start-port" value="20000"/>

<param name="rtp-end-port" value="60000"/>

autoload_configs/translate.conf.xml

<profile name="GB-CALLER-IN">

? ? <rule regex="^(12345678)$" replace="$1"/>

</profile>

<profile name="GB-CALLER-OUT">

? ? <rule regex="^\+86([2-9]\d+)$" replace="0$1"/>

? ? <rule regex="^\+86(10\d+)$" replace="0$1"/>

? ? <rule regex="^\+86(1\d+)$" replace="$1"/>

</profile>

<profile name="GB-DEST-IN">

? ? <rule regex="^(1\d+)$" replace="+86$1"/>

? ? <rule regex="^0(\d+)$" replace="+86$1"/>

</profile>

<profile name="GB-DEST-OUT">

? ? <rule regex="^\+86010(12345678)$" replace="$1"/>

</profile>

dialplan/sbc-dp.xml

<include>

<X-PRE-PROCESS cmd="set" data="callout_answer_timeout=60"/>

<X-PRE-PROCESS cmd="set" data="sip_contact_user=SBC001"/>

<context name="out2in">

<extension name="sbc-out2in" continue="true">

<condition field="${acl(${network_addr} list_out)}" expression="true"/>

<condition field="destination_number" expression="^(\d+)$">

<action application="set" data="effective_caller_id_name=_undef_" />

<action application="set" data="effective_caller_id_number=${translate(${caller_id_number} GB-CALLER-IN)}" />

<action application="set" data="destination_number=${translate(${destination_number} GB-DEST-IN)}" />

<action application="set" data="inherit_codec=true"/>

<action application="set" data="sip_copy_custom_headers=false"/>

<action application="set" data="ringback=${cn-ring}"/>

<action application="export" data="nolocal:sip_h_Allow=INVITE,ACK,BYE,CANCEL,REGISTER,INFO,PRACK,SUBSCRIBE,NOTIFY,UPDATE,MESSAGE,REFER"/>

<action application="unset" data="X-FS-Support"/>

<action application="bridge" data="{${as_record_param},sip_h_CSeq=1 INVITE,

sip_contact_user=${effective_caller_id_number},sip_invite_contact_params=user=phone,sip_cid_type=none,

sip_invite_to_params=user=phone,sip_invite_from_params=transport=udp;user=phone,sip_invite_from_uri=${effective_caller_id_number}@1.2.3.4:5066,

sip_invite_params=user=phone,sip_invite_call_id=${sip_call_id}

}sofia/external5066/sip:${destination_number}@1.2.3.4:5060"/>

</condition>

</extension>

</context>

<context name="in2out">

<extension name="sbc-in2out" continue="true">

<condition field="${acl(${network_addr} list_in)}" expression="true"/>

<condition field="destination_number" expression="^\+(\d+)$">

<action application="set" data="effective_caller_id_name=${translate(${caller_id_name} GB-CALLER-OUT)}" />

<action application="set" data="effective_caller_id_number=${translate(${caller_id_number} GB-CALLER-OUT)}" />

<action application="set" data="destination_number=${translate(${destination_number} GB-DEST-OUT)}" />

<action application="set" data="inherit_codec=true"/>

<action application="set" data="sip_copy_custom_headers=false"/>

<action application="bridge" data="{${as_record_param},

sip_invite_params=user=phone,sip_invite_call_id=${sip_call_id}

}sofia/external3060/sip:${destination_number}@1.2.3.4:5080"/>

</condition>

</extension>

</context>

</include>

sip_profiles/external3060.xml

<profile name="external3060">

<param name="user-agent-string" value="sbc001"/>

<param name="username" value="sbc001"/>

<param name="pass-callee-id" value="false"/>

<param name="session-timeout" value="10800"/>

<param name="sip-port" value="3060"/>

<param name="context" value="out2in"/>

<param name="enable-100rel" value="true"/>

<param name="rtp-ip" value="$${local_ip_v4}"/>

<param name="sip-ip" value="$${local_ip_v4}"/>

<param name="ext-rtp-ip" value="$${external_rtp_ip}"/>

<param name="ext-sip-ip" value="$${external_sip_ip}"/>

sip_profiles/external5066.xml

<profile name="external5066">

<param name="user-agent-string" value="sbc001"/>

<param name="username" value="sbc001"/>

<param name="pass-callee-id" value="false"/>

<param name="session-timeout" value="10800"/>

<param name="sip-port" value="5066"/>

<param name="context" value="in2out"/>

<param name="enable-100rel" value="true"/>

<param name="rtp-ip" value="$${local_ip_v4}"/>

<param name="sip-ip" value="$${local_ip_v4}"/>

<param name="ext-rtp-ip" value="$${external_rtp_ip}"/>

<param name="ext-sip-ip" value="$${external_sip_ip}"/>

bin腳本

bin目錄下需要一些簡(jiǎn)單的維護(hù)腳本贰军。

clear_log.sh

clear_wav.sh

monitorfs.sh

防火墻

防火墻配置結(jié)果如下。

ports: 22/tcp 20000-60000/udp

rule family="ipv4" source address="1.2.3.4/32" port port="3060" protocol="udp" accept

rule family="ipv4" source address="1.2.3.4/32" port port="5066" protocol="udp" accept

系統(tǒng)配置

系統(tǒng)資源限制

vi /etc/security/limits.conf

* soft core unlimited

* hard core unlimited

* soft data unlimited

* hard data unlimited

* soft fsize unlimited

* hard fsize unlimited

* soft sigpending unlimited

* hard sigpending unlimited

* soft nofile 65536

* hard nofile 65536

* soft msgqueue unlimited

* hard msgqueue unlimited

* soft nproc 65536

* hard nproc 65536

* soft locks unlimited

* hard locks unlimited

* soft memlock unlimited

* hard memlock unlimited

修改賬戶啟動(dòng)執(zhí)行腳本蟹肘。

vi ./bash_profile

ulimit -c unlimited

ulimit -d unlimited

ulimit -f unlimited

ulimit -i unlimited

ulimit -n 65536

ulimit -q unlimited

ulimit -u 65536

ulimit -x unlimited

ulimit -l unlimited

系統(tǒng)端口范圍

查看linux系統(tǒng)端口范圍

sysctl -a | grep ipv4.ip_local_port_range

修改sysctl.conf

vi /etc/sysctl.conf

net.ipv4.ip_local_port_range = 20000? ? 60999

使sysctl配置立即生效:

sysctl -p

非本機(jī)IP綁定

vi /etc/sysctl.conf

net.ipv4.ip_nonlocal_bind=1

定時(shí)任務(wù)

sudo crontab -e

00 4 * * * sh /usr/local/freeswitch/bin/clear_log.sh 15

30 4 * * * /usr/sbin/ntpdate cn.pool.ntp.org; /sbin/hwclock -w

0 5 * * * /usr/local/freeswitch/bin/fs_cli -x "fsctl sync_clock_when_idle"

總結(jié)

freeswitch的基礎(chǔ)功能基本可以滿足SBC的功能需求词疼,通過(guò)簡(jiǎn)單配置即可使用。

sbc作為公私網(wǎng)的信令和媒體通道帘腹,安全性一定是最重要的考慮項(xiàng)贰盗。


空空如常

求真得真

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市阳欲,隨后出現(xiàn)的幾起案子舵盈,更是在濱河造成了極大的恐慌,老刑警劉巖球化,帶你破解...
    沈念sama閱讀 218,525評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件书释,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡赊窥,警方通過(guò)查閱死者的電腦和手機(jī)爆惧,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,203評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)锨能,“玉大人扯再,你說(shuō)我怎么就攤上這事≈酚觯” “怎么了熄阻?”我有些...
    開(kāi)封第一講書(shū)人閱讀 164,862評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)倔约。 經(jīng)常有香客問(wèn)我秃殉,道長(zhǎng),這世上最難降的妖魔是什么浸剩? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,728評(píng)論 1 294
  • 正文 為了忘掉前任钾军,我火速辦了婚禮,結(jié)果婚禮上绢要,老公的妹妹穿的比我還像新娘吏恭。我一直安慰自己,他們只是感情好重罪,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,743評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布樱哼。 她就那樣靜靜地躺著哀九,像睡著了一般。 火紅的嫁衣襯著肌膚如雪搅幅。 梳的紋絲不亂的頭發(fā)上阅束,一...
    開(kāi)封第一講書(shū)人閱讀 51,590評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音茄唐,去河邊找鬼息裸。 笑死,一個(gè)胖子當(dāng)著我的面吹牛琢融,可吹牛的內(nèi)容都是我干的界牡。 我是一名探鬼主播,決...
    沈念sama閱讀 40,330評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼漾抬,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼宿亡!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起纳令,我...
    開(kāi)封第一講書(shū)人閱讀 39,244評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤挽荠,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后平绩,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體圈匆,經(jīng)...
    沈念sama閱讀 45,693評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,885評(píng)論 3 336
  • 正文 我和宋清朗相戀三年捏雌,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了跃赚。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,001評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡性湿,死狀恐怖纬傲,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情肤频,我是刑警寧澤叹括,帶...
    沈念sama閱讀 35,723評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站宵荒,受9級(jí)特大地震影響汁雷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜报咳,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,343評(píng)論 3 330
  • 文/蒙蒙 一侠讯、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧少孝,春花似錦继低、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,919評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至婿脸,卻和暖如春粱胜,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背狐树。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,042評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工焙压, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人抑钟。 一個(gè)月前我還...
    沈念sama閱讀 48,191評(píng)論 3 370
  • 正文 我出身青樓涯曲,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親在塔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子幻件,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,955評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容

  • 概述 在眾多的sip服務(wù)器中,主要有倆大類(lèi)蛔溃,一類(lèi)側(cè)重于媒體/業(yè)務(wù)服務(wù)器绰沥,比如freeswitch/asterisk...
    求真得真閱讀 1,869評(píng)論 0 0
  • 概述 freeswitch是一款好用的開(kāi)源軟交換平臺(tái)。 fs的默認(rèn)配置環(huán)境下贺待,sip消息中有很多freeswitc...
    求真得真閱讀 627評(píng)論 0 0
  • 概述 freeswitch是開(kāi)源徽曲、免費(fèi)的VOIP軟交換平臺(tái),自帶了很多功能各異的模塊麸塞。 mod_tts_comma...
    求真得真閱讀 456評(píng)論 0 0
  • 概述 freeswitch 是一款好用的開(kāi)源軟交換平臺(tái)秃臣。 但是,fs不是專(zhuān)為SBC而開(kāi)發(fā)的哪工,所以需要做一些定制化的...
    求真得真閱讀 962評(píng)論 0 0
  • 概述 freeswitch是一款好用的VOIP開(kāi)源軟交換平臺(tái)奥此。 VOIP公共網(wǎng)絡(luò)中的安全問(wèn)題是最重要的問(wèn)題,我們必...
    求真得真閱讀 998評(píng)論 0 0