Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

上一節中我們在Teams上面用命令配置好了Voice Routing Policy並分配給用戶,理論上這時他的Teams UI上面的撥號盤就會出現。同時我們也建立好了PSTN Gateway, 這樣子 Phone System >>> 本地語音網關的SIP Trunk 就做好了,從Teams 管理員中心上面可以看到這條SIP Trunk的狀態,如下:

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

接下來這一節,我們集中精力講述在語音網關側的配置,這次我會選用Direct Routing的認證網關之一:Ribbon SWe Lite 進行配置 (如何安裝? 請參閱文章https://blog.51cto.com/scnbwy/2385961 , 安裝過程非常簡單,若需要在本地安裝的話,可聯繫我取得鏡像)

其中的內容包括建立語音網關至Phone System的SIP Trunk,信令組,語音路由,轉換規則等,但讓我們先來回顧一下Teams Voice的整個架構及前置條件準備:
(我始終認爲集成系統的架構主導着具體配置,而具體配置只不過爲系統架構服務而已,不瞭解整體架構只會永遠的迷路)

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

再一次回顧一下前置條件:
1) 權限與管理員準備:O365管理員/Teams管理員;SBC管理員;本地Skype管理員;網絡管理員;DNS/CA管理員;
2) 許可準備:E3+Phone System Lic or E5 lic; SBC中必要的SIP Lic;;
3) 連接到SFB Online Powershell;
4) 連接到Office 365 Powershell;
5) 已經在O365註冊了,並已激活的公司域名;
6) 準備好用於SBC的公網IP與公網FQDN,並做好了公網DNS A記錄;
7) 準備好含SBC FQDN的公網證書;
8) 已經製作好相關的防火牆規則,同時網絡管理員確認正確;
9) 使用了認證的SBC,並已升級至最新的固件版本;
10) 若對安全有更好的要求,可以在SBC中配置ACL;

現在我們需要用到第6到第10點的條件準備了,都準備好了嗎?
然後大致的整體架構圖就會長這樣子:
1) Teams Audio Call通過Teams送給Phone System
2) Phone System與本地語音網關建立SIP Trunk(tls), 即所謂的MS Direct Routing
3) Phone System就可以把Teams Audio Call送到本地語音網關
4) 語音網關再對接PSTN網絡之後,就可以實現語音的落地了

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

I. 首先導入公網證書到SBC當中

在之前的章節中,我們已經申請完公網證書,並取得了cer後綴的證書文件了,現在把它導入到當時您生成CSR的電腦當中,目的是爲了拿到證書的私鑰 Private Key.

打開MMC, 並按以下圖片打開電腦的證書管理控制檯:

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

按如下圖導入從公網證書頒發機構申請下來的證書(後綴名爲cer的證書):

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

導入成功後,你會在證書的圖標上面看到一把小鑰匙,即表明我們導入的證書是帶有私鑰的:

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

最後按如下方法把帶有私鑰的公網證書導出,以供後續導入到SBC當中:

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

