By Mark Spencer <[email protected]> and the Asterisk.org developer community.
Copyright (C) 2001-2021 Sangoma Technologies Corporation and other copyright holders.
在嘗試設定和執行 Asterisk 伺服器之前,您必須閱讀並完全理解安全資訊文件的內容。
有關詳細信息,請參閱重要的安全注意事項。
Asterisk 是一個開源 PBX 和電話工具包。從某種意義上說,它是底層的互聯網和電話通道以及頂層的互聯網和電話應用程式之間的中間件。然而,Asterisk 支援更多的電話接口,而不僅僅是網路電話。 Asterisk 也對傳統 PSTN 電話提供大量支援。
有關項目本身的更多信息,請訪問 Asterisk 主頁和官方文件。此外,您還可以在 voip-info.org 上找到由 Asterisk 社群編制的大量資訊。
O'Reilly 根據知識共享授權出版了一本關於 Asterisk 的書。它可以在書店購買,也可以在 asteriskdocs.org 網站上下載。
Asterisk 開源 PBX 主要在 GNU/Linux 作業系統上開發和測試,並受到每個主要 GNU/Linux 發行版的支援。
Asterisk 也已被“移植”,據報導在其他作業系統上也能正常運行,包括 Sun Solaris、Apple 的 Mac OS X、Cygwin 和 BSD 變體。
首先,確保您擁有受支援的硬體(但請注意,您不需要任何特殊硬件,甚至不需要聲卡)來安裝和運行 Asterisk。
支援的電話硬體包括:
如果您要從 Asterisk 的早期版本進行更新,請確保閱讀來源目錄中的 UPGRADE.txt 檔案。儘管我們盡一切努力保持向後相容性,但您仍必須更改一些檔案和設定選項。
為了發現要使用的新功能,請檢查原始程式碼分發的 configs 目錄中的設定範例。有關此版本的 Asterisk 中的新功能列表,請參閱 CHANGES 檔案。
確保您的系統包含相容的編譯器和開發庫。 Asterisk 需要 GNU 編譯器集合 (GCC) 4.1 或更高版本,或支援 C99 規範和一些 gcc 語言擴充的編譯器。此外,您的系統需要有可用的 C 庫頭檔案以及 ncurses 的頭檔和庫。
有許多模組具有額外的依賴項。若要查看正在尋找哪些程式庫,請參閱./configure --help
,或執行make menuselect
以查看特定模組的依賴關係。
在許多發行版上,這些相依性由名稱為「glibc-devel」、「ncurses-devel」、「openssl-devel」和「zlib-devel」或類似名稱的套件安裝。
那麼,讓我們繼續:
doc目錄下還有比這個更多的文件。您可能還想檢查 configs 目錄中包含範例和參考指南的設定檔。
./configure
執行配置腳本來猜測編譯期間使用的系統相關變數的值。如果腳本指示缺少某些必需的元件,您可以執行./contrib/scripts/install_prereq install
來安裝必需的元件。請注意,這將為 Asterisk 的每個功能安裝所有依賴項。執行腳本後,您將需要重新執行./configure
。
make menuselect
[可選]如果您想要選擇要編譯的模組並檢查各種可選模組的依賴關係,則需要執行此操作。
make
假設建構成功完成:
make install
如果這是您第一次使用 Asterisk,您可能想要安裝範例 PBX,以及示範擴充功能等。
make samples
這樣做將覆蓋您已安裝的任何現有設定檔。
# asterisk -vvvc
當 Asterisk 初始化時,你會看到一堆詳細訊息從螢幕上飛過(這是「非常非常詳細」模式)。準備好後,如果您指定了“c”,那麼您將獲得一個命令列控制台,如下所示:
*CLI>
您可以隨時輸入“core show help”來取得系統協助。如需特定指令的協助,請鍵入「core show help」。若要使用音效卡啟動 PBX,您可以鍵入「console dial」來撥打 PBX。然後您可以使用「控制台接聽」、「控制台掛斷」和「控制台撥號」來模擬電話的操作。請記住,如果您沒有全雙工聲卡(如果您有/沒有,Asterisk 會在其詳細訊息中的某個位置告訴您),那麼它將無法正常工作(還沒有)。
在 Unix/Linux 命令提示字元處輸入「man asterisk」將為您提供有關如何啟動和停止 Asterisk 的詳細信息,以及用於啟動 Asterisk 的所有命令列選項。
請隨意查看/etc/asterisk
中的配置文件,您將在其中找到大量有關 Asterisk 功能的資訊。
所有 Asterisk 設定檔共享通用格式。註釋以“;”分隔(當然,因為「#」是 DTMF 數字,可能出現在很多地方)。設定檔分為多個部分,其名稱出現在 [] 中。每個部分通常包含兩種類型的語句,即「變數=值」形式的語句和「物件=>參數」形式的語句。在內部,“=”和“=>”的使用完全相同,因此它們僅用於幫助使配置文件更易於理解,並且不會影響其實際解析方式。
'variable=value' 形式的條目設定星號中某些參數的值。例如,在 chan_dahdi.conf 中,可以指定:
switchtype=national
為了向 Asterisk 表明他們連接的交換機是「國家」類型的。一般來說,該參數將應用於低於其規範的實例化。例如,如果設定檔讀取:
switchtype = national
channel => 1-4
channel => 10-12
switchtype = dms100
channel => 25-47
「national」開關類型將應用於通道 1 到 4 以及通道 10 到 12,而「dms100」開關類型將應用於通道 25 到 47。
“object =>parameters”使用給定的參數實例化一個物件。例如,行「channel => 25-47」為卡片的通道 25 到 47 建立對象,從上面指定的變數中取得設定。
使用 SIP 電話的用戶應該意識到 Asterisk 對時間的大幅跳躍很敏感。使用 date(1)(或其他類似命令)手動更改系統時間可能會導致 SIP 註冊和其他內部進程失敗。如果您的系統本身無法保持準確的時間,請使用 NTP 來保持系統時鐘與「即時」同步。 NTP 旨在透過加快或減慢系統時鐘直到同步到「即時」來保持系統時鐘同步,而不是透過跳躍時間並導致不連續性。大多數 Linux 發行版都包含 NTP 的預編譯版本。請注意一些時間同步方法,這些方法會定期取得正確的即時時間,然後手動設定係統時鐘。
由於夏令時而導致的時間變化就是顯而易見的。 Linux系統中夏令時的使用純粹是使用者介面問題,不會影響Linux核心或Asterisk的運作。 Linux 核心上的系統時鐘依照 UTC 運作。 UTC 不使用夏令時間。
另請注意,此問題與 TDM 通道的時鐘無關,並且已知至少會影響 SIP 註冊。
根據系統的大小和配置,Asterisk 可能會消耗大量檔案描述符。在 UNIX 中,檔案描述符不僅僅用於磁碟上的檔案。文件描述符也用於處理網路通訊(例如SIP、IAX2 或H.323 通話)和硬體存取(例如類比和數位中繼硬體)。 Asterisk 可以存取許多磁碟文件,以取得從設定資訊到語音郵件儲存的所有內容。
大多數系統限制 Asterisk 一次可以開啟的檔案描述符的數量。這可能會限制您的系統可以處理的同時呼叫的數量。例如,如果限制設定為 1024(常見預設值),Asterisk 可以同時處理大約 150 個 SIP 通話。若要變更檔案描述符的數量,請按照以下針對您的系統的說明進行操作:
如果您的系統使用 PAM(可插入身份驗證模組),請編輯/etc/security/limits.conf
。將這些行新增到文件底部:
root soft nofile 4096
root hard nofile 8196
asterisk soft nofile 4096
asterisk hard nofile 8196
(依口味調整數字)。您可能需要重新啟動系統才能使這些變更生效。
如果上面沒有專門適合您的系統的說明,您可以嘗試將命令ulimit -n 8192
新增到啟動 Asterisk 的腳本中。
有關各種功能的更多文檔,請參閱 doc 目錄。再次,請閱讀所有包含設定選項文件的設定範例。
最後,如果您有興趣獲取更多信息,您可能希望訪問支援網站並加入郵件列表。
歡迎來到不斷成長的全球 Asterisk 用戶社群!
Mark Spencer, and the Asterisk.org development community
Asterisk 是 Sangoma Technologies Corporation 的商標