小男孩‘自慰网亚洲一区二区,亚洲一级在线播放毛片,亚洲中文字幕av每天更新,黄aⅴ永久免费无码,91成人午夜在线精品,色网站免费在线观看,亚洲欧洲wwwww在线观看

分享

電話未來之路之四--Asterisk的基本配置-jerichen-ChinaUnix博客

 free_light 2015-02-19
Asterisk的基本配置
 
1 我到底需要什么
星號(*)在很多不同的應(yīng)用中被用作通配符。星號作為這個PBX系統(tǒng)的完美名稱,原因很多,其中之一是asterisk可以連接數(shù)目龐大的接口類型,包括:
模擬接口,如你的電話線和模擬電話
數(shù)字線路,如T1和E1
VOIP協(xié)議,如SIP和IAX
2 使用的配置文件
本文主要講述如何配置以下四種通道:FXO通道、FXS通道、SIP通道和IAX通道,目標(biāo)不是對所有的通道或拓?fù)溥M行研究,而只是提供一個基本的平臺,在此基礎(chǔ)上建立自己的電話系統(tǒng)。
使用到的配置文件:
zaptel.conf           ---用于做硬件接口的基層配置。我們將建立一個FXO和一個FXS通道
zapata.conf           ---用于為硬件配置Asterisk的接口
extensions.conf-      ---撥號方案
sip.conf              ---配置sip協(xié)議的文件
iax.conf              ---配置呼入和呼出iax通道的文件
3 FXO和FXS通道
FXO不生成撥號音而是接受,撥號音由電話公司提供,該端口接入到電話公司
FXS口提供撥號音和振鈴電壓,在有呼入的時候提醒用戶,該端口接入到電話終端
端口是通過配置使用的信令進行定義的,而不會是物理端口類型。例如,一個物理的FXO口可以在配置中使用FXS信令定義,而FXS端口可以用FXO信令定義。(未理解)
4 配置FXO通道
要配置FXO通道,先要配置zaptel,再配置zapata
zaptel配置
配置文件為/etc/zaptel.conf。下面是定義FXS端口的FXS信令的最低限度的配置:
fxsks=2
loadzone=us
defaultzone=us
第一行,除了我們提到正在使用的FXO或FXS信令外,還可以為通道2定義了以下協(xié)議中的一種:Loop stars (ls)、Ground start(gs)、Kewlstart(ks)
loop start和ground start之間的區(qū)別在于設(shè)備如何請求撥號音:ground start電路信號通知遠(yuǎn)端它需要撥號音,即刻grounding one of the leads;環(huán)路啟動電路使用一個short來請求撥號音。新的使用中不常見,但模擬ground start線路仍然在某些地區(qū)使用。例如,ground start線路的優(yōu)勢在于消除一種叫做glare的現(xiàn)象,這種現(xiàn)象在loop start線路和PBX較高的呼叫音量時出現(xiàn)。北美所有的家庭線路(和模擬電話、解調(diào)器、傳真)使用loopstart信令。kewlstart實際上和loopstart相同,只是更為智能,能夠更好的檢測遠(yuǎn)端的斷線。kewlstart是asterisk的模擬電路推薦的信令協(xié)議。
要配置kewlstart以外的信令,用ls或者gs替換fxsks中的ks。
第二行,loadzone配置通道使用的提示包(在zonedata.c中配置)。zonedata.c包含了在某個國家中電話系統(tǒng)需要使用的不同聲音信息:撥號音、回鈴音、忙音等等。當(dāng)你為zap通道應(yīng)用一個裝載過的音域,這個通道就會模擬特定國家的提示音。不同的提示包可以為不同的通道配置。
Defaultzone用于通道沒有指定音域的情況。
配置完zaptel.conf后,你可以載入板卡的驅(qū)動。modprobe用于裝載linux內(nèi)核模塊,例如裝載wctdm驅(qū)動,你需要運行:
#modprobe wctdm
如果驅(qū)動裝載沒有任何提示,則表示裝載成功。你可以檢測硬件和端口是否正確裝載和配置,使用ztcfg程序:
#/sbin/ztcfg -vv
配置的通道和使用的信令會顯示出來。
如果你收到如下錯誤,則說明你配置了錯誤的信令方式:
ZT_CHANCONFIG failed on channel 2:Invalid argument(22)
Did you forget that FXS interfaces are configured with FXO signalling and that FXO interfaces use FXS signalling?
從內(nèi)存中卸載驅(qū)動,使用rmmode命令,如下:
#rmmod wctdm
zttool是個分析工具,用來分析硬件的狀態(tài)。運行后,可以看到一個所有安裝硬件的菜單。你可以選擇某個硬件,查看目前狀態(tài)。OK表示硬件安裝正確。
Asterisk通常情況下可以認(rèn)為模塊安裝成功,但是要在裝載模塊時看調(diào)試輸出,需要看控制臺輸出(默認(rèn)輸出在TTY 9,可以在safe_asterisk中進行配置。)
zapata配置
asterisk使用zapata.conf文件確定系統(tǒng)中安裝的電話硬件的設(shè)置。zapata.conf文件同時控制硬件通道相關(guān)的不同功能和特性,例如主叫號碼顯示,呼叫等待,回聲消除,以及各種其它功能。
zapata.conf文件配置asterisk硬件和相關(guān)特性的控制:
[trunkgroups]
;define any trunk groups
[channels]
;hardware channels
;default
usecallerid=yes      ;--------設(shè)置來電顯示
hidecallerid=no      ;----------設(shè)置呼出時不隱藏
callwaiting=no       ;--------禁止呼叫等待
threewaycalling=yes  ;----------開啟三方通話功能
transfer=yes         ;--------可以使用閃斷鍵hook switch flash 實現(xiàn)呼叫前轉(zhuǎn),它需要先開啟三方通話
echocancel=yes       ;----------消除模擬線路可能產(chǎn)生的回聲
echotraining=yes     ;--------回聲消除需要一些時間去學(xué)習(xí),你可以使用回聲訓(xùn)練來加速這個過程
;define channels
context=incoming;Incoming calls goto [incoming]in extensions.conf
signalling=fxs_ks ;use FXS signalling for an FXO channel
channel=>2;PSTN attached to port 2
[trunkgroups]用于配置NFAS和GR-303連接。
[channels]決定硬件通道和他們選項的信令方式。一量一個選項定義完畢,文件的其它部分會繼承這個定義。一個通道定義使用channel=>,則其他每個通道定義繼承以上行所定義的所有選項。如果你想給每個通道定義不同的徒然,要記住在channel=>定義之前配置選項。
當(dāng)一個呼叫到達(dá)FXO接口時,你可能希望執(zhí)行一些動作。這些在一個稱為上下文context指令集中進行配置。FXO端口的呼入呼叫由context=incoming指向incoming context。
最后由于FXO通道使用FXS信令,我們用signalling=fxs_ks對此進行定義
Dialplan配置
以下是基本撥號方案,使用ECHO()應(yīng)用來校驗工作通道的雙向通訊:
[incoming]
;incoming calls from the FXO port are directed to this context from zapata.conf
exten => s,1,Answer()
exten => s,2,Ecsho()
無論你說什么,Echo()都將會回轉(zhuǎn)給你
呼入
以上FXO通道已經(jīng)配置完畢,我們來測試一下。運行zttool應(yīng)用,把PSTN線路連接到你的語音卡的FXO端口,你可以看到卡上有一個紅色的指示。
現(xiàn)在從另外一個電話上撥打這個PSTN號,Asterisk會接收這個呼叫并執(zhí)行Echo()應(yīng)用。如果你可以聽到回送過來的你的聲音,則FXO通道的安裝和配置已經(jīng)成功。

