FusionPBX 和 ACL

我的文章並不是對產品的完整描述,而只是對優秀出版物“FusionPBX,或者再次是 FreeSWITCH”的一個小的澄清。我認為它沒有很好地涵蓋 FusionPBX 中的 ACL 主題。我將嘗試根據自己使用 FreeSWITCH/FusionPBX 的經驗來填補這一空白。

因此,我們安裝了 FusionPBX,其在 domain.local 網域中註冊了內部號碼 1010,並配置了用於向城市進行外部呼叫的路由。我們使用 ACL 來保護我們的電話系統,防止未經授權的電話竊取我們的金錢。那些。僅允許來自 ACL 中所述的網路的撥出呼叫。這裡您需要完全清楚地了解 ACL 在 FusionPBX 中的工作方式、其功能、邏輯及其連接點。

和上述文章的尊敬的作者一樣,我也踩過與 ACL 相關的所有耙子。

我先從 Sip設定檔.
這兩個配置(我將這樣稱呼它們),無論是內部的還是外部的,都處於公共環境中,這並非偶然。號碼的註冊是在內部檔案中進行的,我們會關注它。在內部設定檔中,網域 ACL 綁定為 apply-inbound-acl。該行負責設定檔層級的 ACL 操作。目前有關設定檔的內容就這些。

語境

上下文除其他用途外還用於呼叫路由。所有傳入路線都綁定到公共上下文。

出站路由(到城市、到行動電話、長途、國際以及任何其他路由)預設位於名稱上下文中 領域 (我們稱之為 domain.local)。

ACL

現在讓我們處理 ACL。預設情況下,新安裝的 FusionPBX 有兩個 ACL:

網域預設操作:拒絕 - 此表格連結到內部設定文件
lan 預設操作:允許

在ACL列表域中我們寫入網路(例如192.168.0.0/24),賦予該網路允許權限,並使用reloadacl。

接下來我們從這個網路註冊手機,一切似乎都很順利,並且符合說明和邏輯。
我們開始測試,撥打外部號碼,然後…得到一個甜甜圈,或者更確切地說是甜甜圈上的一個洞。突然!

我們開始在控制台中或透過 FusioPBX 日誌檢視器分析日誌。

我們看到了我們的挑戰:

switch_channel.c:1104 New Channel sofia/internal/1010@domain.local

我們看到觸發的ACL:

sofia.c:10208 IP 192.168.0.150 Approved by acl "domains[]". Access Granted.

並進一步:

mod_dialplan_xml.c:637 Processing 1010 <1010>->98343379xxxx in context public
switch_core_state_machine.c:311 No Route, Aborting 
switch_core_state_machine.c:312 Hangup sofia/internal/1010@domain.local [CS_ROUTING] [NO_ROUTE_DESTINATION] 

沒有路線!雖然我們的路線已經寫得很清楚了。

答案其實很簡單。

電話來了。 ACL 錯過了。並且由於 ACL 綁定到內部配置文件,並且該配置文件位於公共上下文中,因此 FreeSWITCH 會誠實地查看公共上下文中的路由。但在公共環境中只有傳入路由,系統誠實地告訴我們沒有通往城市的路線。

至少有兩種方法可以擺脫這種情況。

  1. 將此 ACL 附加到內部號碼本身,而不是設定檔。這或許是解決問題最正確的方法,因為最好將ACL盡可能靠近Extension進行綁定,以便進行更細緻的客製化。那些。您可以指定電話的特定位址/網路位址,以便撥打電話。此選項的缺點是您必須在每個擴充功能中執行此操作。
  2. 修復 ACL,以便它在設定檔層級正常運作。我選擇此選項是因為將網路新增至 ACL 一次似乎比在每個擴充功能中註冊它更容易。但這是專門針對我的任務的。其他任務可能需要不同的決策邏輯。

所以。讓我們如下修正 ACL 網域:

域預設操作:允許

在 ACL 列表域中我們指定網路:

拒絕 192.168.0.0/24

我們使用reloadacl。
讓我們測試一下:再次撥打號碼 98343379хххх 然後...撥號音是...你好。一切正常。
讓我們看看在 FreeSWITCH 中發生了什麼:
通話開始:

switch_channel.c:1104 New Channel sofia/internal/1010@domain.local

ACL 未通過:

[DEBUG] sofia.c:10263 IP 192.168.0.150 Rejected by acl "domains". Falling back to Digest auth.

並且進一步:

mod_dialplan_xml.c:637 Processing 1010 <1010>->98343379xxxx in context domain.local
sofia/internal/1010@domain.local Regex (PASS) [Sity] destination_number(98343379xxxx) =~ /^9(8343[23]d{6})$/ break=on-false 

路由已經發生,現在正在建立連接,這超出了本主題的範圍。

如果我們更改 ACL 中的網路位址,但從第一次測試中取得圖片,即 ACL 呼叫將通過且路由將顯示 NO_ROUTE_DESTINATION。

這可能就是我想補充的有關 ACL FusionPBX 的全部。

我希望這對某些人有用。

來源: www.habr.com

添加評論