一 前言
企業(yè)為了確保網(wǎng)絡(luò)安全,普遍部署各種防火墻,作為邊緣和隔離設(shè)備,將企業(yè)的信任和非信任網(wǎng)絡(luò)(一般外網(wǎng)非信任,內(nèi)網(wǎng)為信任)分隔開來,避免直接訪問。同時,防火墻兼具NAT功能,隱藏內(nèi)網(wǎng)并代理內(nèi)網(wǎng)對外網(wǎng)的訪問。
由于防火墻的存在,部署SBC變得較為復(fù)雜。某些情況下還需要防火墻的配合,才能夠完成SIP信令和語音流的防火墻/NAT穿透。
就防火墻和SBC的位置關(guān)系,一般分成兩種模式:近端防火墻,也就是SBC在防火墻內(nèi),對接的設(shè)備在近端防火墻外或者在遠端防火墻內(nèi);遠端防火墻,也就是SBC在防火墻外,對接的設(shè)備在防火墻內(nèi)。
這兩種模式下,毅航互聯(lián)SBC均可以完成信令和媒體的正確穿透。
二 方案簡介
1 概述
毅航互聯(lián)SBC充分考慮了近端和遠端防火墻對信令和媒體的影響。在信令層面通過對From/To/Contact/rport/SDP等IP地址進行處理,反映出實際的對接地址,避免信令不通,摘機超時,掛機掛不斷等問題。
同時,SBC支持OPTIONS/REGISTER等心跳模式(接收或者發(fā)送),用于保持防火墻的session(;睿,保證防火墻/NAT的端口可用和不變化。
媒體通過識別遠端的IP/PORT,然后向這個IP/PORT發(fā)送媒體包的方法,達到各種NAT情況的穿透。
合理的防火墻穿透方式,防火墻/NAT有各種模式和對應(yīng)的各種穿透方式。但是,較為合理的穿透方式是從防火墻外網(wǎng)IP/PORT收到包,回應(yīng)或者主動發(fā)的包再送回這個IP/PORT。
示意圖如下圖:
2 防火墻SIP ALG
由于現(xiàn)在的防火墻普遍內(nèi)置SIP ALG(應(yīng)用層代理),此功能會對SIP信令和媒體產(chǎn)生很大的影響。但是,由于ALG的實現(xiàn)一般不完善,很容易使得信令和數(shù)據(jù)不通和單通等各種問題,導(dǎo)致各種不可預(yù)測的問題,所以需要將防火墻的SIP ALG功能關(guān)閉。
毅航互聯(lián)在大量的工程支持中,SIP ALG基本上都會導(dǎo)致問題。建議將此作為一個部署的前置檢查項,避免在聯(lián)調(diào)時再檢查,會耗費比較多的時間。
3 遠端防火墻
當(dāng)SBC對接的設(shè)備處于防火墻之內(nèi),SBC處于防火墻外時,就構(gòu)成了遠端防火墻模式。比如:SBC放公網(wǎng),代理內(nèi)網(wǎng)的座席注冊;或者對接內(nèi)網(wǎng)的PBX等等。
由于NAT的存在,SBC看到的SIP信令信息和媒體的信息均和原始的信令不同,必須采用一些特別的處理方式來應(yīng)對這種情況。
邏輯結(jié)構(gòu)
遠端防火墻的示意結(jié)構(gòu)如下圖:
注意:
圖中用單層防火墻做示意,實際上這種模式可以支持多層防火墻。
SBC可能在防火墻內(nèi)。這種模式放到近端防火墻做討論,不影響遠端防火墻的邏輯結(jié)構(gòu)。
一般將防火墻內(nèi)的設(shè)備作為客戶端,毅航互聯(lián)SBC作為服務(wù)端,便于建立和維持互通。
信令配置
為了自動的遠端防火墻穿透,一般將防火墻內(nèi)部的設(shè)備(座席、PBX等)作為客戶端,而防火墻外部的SBC作為服務(wù)端。
由客戶端向服務(wù)器發(fā)起周期性的心跳(比如:注冊REGISTER、OPTIONS等),周期時間控制在120s以內(nèi),這樣就可以維持防火墻的session,達到保活的目的(也就是防火墻不關(guān)閉外網(wǎng)的端口,SBC可以從這個端口向內(nèi)網(wǎng)設(shè)備主動發(fā)信令消息)。
各種內(nèi)網(wǎng)設(shè)備均有自己不同的配置界面,一般都可以找到相應(yīng)的注冊和OPTIONS的配置。找到相應(yīng)的配置后,按照要求進行配置后即可。SBC側(cè)無需對信令做特別配置。
對于像PBX等設(shè)備,可能不能夠配置為客戶端,此時需要在防火墻上做映射,將PBX的信令I(lǐng)P/PORT映射到防火墻的外網(wǎng),這樣SBC才能夠訪問。
毅航SBC支持SIP在TCP協(xié)議上傳輸,如果UDP穿透存在難以配置的情況,也可以通過采用TCP協(xié)議來完成信令的穿透。采用TCP協(xié)議時,建議采用永久連接,避免連接斷開而導(dǎo)致防火墻的阻斷。
信令穿透
內(nèi)網(wǎng)設(shè)備無需做特殊的協(xié)議修改,所有的穿透由SBC完成。
由于內(nèi)網(wǎng)設(shè)備配置的是內(nèi)網(wǎng)IP地址,經(jīng)過防火墻后,這些地址對于SBC來講是無效的(無法訪問),如果根據(jù)這些地址作為后續(xù)信令的傳輸?shù)刂罚瑢o法通信。
比如:發(fā)送掛機BYE SIP信令時,遠端地址來自于內(nèi)網(wǎng)設(shè)備 INVITE SIP信令Contact頭域中的IP地址和端口。此時肯定是內(nèi)網(wǎng)的IP地址,就會導(dǎo)致BYE SIP信令無法觸達內(nèi)網(wǎng)設(shè)備,導(dǎo)致不能夠掛機。
又比如:SBC會根據(jù)INVITE SIP信令中的From/To/Contact等頭域中的IP地址校驗有效性,或者進行中繼組的匹配。穿透模塊會用TCP/IP協(xié)議棧的真實IP/PORT替換相應(yīng)的域,達到有效校驗或者匹配的目的。
毅航SBC會用從網(wǎng)絡(luò)協(xié)議棧收到的真實IP/PORT替換上述的關(guān)鍵頭域中的IP/PORT等信息,滿足安全和中繼組識別等要求。并且將給內(nèi)網(wǎng)設(shè)備的SIP信令送給上述真實的IP/PORT,保證了信令可以觸達內(nèi)網(wǎng)設(shè)備。
媒體穿透
和信令類似,SBC在收到內(nèi)網(wǎng)設(shè)備發(fā)送的RTP/RTCP包后,識別出真實的IP/PORT,然后將送給內(nèi)網(wǎng)設(shè)備的RTP/RTCP包轉(zhuǎn)發(fā)到此IP/PORT,完成穿透。
毅航SBC的媒體引擎有多種模式用于幫助媒體的穿透和適應(yīng)變化:
斷流檢測
在一定時間內(nèi)沒有收到對端的RTP包視為斷流,將觸發(fā)告警,用于主動掛機或者reinvite重協(xié)商。
NAT等待
在未收到對端包,端點學(xué)習(xí)未完成的情況下,不執(zhí)行向這個端點的包轉(zhuǎn)發(fā)。
非對稱端點
只接受SDP中地址的包,關(guān)閉遠端端點學(xué)習(xí)功能。
嚴(yán)格端點地址
執(zhí)行一次遠端端點學(xué)習(xí),識別出遠端端點后,將只轉(zhuǎn)發(fā)此端點的包。
端點開放模式
轉(zhuǎn)發(fā)過程中會重學(xué)習(xí),可能導(dǎo)致遠端端點的切換。
4 近端防火墻
當(dāng)SBC處于防火墻之內(nèi)時,就構(gòu)成了近端防火墻模式。由于近端防火墻/NAT的存在,防火墻和SBC均需要做一些配置才能夠完成穿透功能。
邏輯結(jié)構(gòu)
近端防火墻的示意結(jié)構(gòu)如下圖:
如下圖,外部網(wǎng)絡(luò)處于防火墻內(nèi)部也是比較常見的場景,此情況也歸類為近端防火墻,要求是相同的。
注意:
近端防火墻盡量使單層防火墻,如果是多層防火墻,可能會涉及到每層防火墻的修改,導(dǎo)致維護上的問題。
遠端設(shè)備是否在防火墻內(nèi),不影響近端防火墻的邏輯結(jié)構(gòu)。
一般將毅航互聯(lián)SBC作為服務(wù)端,遠端設(shè)備作為客戶端,便于建立和維持互通。
防火墻配置
需要將SBC的地址映射到防火墻的外網(wǎng),并且可以只開放信令端口和媒體端口段。映射建議采用簡單的開端口模式(有些叫開服務(wù)),避免復(fù)雜的IP地址替換之類的策略,避免對原始數(shù)據(jù)的修改,從而影響穿透的效果。
注意:
防火墻開端口不修改防火墻的安全和過濾規(guī)則,不要降低防火墻的安全要求。
建議打開的SIP信令端口和SBC上配置的信令端口相同,減少問題查找時的轉(zhuǎn)換。
媒體端口需要開放一個端口段,缺省為40000~60000?梢愿鶕(jù)并發(fā)(一通音頻呼叫需要兩個UDP端口)量調(diào)整端口段的范圍,此值必須和SBC上的配置一致。
上述端口轉(zhuǎn)發(fā)的規(guī)則是一一對應(yīng)的。也就是防火墻40000端口收到包,需要轉(zhuǎn)發(fā)到SBC的40000端口,其他依次類推。
SBC信令配置
需除了在防火墻外網(wǎng)配置信令的IP和端口外,還需要在對接的SBC SIP棧上配置相應(yīng)的信息,用于在送給遠端設(shè)備的信令中反映出這種變化。要在SIP棧上面進行的配置如下圖:
SBC媒體配置
目前采用修改配置文件的方式,后續(xù)會在web上進行修改。
三 問題分析
日志分析
當(dāng)出現(xiàn)問題時,建議首先進行日志分析,確認SBC收到呼叫,并且動作正常。
抓包分析
由于在防火墻上抓包可能會比較困難,首先需要在SBC上進行抓包,分析呼叫流程是否正確,媒體流是否存在?
在SBC上確認正常后,就需要防火墻配合抓包,此時就需要防火墻對內(nèi)外網(wǎng)均抓包,查看問題是出在外網(wǎng)、內(nèi)網(wǎng)還是防火墻的轉(zhuǎn)發(fā)規(guī)則。