天天看點

安裝、配置和測試Asterisk過程中遇到的問題及解決方法

最近剛剛接觸Asterisk,第一步想用Asterisk搭建一個VoIP伺服器,然後用安裝兩個軟電話實作通話,然後再深入一點研究。然而就是這第一步,對于我這個Linux和Asterisk新手來說,也是問題頻出,今天終于能打通了,在此記錄一下遇到的問題及解決辦法,希望對遇到和我同樣問題的人有點幫助。

一、下載下傳和安裝Asterisk

我覺得下載下傳源碼這些東西就去官網下 ,雖然國外的網站下載下傳速度慢點,但是比其他的一些途徑下載下傳的靠譜一些。我在這裡隻需要搭建一個VoIP伺服器,其他的包現在都不需要(那些包再一步一步去探索),是以隻需要到這個位址下載下傳Asterisk的源碼。

(http://downloads.asterisk.org/pub/telephony/asterisk/releases/)

我下載下傳的是最新的asterisk-13.9.1.tar.gz,下載下傳之後,我把它copy到了/usr/local/asterisk目錄下,解壓。

指令是這樣的:

cd /usr/local
sudo mkdir asterisk 
sudo chmod  asterisk  #讀、寫和執行權限
cd asterisk
sudo cp /你下載下傳的源碼的目錄 .  #注意最後的“.”,表示目前目錄
sudo tar -xvf asterisk-..tar.gz #解壓,會生成asterisk-13.9.1目錄
cd asterisk-.  #在這個目錄下有一個README檔案,裡面描述了安裝步驟。

正常的步驟應該是:
./configure
make
make install 
make samples

           

在執行./configure的時候可能會遇到一些問題,我所遇到的問題在這篇文章中都得到了解答。要注意的是多條指令同時執行報權限不足時,可以分開然後加上sudo執行。

(http://blog.sina.com.cn/s/blog_7a3dc0c90102vwvu.html)

二、運作Asterisk

在asterisk-13.9.1目錄下執行asterisk -cvvvv就可以運作asterisk了。執行之後建議用sudo netstat -aup檢視一下程序端口号,Asterisk的SIP預設端口是5060,IAX預設端口是4569,在我的機器上,Asterisk還監聽了4520和5000端口,我還不知道是幹什麼的。我遇到一個坑爹的問題是:無論我殺死、重新開機Asterisk多少次,asterisk就是沒監聽5060端口。我搜尋了半天沒找到解決辦法,後來在asteriskHelp論壇裡找到一個文章,描述的是跟我差不多的問題,原因可能是SIP子產品沒有啟動。然後,我重新編譯了一下Asterisk,啟動再檢視你就沒問題了。

三、下載下傳軟電話測試

在window上下載下傳一個x-lite,然後安裝,很簡單,下載下傳位址

在linux下會麻煩一些,需要下載下傳xten源碼,然後編譯,這個步驟可以自己查一下。我在安裝好之後遇到一個莫名奇妙的問題,在xten安裝好的目錄下明明有xten這個檔案,也有執行的權限。但是我直接執行,一直報“沒有這個這個檔案或目錄”,查一半天才知道這是因為我的linux虛拟機是64位的,但是這個xten是32位的,在64位的機器上執行32位程式就是會報找不到程式的錯誤。又查了半天才找到一篇文章真正解決了這個問題,位址在這裡

四、配置sip.conf和extensions.conf

在這個階段隻需要配置sip.conf和extensions.conf,他們都在etc/astersisk目錄下。前面安裝Asterisk時make simples指令會在配置檔案裡寫入示例配置,sip.conf與extensions.conf裡面都有,先不要将它們删除。

在sip.conf最後面添加配置:

[111]
username=
secret=aaa
type=friend
host=dynamic
context=internal
[222]
username=
secret=aaa
type=friend
host=dynamic
context=internal
           

上面的配置就是在asterisk伺服器上定義了兩個使用者(使用者這個描述不準确,但是現在先這麼了解沒有問題),如果IP畫集或者軟電話的username和secret與asterisk上定義的使用者吻合,那麼話機就能成功注冊到asterisk伺服器上了。

上面的username與secrect好了解,就是使用者名和密碼;type有三種,分别是friend、peer、user,想詳細了解的話,自己去查一下;host表示話機或者軟電話的ip位址,dynamic表示動态的ip位址;context對應的是extensions.conf中的一種撥号方案,表示該号碼從internal這個撥号方案中出去。

在extensions.conf中添加配置

[internal]
exten=>,,Dial(SIP/)
exten=>,,Dial(SIP/)
           

extensions.conf中定義的是DiaPlan撥号計劃,也就電話呼入呼出一步步怎麼處理就是在這個配置檔案中規定的。上面是一個非常簡單的撥号方案,意思是:撥111,處理的第一步就是從SIP通道呼出111。

五、啟動asterisk

重新啟動Asterisk,将軟電話注冊到asterisk就可以用了。

繼續閱讀