5 配置FXS通道
zaptel配置
以下是TDM400P的FXS通道的基本配置。配置和FXO通道的配置相似,只是增加了fxoks=1。
FXO口與FXS口的配置是相反的,F(xiàn)XO口配置fxs信令:fxsks,FXS口配置fxo信令:fxoks
配置如下:
fxoks=1           ;----配置通道1使用FXO信令,通道1為S口
fxsks=2           ;----配置通道2使用FXS信令,通道2為O口
loadzone=us
defaultzone=us
配置完后為硬件裝載驅(qū)動.
使用/sbin/ztcfg -vv檢測他們的狀態(tài)
Zaptel Configuration
=========================
Channel map:
Channel 01:FXO Kewlstart(Default)(Slaves:01)
Channel 02:FXS Kewlstart(Default)(Slaves:02)
2 channels configured
zapata配置
配置與FXO通道的配置相同,只是增加了FXS端口的字段和immediate=no行。FXS端口的context是internal,信令是fxoks(kewlstart),通道號設(shè)置為1。
FXS通道可以設(shè)置 為電話摘機后執(zhí)行二種不同動作中的一種。最普遍的是Asterisk產(chǎn)生撥號間,等待用戶輸入。這種用immediate=no進行配置。另一種是Asterisk自行執(zhí)行一套撥號方案中設(shè)置的指令,而不是產(chǎn)生撥號音,通過immediate=yes進行配置。執(zhí)行指令在該通道的context中設(shè)置,并匹配s擴展。
新zaptat.conf:
[trunkgroups]
;define any trunk groups
[channels]
;hardware channels
;default
usecallerid=no
hidecallerid=no
callwaiting=no
treewaycalling=yes
transfer=yes
echocancel=yes
echotraining=yes
immediate=no
;define channels
context=internal       ;Uses the [internal] context in extensions.conf
signalling=fxo_ks      ;Use FXO signalling for an FXS channel
channel =>1            ;Telephone attached to port 1
context=incoming       ;incoming calls goto [incoming] in extensions.conf
signalling=fxs_ks      ;Use FXS signalling for an FXO channel
channel =>2            ;Telephone attached to port 2
Dialplan配置
[internal]
exten =>611,1,Answer()
exten =>611,2,Echo()
當(dāng)你在分機上括611后,你所說的話會返回給你,從而檢測雙向語音

