SIP防火墻基礎(chǔ)知識及穿越的匯總
術(shù)語和基礎(chǔ)知識
防火墻
一個防火墻限制私人內(nèi)網(wǎng)和公眾因特網(wǎng)之間的通訊,典型地防火墻就是丟棄那些它認(rèn)為未經(jīng)許可的數(shù)據(jù)包。在數(shù)據(jù)包穿越一個防火墻時,它檢查但是不修改包里的 IP地址和TCP/ UDP 端口信息。
網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)
當(dāng)數(shù)據(jù)包穿過NAT時,NAT不僅檢查同時也修改數(shù)據(jù)的包頭信息,并且允許更多的在NAT后的主機分享少數(shù)公網(wǎng)IP地址(通常只有1個)。
NAT的類型和說明
NAT通常有2種主要類型
- Basic Nat
一個Basic NAT映射一個內(nèi)在的私有IP地址到一個公網(wǎng)IP地址,但當(dāng)數(shù)據(jù)包穿過NAT時,不更換它的TCP/UDP端口號。Basic Nat通常是只用在一些具備公共IP地址池的NAT上,通過它可以地址綁定,即代表一臺內(nèi)部主機。 - Network Address/Port Translator (NAPT)
但是最通常的,當(dāng)數(shù)據(jù)包穿過NAT時,一個NAPT檢查并修改它的TCP/UDP端口,那么就可以允許多臺內(nèi)網(wǎng)主機同時共享一個單獨的公網(wǎng)IP地址了。
關(guān)于 NAT 的分類和術(shù)語,[NAT-TRAD] 和 [NAT-TERM]中有更多的信息。那些將來分類的NAPT的附加術(shù)語在較近的工作[STUN]中被定義。當(dāng)一個內(nèi)網(wǎng)的主機經(jīng)過一個NAT和外部進行TCP或者UDP連接的期間,NAPT分配一個公網(wǎng)IP 住址和端口,以便來自外部終端響應(yīng)的數(shù)據(jù)包能被NAPT接收,解釋,并轉(zhuǎn)發(fā)給內(nèi)網(wǎng)的主機。這個結(jié)果是由 NAPT 建立一個(私有IP地址,私有端口)和(公網(wǎng)IP地址,公網(wǎng)端口)之間的端口綁定實現(xiàn)的。在這個期間NAPT將為綁定的端口執(zhí)行地址翻譯。一個關(guān)于P2P應(yīng)用的問題是,當(dāng)一個內(nèi)部主機從一個私有IP,私有端口同時與外網(wǎng)上的多臺不同的主機建立多個連接時,NAT是如何運作的。
Cone NAT
建立一個端口,把一個(私有IP,私有端口)和(公用IP,公用端口)綁定后,對于以后來自同一私有IP和端口號的應(yīng)用連接,cone NAT將重復(fù)使用這個綁定的端口,只要有一個連接會話,這個綁定端口就會保持激活狀態(tài)。
例如,下面圖表中,推想一下客戶端A通過一個cone NAT同時建立2個外部會話,從同樣的內(nèi)部網(wǎng)絡(luò)終端(10.0.0.1:1234)到2個不同的外部服務(wù)器,S1和S2。cone NAT只會分配一個公用的終端,155.99.25.11:62000,都會到兩個會話,并在地址轉(zhuǎn)換期間確保客戶端端口的一致。Basic NAT和防火墻不修改通過的數(shù)據(jù)包中的端口號,這些類型可以被認(rèn)為是一種特殊的Cone Nat。
?
Symmetric NAT
??? 對稱的NAT(Symmetric NAT),與Cone NAT有明顯差別,在所有會話期間中不會保持綁定(私有IP,私有端口)和(公共IP,公共端口)的端口不變。相反,它會為每個新對話重新分配一個新的公共端口。
??? 舉例來說,設(shè)想客戶A從同樣端口上要發(fā)起兩個外部對話,一個和S1連接,另一個和S2連接。Symmetric NAT可能會為第一個會話分配一個公共的端點 155.99.25.11:62000,而為第二個會話分配一個不同的公共端點155.99.25.11:62001。為了地址轉(zhuǎn)換,NAT可以區(qū)分這兩個會話傳輸?shù)哪康?,因為和這些會話有關(guān)的外部端點(就是S1、S2)是不同的,甚至在通過地址轉(zhuǎn)換時丟失了客戶端的目的標(biāo)示。(即丟了S1、S2的IP地址NAT也知道如何區(qū)分,我是這么理解的,可能有誤)。
Cone NAT和Symmetric NAT之間的比較與TCP/UDP之間的比較有些類似。(TCP需要綁定,UDP不需要,Cone NAT需要綁定,Symmetric NAT不需要)
按照NAT從已知的公共IP,公共端口接收的數(shù)據(jù)限制,Cone NAT可以更進一步的進行分類。這種分類通常都是UDP連接的,因為NAT和防火墻會拒絕任何無條件的TCP連接,除非明確地以別的方式配置。
Full Cone NAT
??? 在給一個新的外部會話建立了一個公共/私有的端口綁定后,一個full cone NAT就可以通過這個公共端口從公網(wǎng)上的任何外部端點接收數(shù)據(jù)通訊了。Full cone NAT也常常叫做"混合"NAT。
Restricted Cone NAT
??? 當(dāng)網(wǎng)絡(luò)主機發(fā)一個或者幾個數(shù)據(jù)包給外部主機后,一個受限的cone NAT(Restricted Cone NAT)才會接受來自這個外部(源)IP地址的數(shù)據(jù)包。受限的cone NAT有效的運用了防火墻的原理,拒絕沒有要求的數(shù)據(jù),只接收已知道的外部IP地址傳來的數(shù)據(jù)。(偏開原文,大意就是網(wǎng)絡(luò)主機需要發(fā)一個請求給外部IP地址要求要數(shù)據(jù),NAT才會接收這個外部IP地址傳來的數(shù)據(jù),不然不接收。)
Port-Restricted Cone NAT
??? 一個端口受限的cone NAT(Port-Restricted Cone NAT),也是這樣,只接收那些網(wǎng)絡(luò)主機曾經(jīng)發(fā)給一個外部IP地址和端口相匹配的數(shù)據(jù)。一個Port-Restricted cone NAT可以和對稱 NAT一樣(symmetric NAT),保護內(nèi)部節(jié)點不接收未被請求的數(shù)據(jù)包,但是保持一個私有端口在連接過程中不變。(即不僅請求的IP和外部發(fā)來數(shù)據(jù)的IP是一樣的,PORT也要是一樣,這樣才接收數(shù)據(jù)。對稱NAT也有這個效果,但這種cone NAT保持端口不變,而對稱NAT要變端口號的)。由此可見,Symmetric Cone條件最嚴(yán)格,Partial/Restricted Cone次之,F(xiàn)ull Cone條件最寬松。
Firewall的基本策略:?
?? ?Firewall會判斷所有的包是來自內(nèi)部(Inside)還是外部(Outside)。?
?? ?允許所有來自inside的包發(fā)出去。?
?? ?允許來自O(shè)utside的包發(fā)進來,但這個連接必須是由Inside發(fā)起的。?
?? ?禁止所有連接由Outside發(fā)起的包發(fā)進來。?
?? ?firewall會允許幾個信任的outside主機,他們可以發(fā)起建立連接,并發(fā)包進來。
所有NAT和Firewall都是對于TCP/IP層以下進行處理和過濾的,而SIP應(yīng)用的地址是在應(yīng)用層。所以必須采用其他的途徑來解決這一問題。
解決方案
針對不同的NAT類型,可以有不同的解決方案。
1.客戶端解決方案
客戶端解決方案主要包括:STUN(simpletraversalof UDP through NAT)、TURN(Traversal Using Relay NAT)、ICE(Interactive Connectivity Establishment)。
STUN是一個輕量級的協(xié)議,允許應(yīng)用程序探測當(dāng)前在它們與公網(wǎng)之間是否存在NAT、防火墻以及它們的類型,并且具備能夠探測到NAT所分配的公網(wǎng)地址和端口的能力。STUN協(xié)議中定義了兩個實體:STUNClient和STUNServer。STUNClient嵌入在終端系統(tǒng)的應(yīng)用程序中,比如SIP UA,它向STUN Server發(fā)送請求;STUN Server接收請求并產(chǎn)生STUN響應(yīng),它是無狀態(tài)的。SIP終端在建立呼叫之前,通過向處在公網(wǎng)上的STUN服務(wù)器發(fā)送STUN請求,得到信令和媒體流在NAT上的映射地址,并且將這些地址填寫到SIP消息中的Via、Contact字段以及SDP中的媒體流傳輸?shù)刂?,替代原有的私有地址。但是,STUN只能工作在全通NAT、地址限制NAT以及端口限制NAT的網(wǎng)絡(luò)環(huán)境下,在對稱性NAT的情況下,SIP UA通過STUN請求得到的映射地址是無效的。
TURN協(xié)議在語法和操作上均與STUN相似,其優(yōu)點是提供了對對稱性NAT的穿越。處在公網(wǎng)的TURN服務(wù)器為客戶端提供本身的一個外部IP地址和端口,并且負(fù)責(zé)中轉(zhuǎn)通信雙方的媒體流。TURN協(xié)議雖然支持所有類型的NAT穿越,但是它需要中轉(zhuǎn)通信雙方的媒體流,使得媒體流在傳輸過程中增加了一跳,不可避免地增加了包的延遲和丟包的可能性,而且完全使用TURN方式需要大量的TURN服務(wù)器,在有大量用戶時,TURN服務(wù)器會成為系統(tǒng)瓶頸,因此我們應(yīng)該盡量避免使用這種方法。目前,TURN的使用越來越少。
ICE目前已經(jīng)被推認(rèn)為在非對稱性NAT環(huán)境下首選的客戶端解決方案。ICE本身是一種方法,它利用STUN,TURN等任何符合UNSAF的協(xié)議來提供一個通用的解決方案。
2.路由邊界解決方案
路由邊界解決方案主要包括:應(yīng)用層網(wǎng)關(guān)ALG、通用即插即用UPnP、中間盒通信MIDCOM。
應(yīng)用層網(wǎng)關(guān)可以設(shè)計成能夠識別指定IP協(xié)議(比如H.323和SIP協(xié)議)的防火墻,也被叫做ALGFirewall。它不是簡單地察看包頭信息來決定數(shù)據(jù)包是否可以通過,而是更深層的分析數(shù)據(jù)包負(fù)載內(nèi)的數(shù)據(jù),也就是應(yīng)用層的數(shù)據(jù)。H.323和SIP協(xié)議都在負(fù)載中放了重要的控制信息,例如語音和視頻終端使用哪一個數(shù)據(jù)端口來接收對方終端的語音和視頻數(shù)據(jù)。通過分析哪一個端口需要打開,防火墻動態(tài)地打開那些被應(yīng)用的端口,而所有別的端口依然安全地保持關(guān)閉狀態(tài)。如果網(wǎng)絡(luò)中有多層防火墻和NAT,則在呼叫路徑上的每個防火墻都必須被升級以支持ALG功能。
UPnP是為了在電腦、智能設(shè)備和智能家電之間建立無所不在的網(wǎng)絡(luò)連接而提出的協(xié)議體系。由微軟公司發(fā)起,在1999年成立了一個開放的產(chǎn)業(yè)聯(lián)盟UPnPForum,制訂了一系列標(biāo)準(zhǔn)。其中的IGD(internetgatewaydevice)工作委員會提出了穿透NAT的解決方案,很多NAT設(shè)備制造商已經(jīng)在新產(chǎn)品中支持這個協(xié)議。它以Internet 標(biāo)準(zhǔn)和技術(shù)(例如,TCP/IP、HTTP和XML)為基礎(chǔ),使這樣的設(shè)備彼此可自動連接和協(xié)同工作,從而使網(wǎng)絡(luò)(尤其是家庭網(wǎng)絡(luò))對更多的人成為可能。
MIDCOM是一種新出現(xiàn)的概念,其目的是使用第三方應(yīng)用程序(包括硬件設(shè)備)來控制FireWall/NAT設(shè)備動態(tài)地決定安全策略,以適應(yīng)VoIP業(yè)務(wù)。第三方的應(yīng)用程序使用MIDCOM定義的協(xié)議(或私有協(xié)議)控制FireWall/NAT設(shè)備,根據(jù)“MultiMediaoverIP”的需要動態(tài)地打開呼叫信令、媒體流互通的IP地址和端口號,這樣Firewall/NAT系統(tǒng)就無須嵌入過多的對“MultiMediaover IP”協(xié)議分析、解析的功能,而只需要維持已經(jīng)存在的安全策略及轉(zhuǎn)發(fā)機制,從而實現(xiàn)Firewall/NAT設(shè)備的穿透。
3.服務(wù)器端解決方案
服務(wù)器端解決方案主要包括:B2BUA(Back-to-BackUserAgent)、服務(wù)器端RTP中繼。
B2BUA是一個接收請求并充當(dāng)UAS處理請求的邏輯實體,主要是通過兩個UA以Back-to-Back的工作模式控制經(jīng)過它的呼叫。B2BUA與SIP代理服務(wù)器不同,B2BUA可以接收呼叫,并能對其進行修改,以其它形式代表發(fā)起呼叫的UA向終端目標(biāo)發(fā)起呼叫,并能充當(dāng)呼叫雙方的媒體協(xié)商代表或?qū)ζ溥M行監(jiān)控管理。B2BUA可以對經(jīng)過它的來自于私網(wǎng)的呼叫進行處理完成NAT的穿越。為適應(yīng)所有類型NAT的環(huán)境,B2BUA也需要做媒體流的中介,因此,對于通信雙方來說,呼叫控制信令和媒體流在傳輸過程中均增加了一跳,隨著用戶的增加,B2BUA將成為系統(tǒng)瓶頸。
服務(wù)器端RTP中繼的方式相對B2BUA有所改進,它將B2BUA所完成的功能集成到了SIP代理服務(wù)器上,由SIP系統(tǒng)中的代理服務(wù)器完成信令部分的NAT處理修改,另外增設(shè)獨立運行的媒體中繼服務(wù)器來完成媒體流的中繼。也就是說,將信令部分的NAT穿越和媒體流部分的NAT穿越分離開來,由不同的功能組件完成。服務(wù)器端RTP中繼方式相對B2BUA來說,具有更好的可擴展性,但由于在發(fā)展期,對于軟硬件支持方面來說,不是很成熟。
結(jié)論:
?? ?客戶端解決方案,雖然無需對現(xiàn)有NAT做任何改動,但對SIPUA的要求較高,需要支持相應(yīng)的協(xié)議,而且到目前為止還無法解決通信雙方均處在對稱性NAT的情況;
?? ?路由邊界的各種解決方案,均需要對NAT設(shè)備升級,但目前網(wǎng)絡(luò)實際已部署了大量的不支持相關(guān)特性的NAT設(shè)備,因而這種方式可行性較差;
?? ?服務(wù)器端解決方案,通過中繼RTP數(shù)據(jù)包來解決所有類型NAT的穿越,缺點就是增加了包的時延和丟包的可能性。
具體采用哪種方式解決SIP 防火墻問題需要從以下角度進行綜合考慮:
???? (1)升級要求:我們只能接受小規(guī)模的改造,所以只考慮對服務(wù)器端的改造,在極小一部分用戶這邊考慮一些客戶端改造,不考慮更換邊緣設(shè)備的解決方案;
???? (2)網(wǎng)絡(luò)業(yè)務(wù)量:我們的網(wǎng)絡(luò)業(yè)務(wù)量很大,所以要考慮好大業(yè)務(wù)量下的問題;
???? (3)語音質(zhì)量:此解決方案是否影響語音質(zhì)量,增加時延或丟包率;
???? (4)運營投資:運營是否隨著規(guī)模增大,需要做大量投資;
???? (5)客戶投資:客戶是否需要做投資;
???? (6)兼容性:此解決方案是否只能在特定環(huán)境下生效,是否可以支持各種應(yīng)用方案,是否可以穿越各種NAT和防火墻;
???? (7)擴展性:此方案是否支持大規(guī)模應(yīng)用。
接觸到的所有產(chǎn)品情況
?? ?PortaSIP內(nèi)置B2BUA,可以滿足我們的要求;
?? ?Cisco SIP Proxy Server無支持,需要自己架設(shè)STUN以及Outbound Proxy服務(wù)器,是否能夠滿足需要調(diào)研;
?? ?Nortel需要加Nortel專有的RTP proxy(使用RTP中繼方式實現(xiàn)),滿足我們的要求;
?? ?華為的解決方案是使用ALG防火墻,滿足我們的要求,但需要做一些邊緣設(shè)備的升級;
?? ?我們自己的試驗平臺,只能使用STUN或者Outbound Proxy。
?? ?SER,可以在PortaOne網(wǎng)站免費下載PortaOne nathelper RTP proxy來解決這個問題(使用RTP中繼方式實現(xiàn))。
非常好我支持^.^
(1) 100%
不好我反對
(0) 0%
相關(guān)閱讀:
- [電子說] 中國統(tǒng)一威脅管理硬件技術(shù)評估報告顯示:華為防火墻唯一8大維度五星評價, 2023-10-24
- [汽車電子] 如何保護自動駕駛系統(tǒng)的數(shù)據(jù)安全? 2023-10-18
- [安全設(shè)備/系統(tǒng)] 汽車網(wǎng)絡(luò)安全機制關(guān)鍵技術(shù) 2023-10-18
- [電子說] server2019服務(wù)器搭建的方法步驟 2023-10-18
- [電子說] 不用Nginx,只用Tomcat的Http請求流程 2023-10-17
- [嵌入式技術(shù)] Linux系統(tǒng)firewalld防火墻實戰(zhàn)指南 2023-10-16
- [電子說] Web應(yīng)用防火墻的性能優(yōu)化技術(shù) 2023-10-14
- [電子說] 如何利用Web應(yīng)用防火墻應(yīng)對未知威脅 2023-10-14
( 發(fā)表人:admin )