VPN簡介及原理
VPN屬于遠(yuǎn)程訪問技術(shù),簡單地說就是利用公用網(wǎng)絡(luò)架設(shè)專用網(wǎng)絡(luò)。例如某公司員工出差到外地,他想訪問企業(yè)內(nèi)網(wǎng)的服務(wù)器資源,這種訪問就屬于遠(yuǎn)程訪問。
在傳統(tǒng)的企業(yè)網(wǎng)絡(luò)配置中,要進(jìn)行遠(yuǎn)程訪問,傳統(tǒng)的方法是租用DDN(數(shù)字?jǐn)?shù)據(jù)網(wǎng))專線或幀中繼,這樣的通訊方案必然導(dǎo)致高昂的網(wǎng)絡(luò)通訊和維護(hù)費用。對于移動用戶(移動辦公人員)與遠(yuǎn)端個人用戶而言,一般會通過撥號線路(Internet)進(jìn)入企業(yè)的局域網(wǎng),但這樣必然帶來安全上的隱患。
讓外地員工訪問到內(nèi)網(wǎng)資源,利用VPN的解決方法就是在內(nèi)網(wǎng)中架設(shè)一臺VPN服務(wù)器。外地員工在當(dāng)?shù)剡B上互聯(lián)網(wǎng)后,通過互聯(lián)網(wǎng)連接VPN服務(wù)器,然后通過VPN服務(wù)器進(jìn)入企業(yè)內(nèi)網(wǎng)。為了保證數(shù)據(jù)安全,VPN服務(wù)器和客戶機之間的通訊數(shù)據(jù)都進(jìn)行了加密處理。有了數(shù)據(jù)加密,就可以認(rèn)為數(shù)據(jù)是在一條專用的數(shù)據(jù)鏈路上進(jìn)行安全傳輸,就如同專門架設(shè)了一個專用網(wǎng)絡(luò)一樣,但實際上VPN使用的是互聯(lián)網(wǎng)上的公用鏈路,因此VPN稱為虛擬專用網(wǎng)絡(luò),其實質(zhì)上就是利用加密技術(shù)在公網(wǎng)上封裝出一個數(shù)據(jù)通訊隧道。有了VPN技術(shù),用戶無論是在外地出差還是在家中辦公,只要能上互聯(lián)網(wǎng)就能利用VPN訪問內(nèi)網(wǎng)資源,這就是VPN在企業(yè)中應(yīng)用得如此廣泛的原因。
通常情況下,VPN網(wǎng)關(guān)采取雙網(wǎng)卡結(jié)構(gòu),外網(wǎng)卡使用公網(wǎng)IP接入Internet。
網(wǎng)絡(luò)一(假定為公網(wǎng)internet)的終端A訪問網(wǎng)絡(luò)二(假定為公司內(nèi)網(wǎng))的終端B,其發(fā)出的訪問數(shù)據(jù)包的目標(biāo)地址為終端B的內(nèi)部IP地址。
網(wǎng)絡(luò)一的VPN網(wǎng)關(guān)在接收到終端A發(fā)出的訪問數(shù)據(jù)包時對其目標(biāo)地址進(jìn)行檢查,如果目標(biāo)地址屬于網(wǎng)絡(luò)二的地址,則將該數(shù)據(jù)包進(jìn)行封裝,封裝的方式根據(jù)所采用的VPN技術(shù)不同而不同,同時VPN網(wǎng)關(guān)會構(gòu)造一個新VPN數(shù)據(jù)包,并將封裝后的原數(shù)據(jù)包作為VPN數(shù)據(jù)包的負(fù)載,VPN數(shù)據(jù)包的目標(biāo)地址為網(wǎng)絡(luò)二的VPN網(wǎng)關(guān)的外部地址。網(wǎng)絡(luò)一的VPN網(wǎng)關(guān)將VPN數(shù)據(jù)包發(fā)送到Internet,由于VPN數(shù)據(jù)包的目標(biāo)地址是網(wǎng)絡(luò)二的VPN網(wǎng)關(guān)的外部地址,所以該數(shù)據(jù)包將被Internet中的路由正確地發(fā)送到網(wǎng)絡(luò)二的VPN網(wǎng)關(guān)。網(wǎng)絡(luò)二的VPN網(wǎng)關(guān)對接收到的數(shù)據(jù)包進(jìn)行檢查,如果發(fā)現(xiàn)該數(shù)據(jù)包是從網(wǎng)絡(luò)一的VPN網(wǎng)關(guān)發(fā)出的,即可判定該數(shù)據(jù)包為VPN數(shù)據(jù)包,并對該數(shù)據(jù)包進(jìn)行解包處理。解包的過程主要是先將VPN數(shù)據(jù)包的包頭剝離,再將數(shù)據(jù)包反向處理還原成原始的數(shù)據(jù)包。
網(wǎng)絡(luò)二的VPN網(wǎng)關(guān)將還原后的原始數(shù)據(jù)包發(fā)送至目標(biāo)終端B,由于原始數(shù)據(jù)包的目標(biāo)地址是終端B的IP,所以該數(shù)據(jù)包能夠被正確地發(fā)送到終端B。在終端B看來,它收到的數(shù)據(jù)包就和從終端A直接發(fā)過來的一樣。
從終端B返回終端A的數(shù)據(jù)包處理過程和上述過程一樣,這樣兩個網(wǎng)絡(luò)內(nèi)的終端就可以相互通訊了。
通過上述說明可以發(fā)現(xiàn),在VPN網(wǎng)關(guān)對數(shù)據(jù)包進(jìn)行處理時,有兩個參數(shù)對于VPN通訊十分重要:原始數(shù)據(jù)包的目標(biāo)地址(VPN目標(biāo)地址)和遠(yuǎn)程VPN網(wǎng)關(guān)地址。根據(jù)VPN目標(biāo)地址,VPN網(wǎng)關(guān)能夠判斷對哪些數(shù)據(jù)包進(jìn)行VPN處理,對于不需要處理的數(shù)據(jù)包通常情況下可直接轉(zhuǎn)發(fā)到上級路由;遠(yuǎn)程VPN網(wǎng)關(guān)地址則指定了處理后的VPN數(shù)據(jù)包發(fā)送的目標(biāo)地址,即VPN隧道的另一端VPN網(wǎng)關(guān)地址。由于網(wǎng)絡(luò)通訊是雙向的,在進(jìn)行VPN通訊時,隧道兩端的VPN網(wǎng)關(guān)都必須知道VPN目標(biāo)地址和與此對應(yīng)的遠(yuǎn)端VPN網(wǎng)關(guān)地址。