6 sip配置

sip--會話初始協(xié)議,通常用于voip電話,進行呼叫建立、呼叫結(jié)束以及呼叫進程中的協(xié)商?;旧希鼛椭€端點互相通話。sip不處理媒體;當(dāng)呼叫建立之后,它通過實時傳輸協(xié)議在電話之間直接傳輸媒體。
SIP使用UDP5060端口進行通信,目前asterisk沒有TCP用于傳輸,但以后的版本可能會支持。我們所說的媒體是指端點之間傳輸?shù)挠糜谠诹硪欢它c重建你的聲音數(shù)據(jù)。同樣也指pbx音樂或聲音提示。
RTP用于在端點之間傳輸媒體。Asterisk中RTP使用大數(shù)字的無特權(quán)的端口(默認(rèn)10000至20000)
SIP不是第一個,也不是唯一一個我們使用的VOIP協(xié)議(其它包括H.323,MGCP,IAX等),但是目前SIP似乎是硬件廠商最大的動力。SIP協(xié)議的優(yōu)點是普遍的被接受和結(jié)構(gòu)靈活,簡單。
下面是基本的sip.conf配置:
[general]
context=default
srvlookup=yes
[john]
type=friend
secret=welcome
qualify=yes ;qualify peer is no more than 2000 ms away
nat=no ;this phone is not natted
host=dynamic ;this device registers with us
canreinvite=no ;Asterisk by default tries to redirect
context=internal ;the internal context controls what we can do
sip.conf文件開始是一個[general]項,包含通道設(shè)置,所有用戶和對端默認(rèn)選項。在一個端-用戶/端的基礎(chǔ)上,你可以不考慮默認(rèn)的配置,而在user/peer定義中重新進行配置。
域名系統(tǒng)服務(wù)記錄(DNS SRV records)是建立一個邏輯和可解析地址的方法,你可以到達(dá)這個地址。這種方法可以是呼叫傳輸?shù)讲煌牡攸c,而不需要改變邏輯地址。使用SRV記錄,你可以獲取DNS的很多好處,然而禁止它們打破SIP RFC的規(guī)定,并且禁止了基于域名的SIP呼叫(注意如果多個記錄返回,Asterisk只會使用第一個)。
DNS SRV記錄查詢在ASterisk默認(rèn)禁止,但是強烈建議你打開。啟動使用sip.conf中[general]section里面的srvlookup=yes。
每個連接都會定義為用戶、端或者朋友。用戶類型是用于認(rèn)證呼入呼叫;端類型用于呼出呼叫;朋友類型兩種都用。擴展名用中括號定義。
Secret是用于認(rèn)證的密碼。
qualify=yes,確認(rèn)遠(yuǎn)端設(shè)備是否可達(dá)??捎糜诒O(jiān)視任何遠(yuǎn)端商務(wù),包括其它的Asterisk服務(wù)器。默認(rèn)情況是Asterisk認(rèn)為時延在2000ms以內(nèi)的設(shè)備可達(dá)。你可以通過將yes替換為毫秒來配置Asterisk判斷對端是否可達(dá)的時間。
如果一個號碼在NAT設(shè)備后面,例如路由器或者防火墻,必須配置nat=yes,強迫astersik忽略號碼的聯(lián)系信息,使用收到的包的地址信息。
設(shè)host=dynamic將要求號碼注冊,以便asterisk可以知道如何找到電話。將一個端點綁定到一個單獨地址或者FQDN,將dynamic替換成IP地址或者域名。注意這只是限制你呼叫的目的地址,用戶允許從任何地點發(fā)起呼叫(假定它鑒權(quán)成功)。如果你設(shè)置host=static,則終端設(shè)備不需要注冊。
設(shè)置canreinvite=no。在sip協(xié)議中,邀請用于發(fā)起呼叫,重寫向媒體。在初始邀請后相同對話中發(fā)起的任何邀請都被視作重邀請(reinvite).例如:假設(shè)雙方正在交換媒體信息。如果一方呼叫等待,asterisk設(shè)置為播放呼叫等待音樂,asterisk會發(fā)起到第二個客戶端的重邀請,告訴將他的媒體流定向到PBX。然后就可以傳輸音樂流,或者一個等待客戶的通知。最開始的用戶再到PBX的重邀請中發(fā)起一個接機的命令,然后pbx發(fā)起一個重邀請到第二方,要求它將媒體流重新定向到發(fā)起方,結(jié)束呼叫等待音樂,重新連接客戶端。
通常,當(dāng)二個端點建立起呼叫,他們直接從一端到另一端傳輸媒體。asterisk通常在媒體通道打破這個規(guī)則,允許它聽到電話鍵盤上的撥號音。這是必須的,因為如果asterisk不能確定呼叫長度,計費將不準(zhǔn)確。canreinvite=no讓asterisk媒體經(jīng)過自己,而不允許rtp信息直接在端點之間傳送。
asterisk在以下情況下不會發(fā)起重邀請:
1.客戶端的任何一方配置為canreinvite=no
2.客戶端不能協(xié)商編碼,asterisk需要執(zhí)行語音編碼轉(zhuǎn)換
3.客戶端的任何一方配置為nat=yes
4.如果asterisk在呼叫中需要監(jiān)聽雙音(DTMF)音(用于呼叫前轉(zhuǎn)或者其他功能)
context=internal定義了指令的地點,用于控制電話的權(quán)限,以及如何處理此號碼的呼入呼叫。sip.conf中設(shè)置的context名稱和extensions.conf中的匹配。
如果你配置了一組相似的用戶,你可以在[general]字段中使用相似的命令。asterisk會使用默認(rèn)的定義,除非他們在用戶的配置文檔中明確改變。
客戶端配置(軟電話配置)
配置客戶端通常簡單。最重要的是注冊用戶名和密碼,和你要注冊的asterisk服務(wù)器地址。
Dialplan配置
很多sip電話,包括軟件和硬件,都是多線程電話,意味著可以接受多個同時呼入的電話。這樣,測試你的x-lite軟電話你可以呼叫你自己,然后呼叫在astersk環(huán)回,二個在線用戶端。撥打100,呼叫你自己。如果你選擇的客戶端不支持多線功能,你可以使用611號碼進入Echo()應(yīng)用:
[internal]
exten=>100,1,Dial(SIP/john)
exten=>611,1,Echo()
 
