您當(dāng)前的位置是:  首頁 > 新聞 > 國內(nèi) >
 首頁 > 新聞 > 國內(nèi) >

融合通信之“NAT技術(shù)原理”(下)

2017-03-09 09:27:53   作者:   來源:CTI論壇   評論:0  點擊:


  融合通信產(chǎn)品是基于SIP協(xié)議實現(xiàn)的音視頻通信系統(tǒng),包括服務(wù)器、網(wǎng)關(guān)和終端產(chǎn)品。下面是融合通信產(chǎn)品在不同網(wǎng)絡(luò)環(huán)境中遇到的NAT問題及解決辦法:
  1.單一網(wǎng)絡(luò)環(huán)境
  如上圖,手機APP和IP話機通過SIP注冊消息,向服務(wù)器提供自身的IP地址,服務(wù)器將注冊地址保存起來,兩個終端互相通話沒有什么問題。
  2.  服務(wù)器處于公網(wǎng)環(huán)境
\
  NAT設(shè)備會將IP數(shù)據(jù)包頭的地址和端口,換成外網(wǎng)的地址和端口,但是服務(wù)器正常情況下采用的SIP注冊消息中攜帶的地址作為終端地址,此時兩個終端連注冊都無法成功,服務(wù)器在SIP注冊消息中獲取的是局域網(wǎng)IP地址,發(fā)出的200 OK無法抵達(dá)終端設(shè)備。
  這里涉及三個角色,有各自的辦法可解決NAT穿透問題:
  1)終端設(shè)備側(cè)
  采用STUN服務(wù),STUN的原理是:在公網(wǎng)上部署一個STUN服務(wù)器,位于NAT后面的客戶端設(shè)備向它發(fā)送一系列的UDP包先在NAT設(shè)備上“打洞”,STUN服務(wù)器取到UDP包的來源地址后,回送相關(guān)的消息告訴該客戶端它被映射的外網(wǎng)地址。使用STUN后,SIP消息的contact頭域中就可以直接填入外網(wǎng)地址。
\
  注意,STUN技術(shù)在對稱型NAT設(shè)備中是無能為力的,因為學(xué)習(xí)到的外網(wǎng)IP地址會失效,此時需要和TURN中繼服務(wù)配合使用。
  2)NAT設(shè)備側(cè)
  應(yīng)用層網(wǎng)關(guān)(ALG)是解決NAT對應(yīng)用層協(xié)議無感知的一個最常用方法,已經(jīng)被NAT設(shè)備廠商廣泛采用,通過感知應(yīng)用層協(xié)議,對報文深層的內(nèi)容進(jìn)行檢查,當(dāng)發(fā)現(xiàn)任何形式表達(dá)的IP地址和端口時,將會把這些信息同步轉(zhuǎn)換,并且為這個新連接創(chuàng)建一個附加的轉(zhuǎn)換表項。
\
  注意,NAT設(shè)備的ALG無法解決私有協(xié)議或加密協(xié)議的穿越問題。
  3)服務(wù)器側(cè)
  融合通信服務(wù)器通過開啟NAT檢測功能,內(nèi)含nat.auto是一個ACL,包含了RFC1918規(guī)定的私網(wǎng)地址,并去掉了本地網(wǎng)絡(luò)的地址。當(dāng)SIP終端注冊時,通過比較contact地址是否包含在此ACL中來判定該終端是否處于NAT背后,如果是那么它就把contact地址自動替換為SIP包的來源地址,信令就可以正常抵達(dá)。
\
  3. 服務(wù)器處于內(nèi)網(wǎng)NAT環(huán)境
  當(dāng)服務(wù)器處于內(nèi)網(wǎng)環(huán)境時,服務(wù)器的解決辦法有:STUN、直接配置外網(wǎng)地址,同時服務(wù)器還支持Upnp協(xié)議,需要NAT設(shè)備支持該協(xié)議并開啟,該協(xié)議允許應(yīng)用程序向NAT設(shè)備申請并管理內(nèi)外網(wǎng)地址、端口映射。
\
  之所以要配置端口轉(zhuǎn)發(fā),是因為NAT設(shè)備的特性決定了只能內(nèi)網(wǎng)主機接觸過的外網(wǎng)主機才能向內(nèi)發(fā)數(shù)據(jù),而融合通信系統(tǒng)首先發(fā)起注冊的是終端設(shè)備。
  4.服務(wù)器和客戶頓都處于NAT環(huán)境
  測試環(huán)境中很多都是這個網(wǎng)絡(luò)環(huán)境,但是實際部署的環(huán)境通常卻比較簡單。
\
  這樣的結(jié)構(gòu),將解決NAT穿透的問題主要交給了服務(wù)器側(cè),因為終端設(shè)備的種類多,無法讓所有終端都自行解決穿透問題。

專題