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:

域默認操作:拒絕 - 此工作表綁定到內部配置文件
局域網默認操作:允許

在域 ACL 列表中,我們指定網絡(例如 192.168.0.0/24),我們為該網絡授予允許權限,我們使用 reloadacl。

接下來,我們從該網絡註冊一部電話,一切似乎都很好,並且按照說明和邏輯進行。
我們開始測試,撥打外部號碼......我們得到一個甜甜圈,或者更確切地說是一個甜甜圈洞。 突然!

我們開始在控制台或通過FusioPBX日誌查看器分析日誌。

我們看到了我們的挑戰:

switch_channel.c:1104 New Channel sofia/internal/[email protected]

我們看到 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/[email protected] [CS_ROUTING] [NO_ROUTE_DESTINATION] 

沒有路線! 雖然路線我們已經老老實實地登記了。

答案很簡單。

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

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

  1. 將此 ACL 不附加到配置文件,而是附加到內部號碼本身。 這可能是最正確的解決方法,因為。 最好將 ACL 綁定到盡可能靠近 Extension 以便進行更精細的調整。 那些。 您可以指定可以撥打電話的電話的特定地址/網絡地址。 此選項的缺點是每個擴展都必須執行此操作。
  2. 修復 ACL,使其在配置文件級別正常工作。 我選擇了這個選項,因為在我看來,將網絡添加到 ACL 一次比在每個擴展中指定它更容易。 但這是專門針對我的任務的。 對於其他任務,您可能需要不同的決策邏輯。

所以。 讓我們修復 ACL 域,如下所示:

域默認操作:允許

在域 ACL 列表中,我們註冊網絡:

拒絕 192.168.0.0/24

應用,重新加載。
我們正在測試:我們再次撥打號碼 98343379xxxx,然後...檢查站即將到來...您好。 一切正常。
讓我們看看 FreeSWITCH 中發生了什麼:
通話開始:

switch_channel.c:1104 New Channel sofia/internal/[email protected]

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/[email protected] Regex (PASS) [Sity] destination_number(98343379xxxx) =~ /^9(8343[23]d{6})$/ break=on-false 

路由過去了,接下來就是連接建立,這個超出了本主題的範圍。

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

這可能就是我想在 ACL FusionPBX 上添加的全部內容。

我希望它對某人有用。

來源: www.habr.com

添加評論