H.323簡介
現在常用的網絡會議軟件和網絡電話軟件采用的是國際電信聯盟(ITU-T)制定的H.323協議族,其中包括H.225,H.245,Q.931等,另外還有IETF制定的SIP(會話啟動協議)。SIP協議采用與http類似的文本命令形式,而且協議比較簡單,是未來網絡電話和即時通訊的方向。但由于H.323出現較早,已經有很多商業(yè)應用,比如微軟的NetMeeting采用的就是比較成熟的H.323,另外中國的電信企業(yè)實施IP電話時也傾向于采用H.323協議。所以H.323還將會在長時間內和SIP同時存在。
H.323標準定義了一個在基于分組的網絡上進行靈活的、實時的、可交互的多媒體通信協議集。個人計算機能在包交換網絡(網際網和內部網)和電路交換網絡上傳輸音頻,視頻和數據。
H.323網絡包括終端,網關,網守(Gatekeeper)和多點控制單元(MCU)。
網守在局域網上監(jiān)視所有在其區(qū)域內的H.323呼叫,它提供兩個主要的服務:呼叫準入和地址解析。所有在此區(qū)內的H.323客戶端必須在網守的協助下開始一個呼叫。另外,網守還可以根據當前可用帶寬決定是否允許客戶呼叫。
網關提供在異種網絡之間操作的能力,例如在包交換網絡和電話網之間,就需要有一個網關進行協議和數據的轉換。
MCU(多點控制單元)提供多方的多媒體會議能力。它協調所有參與者的媒體通信能力,為端點提供音頻混合和視頻選擇(端點本身不能完成這個工作)。
下面我們以點到點的H.323通信為例說明其通信過程。在此例中,我們用Alice和Bob作為H.323通信的兩個端點。Alice在防火墻的外側,Bob在防火墻的內側。
首先,Alice向Bob的H.323知名端口1720建立了一條連接。
然后,Bob和Alice在此連接上發(fā)送Q.931包。,在這些交換的數據包中,Bob和Alice發(fā)送動態(tài)的端口用于建立H.245連接(即上圖CONNECT數據包中的H.245 Address)。
隨后,呼叫者根據在Q.931流中協商的臨時端口建立H.245連接。H.245處理所有的呼叫參數協商,例如所要用的編碼解碼算法等。一旦這些參數協商完畢,H.245會話開始執(zhí)行OpenLogicalChannel,這個過程為特定的媒體流(如音頻或視頻)發(fā)送傳輸者和發(fā)送者的RTP和RTCP地址和端口(即上圖OpenLogicalChannel和OpenLogicalChannelAck中的RTP及RTCP Address)。然后,這些媒體流就可以在兩個端點之間進行傳輸,直到會話結束。
H.323通過防火墻和NAT的難點
大量應用動態(tài)端口
通過防火墻可以限定進出網絡的數據包類型和流量(這種限定可以基于源IP地址、目的IP地址或端口號等包過濾規(guī)則)。而基于IP的語音和視頻通訊的H.323協議,要求終端之間使用IP地址和數據端口來建立數據通信通道。因此存在一個兩難境地:為了建立數據連接終端,必須隨時偵聽外來的呼叫,而防火墻卻通常被配置來阻止任何不請自到的數據包通過。
即使網絡管理者打開防火墻上的一個端口來接收呼叫建立數據包,例如1720端口,但IP語音和視頻通訊協議還要求打開許多別的端口接收呼叫控制信息來建立語音和視頻通道。這些端口號事先并不知道,是動態(tài)分配的,這也就是說,網絡管理者為了允許語音和視頻通訊,將不得不打開防火墻上所有的端口,防火墻也就失去了存在的意義。由于網絡安全的原因,很少企業(yè)會讓他們的網絡防火墻如此開放。
防火墻的網絡地址轉換
同時,由于Internet快速膨脹,IPv4地址空間處于嚴重耗盡的境況。為解決這個問題,人們設計出了網址轉換器(NAT)。網絡地址轉換分為傳統的網絡地址轉換和網絡地址端口轉換。目前,很多的網絡地址轉換都是通過防火墻來實現的。然而NAT后的IP語音和視頻設備僅有私有IP地址,這些地址在公眾網上是不可路由的。
傳統的網絡地址轉換機制允許一個組織在內部通信時使用一定范圍內的私有地址,當與外部通信時使用一個小的公共IP地址池。
另一種網絡地址轉換是網絡地址和端口轉換。這種轉換形式有一個內部地址,一個或多個外部地址,然后用端口號進行區(qū)分。
NAT是置于兩網間的邊界,其功能是將外網可見的IP地址與內網所用的地址相映射,這樣,每一受保護的內網可重用特定范圍的IP地址(192.168.x.x),而這些地址是不用于公網的。從外網來的含公網地址信息的數據包先到達NAT,NAT使用預設好的規(guī)則(其組元包含源地址、源端口、目的地址、目的端口、協議)來修改數據包,然后再轉發(fā)給內網接受點。對于流出內網的數據包也須經過這樣的轉換處理。
從安全性上來看,NAT提供了對外隱藏內網拓撲的一個手段,但也給H.323應用帶來巨大的麻煩。協議消息包一般不是放置在IP包頭,而是在特定區(qū)段中內嵌IP地址和端口號。這樣,如果使用NAT,協議里的IP和端口號不能指向正確的地方,從而導致通信不能正常進行。
ASN.1編碼
H.323的大部分控制信息用ASN.1進行編碼,這是一種非常復雜的編碼模式,相同版本的相同應用在連接相同的目的時,會使用不同的選項,從而使相同成員在數據流中的偏移量不同。為了提取其中的有用信息(如內嵌的IP地址和端口號),需要對用ASN.1編碼過的數據包進行仔細的解碼。
東軟NetEye防火墻在網絡視頻會議系統的安全解決方案
基于以上H.323的特性,目前絕大多數的防火墻是不支持H.323協議的,尤其是經過網絡地址轉換(NAT)后的應用,即使支持,也不是很徹底。
為了使用戶網絡的H.323數據流能順利地通過NetEye防火墻,從而正常、安全地進行網絡視頻等應用,東軟公司NeEye產品的研發(fā)人員專門對H.323協議進行了詳細的分析和控制,有效地解決了當前防火墻和NAT帶來的連通問題。
對ASN.1編碼的數據包進行解碼
如前面所述,H.323的大部分控制信息,包括通信所使用的IP地址和端口號,都是用ASN.1進行編碼。因此,為了得到這些有用的信息,NetEye防火墻針對ASN.1編碼后的數據進行了詳細的解碼。
將網絡地址轉換應用到控制信息中
解碼H.323控制信息后,獲得通信所使用的內部私有IP地址和端口,根據NetEye防火墻上當前應用的網絡地址轉換規(guī)則,將H.323控制信息中的IP地址修改為轉換后的公網地址。這樣當被呼叫的終端收到呼叫建立(Call Setup)數據包后,會從該數據包控制信息中獲取呼叫端的IP地址,發(fā)現這個IP地址為一個公網IP地址,開始發(fā)送音頻和視頻數據到這個IP地址,從而在NAT下實現正常的網絡視頻通信。
自動打開動態(tài)分配的端口
由于NetEye防火墻能夠解碼經過ASN.1編碼的H.323協議的數據包,并進行詳細的分析,從而可以檢測H.323協議通信過程中動態(tài)分配的一些端口。這樣做的結果是,在防火墻的規(guī)則中,只須打開幾個H.323的知名的端口(如1718,1719,1720等),其它通信過程中動態(tài)分配的端口在需要時NetEye防火墻會臨時打開,在不需要時馬上關閉。這樣就不用打開所有大于1024的端口,增加了防火墻的安全性,而且也不受防火墻網絡地址轉換的影響。這也是基于狀態(tài)檢測的“流過濾”防火墻所具有的先天的優(yōu)勢和特性。
NetEye防火墻通過對網絡視頻會議系統的安全防護,很好地解決了日常私網和公網通信面臨的連通性、防火墻技術、NAT技術、高度安全等問題,充分發(fā)揮了IP通信的諸多優(yōu)勢。
H.323通信過程