最後我們還要導出所有的根證書與中間頒發機構的證書以base64的格式導出,
(到此爲止,如果同學們對數字證書加密體系不熟悉的話,可以參考這文章:https://blog.51cto.com/ucworld/434901,文中講的是數字證書的原理,那麼公網證書也是一樣的,需要兩種證書組成一條證書鏈(根證書+中級證書+自己的數字證書)),

如下例子說明了證書的其中一個重要作用:

經過4年的學習,我們終於畢業了。表明我們畢業的東西除了很多很多之外,其中一個就是我們有了一個紅色的小本本-畢業證。在我們面試工作的時候,我們就會把畢業證展示給對方,並加上一句,你不相信我的能力,但是你應該相信這個學校吧。於是,他點點頭說,你畢業於這所名牌學校,應該能力可以,那就接受你吧,於是我們就開始工作了。另外一個例子就是:還有許多個人和企業都信任合法的駕駛證或護照。這是因爲他們都信任頒發這些證件的同一機構--政府,因而他們也就信任這些證件。

所以如下圖需要導出兩張證書,最頂端的那張爲根證書,第二張爲中間證書頒發機構的證書;
按之前的方法把它們導出,備用。

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

打開網關的管理界面,導入根證書與中間頒發機構的證書到SBC當中:

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

打開之前導出的公網根證書,並導入,如下:

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

最後導入所購買的公網證書到SBC當中,檢查,完成

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

最後,刷新SBC管理界面即可發現代表安全的“小綠鎖”出現了:

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

II. 導入公網根證書:Baltimore
接下來,我們需要添加微軟的根證書到SBC 以確保SBC信任來自MS Direct Routing的數據。因爲MS Direct Routing所使用的DNS域名爲sip.pstnhub.microsoft.com 便可以推斷出其所使用的根證書爲Baltimore根證書

下載https://cacert.omniroot.com/bc2025.pem,最後按之前方法導入到SBC當中

附:根證書信息:
Baltimore Cyber Baltimore CyberTrust Root with Serial Number: 02 00 00 b9 and SHA
fingerprint: d4:de:20:d0:5e:66:fc: 53:fe:1a:50:88:2c:78:db:28:52:ca:e4:74

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

最後完成了證書的導入到SBC的工作之後,就可以開始配置語音網關了。

III. 配置Node-Level Settings
下圖的四個信息一定要寫對,包括主機名,DNS(一定要能解釋到公網DNS),時區與時間服務器

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

IV. 配置Node Interface
檢查我們用於映射到公網的物理網卡

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

V. 配置SIP Profile
接下來這一步很重要,通過配置SIP Profile可以讓SBC在SIP消息頭中帶有SBC FQDN的信息,讓MS Phone System可以在公網中找到SBC,並向它發送回包。

Session Times: Enable
FQDN in From Header: Static
FQDN in Contact Header: Static
Static Host: teams.xxxx.com 即SBC的FQDN
Origin Field Username: teams.xxxx.com 即SBC的FQDN

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

還簡單的方法是直接把PSTN Gateway FQDN配置在Domain下面,這樣就不用做SIP Profile配置了,特別是一臺網關對應多個租戶的情況下,如下解釋:

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

VI. 配置SBC TLS Profile
因爲整個Direct Routing的對接過程需要加密,所以需配置一個Phone System TLS Profile, 稍後要使用:

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

VII. 配置Media Crypto Profile
接下來配置SBC與Phone System之間的媒體流加密機制,統一使用AES_CM_128_HMAC_SHA1_80,如下圖

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

VIII. 配置Media List
接着,配置一個媒體列表用於告訴SIP Trunk(Direct Routing) 所使用的媒體編碼與加密類型的:
這裏就需要用到剛剛我們配置的Media Crypto Profile了

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

IX. 配置SIP Server Table
按照如下配置,創建一個SIP Server Table, 並增加三臺Phone System服務器:sip.pstnhub.microsoft.com;sip2.pstnhub.microsoft.com;sip3.pstnhub.microsoft.com

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

X. 配置號碼轉換規則 Transformation Rules
然後到這裏爲止,有必要講一講Ribbon SWe Lite/SBC1k/SBC2k的一些基本的呼叫流程/工作原理了,分爲三大塊:信令組Signaling Group; 呼叫路由表 Call Routing Table; 號碼轉換規則 Transformation Table;

Teams呼叫來到了語音網關之後是如何被處理,如何被路由的呢?這樣都反映在下面的圖片裏面,而且也被反映在接下來的配置裏面,具體的流向如下:
1) 在語音網關裏面會建立兩個信令組,分別爲Teams信令組與PSTN信令組。它的作用就是根據來源IP,端口號,協議(如:52.114.7.24:5061 TLS)來選擇不同的信令組。我的理解就是把對應的信令組激活。
2) 當激活了Teams信令組後,會選擇對應的呼叫路由表(如:From Teams 的路由表)
3) 呼叫進入了From Teams路由表之後,後面還有多個呼叫路由的條目/子路由(如:To PSTN), 在子路由裏面會指定呼叫的下一跳信令組是哪裏(從命名可知下一條SG爲PSTN信令組)
4) 現在問題來了,憑什麼條件可以執行子路由呢?這裏有個前提條件就是呼叫必須符合號碼轉換規則Transformation Table裏面規則才能會被路由的,不然就再去匹配下一條子路由,直到匹配爲止(即你的主叫是什麼,被叫是什麼都需要規定好)
5) 在匹配的同時,Transformation還要做一個工作,就是主被叫的號碼轉換(爲什麼?因爲Teams Phone System使用E.164標準,但中國的PSTN撥號計劃不使用E.164, 這樣的話,我們就需要把 E.164前面的“+”號給去掉,同時對號碼做點小修改了)
6) 第四步與第五步完成後,信令送回給路由組處理,並送給下一跳信令組。
7) 信令送給目的的信令給(如:PSTN信令組),整個流程完成。