7 配置入局IAX連接
IAX協(xié)議通常用于服務(wù)器之間通信,就sip協(xié)議來說,硬件電話支持的更多些。然而,一些軟件電話已經(jīng)支持IAX協(xié)議,并且有人正致力于研究硬件電話對此協(xié)議的支持。IAX和SIP協(xié)議最大的區(qū)別在于媒體(語音)在端點之間傳輸?shù)姆绞讲煌?br>sip協(xié)議中,相對于使用信令模式來說,RTP流使用不同的端口進行傳輸。例如,asterisk默認(rèn)的情況是在5060端口接收sip信令,在10000-20000端口接收RTP流。IAX協(xié)議則不同,所有的信令和媒體流都通過一個端口4569進行傳輸。這種方式的好處是iax協(xié)議更能適應(yīng)在有nat的拓?fù)渲袘?yīng)用。
IAX用戶習(xí)慣對進入pbx系統(tǒng)的呼叫進行鑒權(quán)和處理。對從pbx系統(tǒng)呼出的呼叫,asterisk應(yīng)用iax的iax.conf文件的端點進入(條目)對遠(yuǎn)端進行鑒權(quán)。
本章說明如何通過iax為你的系統(tǒng)設(shè)置一個FWD(全球免費撥打FreeWorldDialup)賬號。FWD是一個免費的VOIP運營商,允許你免費撥打系統(tǒng)內(nèi)的任何號碼,不受物理位置的限制。FWD同時連接了一百多個其它你可以免費撥打的網(wǎng)絡(luò)。
iax.conf配置
在iax.conf文件中,段落是由方括號定義的([])。每個iax.conf文件至少需要一個主要段落[general]。這個[general]段落中,定義使用IAX協(xié)議的相關(guān)設(shè)置,例如默認(rèn)編碼和抖動緩沖。你可以不考慮在[general]段落中默認(rèn)編碼,而在user or peer定義中進行設(shè)置。
以下[general]段落是iax.conf.sample配置文件中的默認(rèn)設(shè)置。
[general]
bandwidth=low
disallow=lpc10
jitterbuffer=no
tos=lowdelay
autokill=yes

