隨著近年IP網(wǎng)寬帶業(yè)務(wù)的蓬勃發(fā)展,基于分組的多媒體通信系統(tǒng)標(biāo)準(zhǔn)H.323廣泛運(yùn)用于視頻會(huì)議和IP電話中。VoIP業(yè)務(wù)的應(yīng)用也帶來一個(gè)值得關(guān)注的問題:絕大部分企業(yè)部門從網(wǎng)絡(luò)安全考慮配置了專用防火墻,但H.323很難通過傳統(tǒng)專用防火墻。原因在于,復(fù)雜的H.323協(xié)議動(dòng)態(tài)分配端口并產(chǎn)生和維護(hù)多個(gè)UDP數(shù)據(jù)流。
同時(shí)由于Internet快速膨脹,IPv4地址空間處于嚴(yán)重耗盡的境況。為解決這個(gè)問題,人們設(shè)計(jì)出了網(wǎng)址轉(zhuǎn)換器(NAT)。然而NAT后的IP語音和視頻設(shè)備僅有私有IP地址,這些地址在公眾網(wǎng)上是不可路由的。
這樣一來,多媒體通訊中的防火墻和NAT問題嚴(yán)重地制約了IP電話和視頻會(huì)議的應(yīng)用。解決這個(gè)問題也就成為多業(yè)務(wù)寬帶IP網(wǎng)絡(luò)至關(guān)重要的事情。 在這里,我們先簡要回顧一下防火墻和NAT設(shè)備是如何保護(hù)網(wǎng)絡(luò)安全的和為什么實(shí)時(shí)多媒體通訊協(xié)議是對安全問題的一個(gè)挑戰(zhàn)。
一.網(wǎng)絡(luò)防火墻和NAT如何工作
防火墻
為了網(wǎng)絡(luò)的安全性,公司一般都安裝防火墻,它是一個(gè)放于私有網(wǎng)的設(shè)備,用來保護(hù)網(wǎng)絡(luò)資源免受外部的惡意破壞。
防火墻檢查從外部進(jìn)來的每個(gè)數(shù)據(jù)包的IP地址和目的端口號,它經(jīng)常如此設(shè)置:如果防火墻內(nèi)的一臺(tái)計(jì)算機(jī)A向防火墻外的一臺(tái)計(jì)算機(jī)B主動(dòng)發(fā)出請求要數(shù)據(jù),防火墻會(huì)讓外部計(jì)算機(jī)B的數(shù)據(jù)包通過,而且當(dāng)且僅當(dāng)數(shù)據(jù)包的目的地址和端口號與防火墻內(nèi)發(fā)起請求的計(jì)算機(jī)A的地址和端口號相同;如果計(jì)算機(jī)B發(fā)來的數(shù)據(jù)包僅僅目的地址是防火墻內(nèi)發(fā)起請求的計(jì)算機(jī)A的地址,而端口號不是計(jì)算機(jī)A發(fā)出請求的那個(gè)端口號,防火墻也將會(huì)丟棄那個(gè)外來的數(shù)據(jù)包。
防火墻總是被配置過濾掉所有不請自到的網(wǎng)絡(luò)通信,有一個(gè)例外是在防火墻內(nèi)提供Web Server供外部訪問。在這種情況下,公司會(huì)配置防火墻允許目的地址是Web Server的IP地址且目的端口號為80的數(shù)據(jù)包通過,這就使得公司外部可以主動(dòng)向公司的Web Server發(fā)起請求得到一些公司放在Server上的數(shù)據(jù)。
NAT 網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)是一個(gè)Internet標(biāo)準(zhǔn),置于兩網(wǎng)間的邊界,其功能是將外網(wǎng)可見的IP地址與內(nèi)網(wǎng)所用的地址相映射,這樣,每一受保護(hù)的內(nèi)網(wǎng)可重用特定范圍的IP地址(例如192.168.x.x),而這些地址是不用于公網(wǎng)的。從外網(wǎng)來的含公網(wǎng)地址信息的數(shù)據(jù)包先到達(dá)NAT,NAT使用預(yù)設(shè)好的規(guī)則(其組元包含源地址、源端口、目的地址、目的端口、協(xié)議)來修改數(shù)據(jù)包,然后再轉(zhuǎn)發(fā)給內(nèi)網(wǎng)接受點(diǎn)。對于流出內(nèi)網(wǎng)的數(shù)據(jù)包也須經(jīng)過這樣的轉(zhuǎn)換處理。NAT服務(wù)有兩個(gè)主要目的:
1.許多公司使用NAT用作一個(gè)網(wǎng)絡(luò)安全設(shè)備,因?yàn)樗[藏了內(nèi)部IP地址,如果黑客不知道特定計(jì)算機(jī)的IP地址,想要攻擊那臺(tái)計(jì)算機(jī)是更困難的。
2.NAT讓一個(gè)公司可以使用更多的內(nèi)部IP地址,因?yàn)檫@些地址僅僅在內(nèi)部使用,不可能與被別的公司和組織的IP地址產(chǎn)生沖突。
二.防火墻和NAT阻礙IP語音和視頻通訊
基于IP的語音和視頻通訊協(xié)議,象H.323,要求終端之間使用IP地址和數(shù)據(jù)端口來建立數(shù)據(jù)通信通道。因此存在一個(gè)兩難境地:為了建立數(shù)據(jù)連接終端必須隨時(shí)偵聽外來的呼叫,而防火墻卻通常被配置來阻止任何不請自到的數(shù)據(jù)包通過。
即使網(wǎng)絡(luò)管理者打開防火墻上的一個(gè)端口來接收呼叫建立數(shù)據(jù)包,例如1720端口,但I(xiàn)P語音和視頻通訊協(xié)議還要求打開許多別的端口接收呼叫控制信息來建立語音和視頻通道,這些端口號事先并不知道,是動(dòng)態(tài)分配的,這也就是說網(wǎng)絡(luò)管理者為了允許語音和視頻通訊將不得不打開防火墻上所有的端口,防火墻也就失去了存在的意義。由于網(wǎng)絡(luò)安全的原因,很少企業(yè)會(huì)讓他們的網(wǎng)絡(luò)防火墻如此開放。
在IP語音和視頻通訊中NAT問題也是常見的問題。一個(gè)NAT設(shè)備允許一個(gè)公司為局域網(wǎng)上設(shè)備分配私有的IP地址。不幸的是控制Internet上信息流向的路由設(shè)備僅僅能把數(shù)據(jù)送到具有可路由IP地址(公眾IP地址)的設(shè)備。
NAT后的終端可以向位于相同局域網(wǎng)上的任何別的終端發(fā)起呼叫,因?yàn)樵诰钟蚓W(wǎng)內(nèi)的這些IP地址是可路由的,然而他們的IP地址是私有的,對局域網(wǎng)外來說是不可路由的,因此NAT后的終端不能接收局域網(wǎng)外終端的呼叫。
即使NAT內(nèi)的終端可以向NAT外的終端發(fā)起呼叫,這仍然存在問題。當(dāng)進(jìn)行呼叫時(shí),發(fā)起呼叫的終端A的IP地址會(huì)包含在數(shù)據(jù)包負(fù)載中,根據(jù)H.323協(xié)議被呼叫的終端B收到呼叫建立(call setup)數(shù)據(jù)包后,會(huì)從該數(shù)據(jù)包負(fù)載中獲取終端A的IP地址,并開始發(fā)送音頻和視頻數(shù)據(jù)到這個(gè)IP地址的終端A。如果這個(gè)IP地址是私有的,Internet路由器將丟棄從外部終端發(fā)送往內(nèi)部終端的音頻和視頻數(shù)據(jù)包,因?yàn)檫@些數(shù)據(jù)包正被送往一個(gè)不可路由的IP地址。這個(gè)呼叫將顯示已經(jīng)連接上,但NAT后的終端A將永遠(yuǎn)不會(huì)收到外部終端B的音頻和視頻。
三.穿越防火墻和NAT的方法
其實(shí)解決防火墻和NAT問題的一個(gè)最簡單的辦法就是避免使用它們,對大多數(shù)機(jī)構(gòu)來說,這種方法太冒險(xiǎn),網(wǎng)絡(luò)安全沒有保證,而且要得到足夠多的可路由的IP地址或許是困難的,昂貴的。因此大多數(shù)希望利用IP進(jìn)行多媒體通訊的機(jī)構(gòu)將不可避免的面對防火墻或NAT的挑戰(zhàn)。事實(shí)上,大多數(shù)機(jī)構(gòu)都同時(shí)使用了防火墻和NAT,因此單單解決其中一個(gè)問題還不夠。現(xiàn)有的一些解決辦法如下:
1.使用PSTN網(wǎng)關(guān)
如果不太關(guān)心在局域網(wǎng)外是否基于IP通信,那么可以使用網(wǎng)關(guān)把局域網(wǎng)上的IP語音和視頻轉(zhuǎn)換為公共電路交換網(wǎng)上的PSTN語音和視頻。使用這樣一個(gè)網(wǎng)關(guān)就不用關(guān)心網(wǎng)絡(luò)防火墻的穿透問題了,因?yàn)闆]有數(shù)據(jù)包要通過防火墻。這也解決了NAT問題,所有到局域網(wǎng)內(nèi)終端的呼叫都是可路由的,因?yàn)橥ㄟ^網(wǎng)關(guān)進(jìn)入局域網(wǎng)的呼叫都是可路由的。今天大多數(shù)IP電話都是通過一個(gè)網(wǎng)關(guān)和非IP電話來進(jìn)行通?兜摹M胤椒ㄊ且桓鼉植拷餼齜槳福笏脅斡牒艚姓咴謐詈笠壞繬AT和防火墻后要有一個(gè)相應(yīng)的網(wǎng)關(guān)。
2.DMZ MCU
一些機(jī)構(gòu)通過把MCU放在所謂的DMZ區(qū)域來解決防火墻和NAT穿越問題。DMZ區(qū)域通常位于外部Internet和內(nèi)部網(wǎng)絡(luò)防火墻之間,想要對外提供他們自己的Internet服務(wù)(例如web服務(wù),ftp服務(wù),email服務(wù)和域名服務(wù))的機(jī)構(gòu)一般把這些服務(wù)放在DMZ區(qū)域,這樣可以很好地保護(hù)他們的私有網(wǎng)絡(luò)。
放在DMZ區(qū)域的MCU被裝上兩塊網(wǎng)卡,這樣一塊網(wǎng)卡提供訪問私有網(wǎng)絡(luò)的入口,另一塊網(wǎng)卡提供訪問公網(wǎng)Internet的入口。這個(gè)解決方案的一個(gè)最大缺點(diǎn)是即使是進(jìn)行點(diǎn)對點(diǎn)的呼叫也得需要使用MCU,另外如果在呼叫路徑上有多個(gè)NAT設(shè)備,那么在每個(gè)NAT設(shè)備的位置都需要放置一個(gè)MCU。
3.H.323代理
H.323代理能被用來解決NAT問題或者同時(shí)解決NAT和防火墻問題,這取決于代理如何被配置。代理其實(shí)是一種特殊類型的網(wǎng)關(guān),但并不是把IP協(xié)議轉(zhuǎn)換為別的,在代理兩邊使用的是相同的協(xié)議。代理使終端到終端的呼叫過程看起來像兩個(gè)分離的呼叫:一個(gè)是從私有網(wǎng)上的終端到代理,另一個(gè)是從代理到公眾網(wǎng)上的終端,代理通過對這個(gè)呼叫進(jìn)行中轉(zhuǎn)解決了NAT問題。
H.323代理一般結(jié)合標(biāo)準(zhǔn)的網(wǎng)守的功能和RTP/RTCP多媒體流的代理功能。這種解決方案典型應(yīng)用是在防火墻后放一個(gè)H.323代理,代理需要被分配公有IP地址。防火墻被配置允許代理和外部進(jìn)行多媒體通訊。有時(shí)候沿著網(wǎng)絡(luò)路徑在許多位置都應(yīng)用了NAT設(shè)備,這時(shí)就需要在每一個(gè)使用NAT的地方放置代理。
4.應(yīng)用層網(wǎng)關(guān)
應(yīng)用層網(wǎng)關(guān)(Application layer gateways)是被設(shè)計(jì)能識(shí)別指定IP協(xié)議(象H.323和SIP協(xié)議)的防火墻,也被叫做ALG Firewall。它不是簡單地察看包頭信息來決定數(shù)據(jù)包是否可以通過,而是更深層的分析數(shù)據(jù)包負(fù)載內(nèi)的數(shù)據(jù),也就是應(yīng)用層的數(shù)據(jù)。H.323和SIP協(xié)議都在負(fù)載中放了重要的控制信息,例如語音和視頻終端使用哪一個(gè)數(shù)據(jù)端口來接收別的終端的語音和視頻數(shù)據(jù)。通過分析哪一個(gè)端口需要打開,防火墻動(dòng)態(tài)地打開那些被應(yīng)用的端口,而所有別的端口依然安全地保持關(guān)閉狀態(tài)。 如果一個(gè)NAT被應(yīng)用來屏蔽內(nèi)部IP地址,這時(shí)ALG就需要一個(gè)代理,一些防火墻生產(chǎn)廠商把代理結(jié)合到ALG上越過NAT。
主要的防火墻廠商象Cisco, Checkpoint, Gauntlet都對他們的防火墻產(chǎn)品提供H.323 ALG升級功能,但市場上大多數(shù)防火墻還不支持ALG。這種解決方案還有一些缺點(diǎn):由于要分析數(shù)據(jù)包負(fù)載,這樣就加重了防火墻的處理任務(wù),影響網(wǎng)絡(luò)的運(yùn)行,成為潛在的網(wǎng)絡(luò)瓶頸;并且如果這兒有多層防火墻和NAT,則在呼叫路徑上的每個(gè)防火墻都必須被升級來支持ALG功能;對大多數(shù)公司的網(wǎng)絡(luò)來說防火墻是關(guān)鍵部件,在一些公司增加一個(gè)ALG或許是困難的。