那麼,流程與配置是反着來的,所以我們首先要開始配置號碼轉換規則Transformation Table

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

理解好了整個流程,就可以開始配置號碼轉換規則,首先建立兩條空的規則:
1) From PSTN to Teams
2) From Teams to PSTN
然後纔開始具體寫裏面的規則,以下做了一條簡單的正則轉換:把被叫的“+”號去掉

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

因爲在上一節中,我們已經把Teams的主叫與被叫都定義爲E164標準的,例如當你呼叫一個上海的號碼時,會是這樣的:
Teams LineURI - 主叫:+86 21 87654321
被撥打的號碼 - 被叫:+86 21 32132132
但出局到PSTN時,運營商網絡是不認這種格式的,所以需要做一些主被叫轉換,列舉如下:

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

XI. 配置語音路由 Call Route Table
有了號碼轉換規則,接着開始配置語音路由 1)From Teams 2)From PSTN
Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

在From Teams語音路由裏面配置子路由 To PSTN, 同時指定匹配的Transformation Rule與下一跳的信令組SG, 如下圖:

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

同理,在From PSTN語音路由裏面配置子路由 To Teams, 同時指定匹配的Transformation Rule與下一跳的信令組SG, 如下圖:

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

XII. 配置SIP Trunk: SBC >>> Phone System

因爲SIP Trunk(Direct Routing)是雙向的,所以以下步驟是關鍵:
配置SBC信令組SIP Signaling Group, 它會監聽來自MS Phone System的的數據流量,並且向Phone System發送數據,如下圖配置信令組:

1) 在SG中指定當這條信令組被激活後的語音路由;因爲現在是配置Teams信令組,所以選擇From Teams (有沒有發現命名對於配置是多麼的重要)
2) 在SIP Profiles裏面選擇 “Teams Direct Routing”
3) 在SIP Server Table選擇之前創建的Teams Phone System
4) 選擇信令與媒體的私網IP,一般爲SBC的IP
5) 輸入SBC對應的公網IP
6) 進行NAT, 把SBC發佈到外網
7) 選擇Teams信令組的端口,協議,TLS配置
8) 輸入聯盟IP地址,爲Teams Phone System的幾個公網IP

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

D. 如何使用SIP Option 測試

至此,本地的SBC與O365 Phone System對接的SIP trunk就做好了,如下圖可以看出與O365 Phone System的信令組狀態通了,同時在Counters裏面可以看到SIP Option有正常的Incoming & Outgoing與2xx Incoming & Outgoing, 說明與Phone System的狀態檢測正常通過了,那麼至少可以證明SBC與Phone System有數據交互,並且一旦信令能落地到SBC,基本上語音方面沒有什麼是做不到的。

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

Phone System與SBC正是使用SIP Option這種心跳檢測機制來判斷鏈路的狀態的:

Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

6. 實際測試結果

以下是我在測試環境中用軟終端Eyebeam連接SBC, 然後Eyebeam呼叫Teams的效果:
Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

Teams呼叫Eyebeam的效果:
Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

當然,最重要的還是Teams與手機通訊啦,如下:
Microsoft Teams Voice語音落地系列-5 實戰: Sonus語音網關配置

最後,本系列終於寫完了,主要就是實現到使用Teams語音落地的本地語音網關,然後我們就可以像Skype那樣打電話了,這個功能點很重要,主要是當我們從Skype for Business上面遷移到Teams的時候,我們的語音也必須確保在Teams上面能用,特別是在中國,UC系統無法撥打外線是比較難以想像的。事實在本系列雖然是Step by Step地講述每一個配置步驟,但是也只能起到拋磚引玉的作用,也只能把簡單的配置路徑點明一下,實際的項目當中會有更多其它的東西需要考慮的,感謝各位。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章