register=>fwd_number:password@iax2.fwdnet.net
[iaxfwd]
type=user
context=incoming
auth=rsa
inkeys=freeworddialup
在[gerneral]段落中,你需要增加一個register陳述。這個register陳述的目的是通知FWD IAX服務(wù)器你在互聯(lián)網(wǎng)的位置(你的IP)。當(dāng)呼叫你的FWD號碼時,F(xiàn)WD服務(wù)器在數(shù)據(jù)庫中搜尋,呼叫發(fā)送到和FWD號碼關(guān)聯(lián)的IP地址。
在[iaxfwd]段落中,通過type=user為用戶定義呼入呼叫。用context=coming進行呼入呼叫鑒權(quán)。公鑰用inkeys=freeworlddialup進行定義。freeworlddialup公鑰是astersik的標(biāo)準(zhǔn)。
Dialplan配置
在extension.conf中處理呼入呼叫十分簡單,首先建立一個context命名為imcoming。Context后面是Dial()陳述,用你的fWD賬號替換號碼10001撥號本章前面創(chuàng)建的sip分機。
[incoming]
exten=>10001,1,Dial(SIP/john)
 
8 配置出局IAX連接
iax.conf配置
[iaxfwd]
type=peer   ;-->定義端點的類型
host=iax2.fwdnet.net  ;-->設(shè)置用于呼叫的服務(wù)器
username=<fwd-account-number> ;-->FWD賬號
secret=<fwd-account-password> ;-->FWD密碼
qualify=yes   ;-->定期檢查遠(yuǎn)端服務(wù)器是否響應(yīng)
disallow=all   ;-->用于復(fù)位原來設(shè)置的所有編碼信息,然后使用allow=codec設(shè)置你支持的編碼和優(yōu)先級(由高到低)
allow=ulaw
allow=gsm
allow=ilbc
allow=g728
在asterisk命令行使用iax2 show registry命令,檢驗?zāi)闶欠癯晒ψ浴?/span>
Dialplan配置
在extensions.conf中定義一個section,使我們能夠?qū)⒛硞€呼叫設(shè)置FWD回聲測試應(yīng)用。和前面的設(shè)置一樣,我們要創(chuàng)建一個context,附帶連接FWD回聲測試的命令。使用連接fXS端口的電話,或者sip電話,撥打613,進行呼叫。
[internal]
exten=>613,1,Dial(IAX2/iaxfwd/613)
9 調(diào)試
asterisk提供了多種調(diào)試方法。連接控制臺后,可以察看不同級別的冗長和調(diào)試輸出,同時還有協(xié)議包tracing。
連接控制臺
直接在系統(tǒng)命令行啟動asterisk,使用下面的命令:
#/usr/sbin/asterisk -c
遠(yuǎn)程連接控制臺,首先啟動asterisk,然后連接
#/usr/sbin/asterisk
#/usr/sbin/asterisk -r
如果遇到某個模塊不能載入的問題,或者某個模塊導(dǎo)致asterisk不能載入,用-c flag啟動asterisk進程,監(jiān)視模塊載入狀態(tài)。
啟動verbosity和Debugging
Asterisk可以以warning、notice和error消息形式輸出調(diào)試信息。這些消息可以為你提供系統(tǒng)信息,例如注冊、狀態(tài)、呼叫進程和多種其它信息。請注意Warning和notice洲不是錯誤;error信息需要進行檢查。激活不同級別的verbosity,使用set verbose,附加一個數(shù)值。有效佱從3-10,例如設(shè)置versosity的最高數(shù)值,使用:
#set verbose 10
你也可以通過設(shè)置調(diào)試級別激活核心調(diào)試信息。激活控制臺的Debug輸出,需要在logger.conf文件中增加debug到console=>文段,例如:
console=>warning,notice,error,event,debug
設(shè)置調(diào)試級別的有效值為3-10,例如:
#set debug 10

    本站是提供個人知識管理的網(wǎng)絡(luò)存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多