摘 要: 在應(yīng)對(duì)突發(fā)事件救援行動(dòng)中,,指揮中心能否通過互聯(lián)網(wǎng)取得第一手資料,必要的條件是存在一個(gè)安全的連接,。虛擬專用網(wǎng)(VPN)是應(yīng)急現(xiàn)場組織,、指揮的重要通信手段。但是,,如果車載無線移動(dòng)終端移動(dòng),,由于IP的變化,安全連接將會(huì)消失,,新的連接將會(huì)重新建立,,造成應(yīng)急現(xiàn)場與指揮中心之間通信不流暢。為克服以上不足,,詳細(xì)闡述了由L2TP和IPSec集成的一種新穎的隧道網(wǎng)絡(luò)過程,,并介紹了L2TP和IPSec的集成方案,最后完成了對(duì)本方案的測試,。
關(guān)鍵詞: L2TP,;IPSec;VPN,;車載無線終端
突發(fā)事件的發(fā)生給人民生命和國家財(cái)產(chǎn)造成巨大的破壞,,這種破壞有時(shí)甚至是毀滅性的[1]??紤]我國應(yīng)急管理實(shí)踐經(jīng)驗(yàn),,在處置突發(fā)事件中,有效的通信網(wǎng)絡(luò)保障是應(yīng)急響應(yīng)和救援工作成敗的關(guān)鍵,。隨著現(xiàn)代通信技術(shù)和網(wǎng)絡(luò)技術(shù)的高速發(fā)展,,車載無線終端在現(xiàn)場采集的大量信息需要實(shí)時(shí)傳輸?shù)街笓]中心,為防止信息在3G網(wǎng)和互聯(lián)網(wǎng)上傳輸時(shí)被竊取或篡改,,數(shù)據(jù)需要在采集端加密后再經(jīng)由3G網(wǎng)和互聯(lián)網(wǎng)傳輸,。
本文結(jié)合L2TP和IPSec的技術(shù)特點(diǎn),提出了一種新穎的L2TP/IPSec安全隧道網(wǎng)絡(luò)遠(yuǎn)程數(shù)據(jù)傳輸方案,。本方案能重新發(fā)送丟失的數(shù)據(jù)包,,具有更好的安全性和切換性能。該方案利用IPSec的強(qiáng)安全性彌補(bǔ)了L2TP在安全方面的不足,,同時(shí)又利用L2TP的靈活性彌補(bǔ)了IPSec在用戶級(jí)鑒別,、授權(quán)以及多協(xié)議支持等方面的不足,有效提升了系統(tǒng)的安全性,。本文完成了對(duì)整個(gè)網(wǎng)絡(luò)系統(tǒng)的設(shè)計(jì),,展望了該系統(tǒng)設(shè)計(jì)的價(jià)值和前景。
1 L2TP和IPSec的集成
1.1 L2TP協(xié)議
L2TP協(xié)議是PPTP與L2F的組合,代表了PPTP和L2F的最佳功能,,是一個(gè)開放源碼的第2層隧道協(xié)議[2-3],。L2TP將PPP分組進(jìn)行隧道封裝成UDP包,并通過網(wǎng)絡(luò)傳輸,。L2TP特別適合于組建遠(yuǎn)程訪問型VPN,,己經(jīng)成為事實(shí)上的工業(yè)標(biāo)準(zhǔn)。L2TP隧道的兩個(gè)端點(diǎn)分別是LAC(L2TP訪問集中器)和LNS(L2TP網(wǎng)絡(luò)服務(wù)器),。LAC接收來自采集端的PPP數(shù)據(jù)包,,并將之封裝成UDP數(shù)據(jù)包發(fā)送到LNS。LNS拆封UDP數(shù)據(jù)包,,并發(fā)送PPP報(bào)文到指揮中心,。
L2TP協(xié)議只對(duì)通道的終端實(shí)體進(jìn)行身份驗(yàn)證,而非流過的每一個(gè)數(shù)據(jù)報(bào)文,,且L2TP本身不提供任何數(shù)據(jù)加密手段,,對(duì)控制數(shù)據(jù)包本身未進(jìn)行保護(hù),當(dāng)數(shù)據(jù)需要加密時(shí)需要其他技術(shù)的支持,。因此,,利用L2TP構(gòu)建的VPN不能滿足安全虛擬專用網(wǎng)絡(luò)的要求。
在UNIX下L2TP的實(shí)現(xiàn)可以分為兩部分:內(nèi)核和用戶空間,。本設(shè)計(jì)所使用的是FreeBSD[4]和用戶空間的守護(hù)進(jìn)程——多鏈路PPP守護(hù)進(jìn)程MPD[5],。內(nèi)核部分負(fù)責(zé)接收和發(fā)送PPP包到指揮中心、L2TP數(shù)據(jù)包的封裝和解封,,以及發(fā)送和接收LAC與LNS之間的UDP數(shù)據(jù)包,。用戶空間部分負(fù)責(zé)創(chuàng)建和管理L2TP隧道,保存和管理L2TP信息,。為了減少調(diào)試內(nèi)核和用戶空間,,使它們之間的通信更容易,對(duì)用戶空間代碼作了修改,。這是因?yàn)榇蠖鄶?shù)的L2TP隧道信息被保存在用戶空間內(nèi),。
1.2 IPSec協(xié)議
IPSec是由IETF IPSec工作組制訂的一組基于密碼學(xué)的開放網(wǎng)絡(luò)安全協(xié)議簇[2-3]。IPSec作為一種隧道傳輸技術(shù),,提供網(wǎng)絡(luò)層之上的保護(hù):將IP幀封裝成ESP包[6]或AH包,,并發(fā)送到網(wǎng)絡(luò)的另一端,;使用IKE協(xié)議處理密鑰交換和使用ESP和AH對(duì)數(shù)據(jù)包提供真實(shí)性,、完整性和機(jī)密性保護(hù)。IPSec操作有兩種模式:傳輸模式和隧道模式,。在傳輸模式下,,IPSec通過AH或ESP報(bào)頭只對(duì)IP數(shù)據(jù)包負(fù)載加密,而在隧道模式下,IPSec通過AH或ESP報(bào)頭與其IP報(bào)頭對(duì)IP報(bào)頭和IP數(shù)據(jù)包負(fù)載兩者加密,。
在UNIX下IPSec的實(shí)施主要可以分為兩部分:內(nèi)核(UNIX內(nèi)核的一部分)和用戶空間(Racoon2[7]項(xiàng)目),。內(nèi)核部分負(fù)責(zé)發(fā)送和接收IP數(shù)據(jù)包、封裝和解封ESP數(shù)據(jù)包,,并檢查安全信息,。用戶空間部分有3個(gè)組件:iked(用IKE協(xié)議和ISAKMP處理密鑰交換)、SPMD(安全管理政策,;真正的安全數(shù)據(jù)庫在IPSec內(nèi)核中)與kinkd(除了它處理KINK協(xié)議外與“iked”類似),。
1.3 L2TP和IPSec的集成實(shí)現(xiàn)
通過以上對(duì)L2TP和IPSec協(xié)議的分析,在VPN建設(shè)中可以考慮將L2TP協(xié)議和IPSec協(xié)議綜合起來使用,,形成一個(gè)L2TP/IPSec隧道,,它既支持IPSec的隧道模式又支持IPSec的傳輸模式[8],利用IPSec AH或IPSec ESP[4]保護(hù)L2TP數(shù)據(jù)包能夠提供數(shù)據(jù)源驗(yàn)證,、數(shù)據(jù)完整性驗(yàn)證,、抗重放攻擊、數(shù)據(jù)保密性保護(hù)和有效的密鑰管理等服務(wù),。在IPSec隧道模式下的L2TP/IPSec隧道的數(shù)據(jù)包結(jié)構(gòu)如圖1所示,。
IPSec/L2TP VPN建立的過程是:(1)通常通過Internet密鑰交換(IKE),協(xié)商IPSec安全關(guān)聯(lián)(SA,,共享兩個(gè)網(wǎng)絡(luò)之間的安全信息實(shí)體),。數(shù)字證書(通過證書頒發(fā)機(jī)構(gòu))應(yīng)在此步驟之前發(fā)布。(2)在隧道模式下通過IP數(shù)據(jù)包發(fā)送封裝安全載荷(ESP)[6],。(3)在SA的兩端點(diǎn)之間協(xié)商和建立L2TP隧道,。
在數(shù)據(jù)傳輸階段的L2TP/IPSec隧道的認(rèn)證過程如下:(1)根據(jù)ESP頭和IP頭,驗(yàn)證IPSec中安全協(xié)會(huì)(SA)的信息,。IPSec組件從安全協(xié)會(huì)數(shù)據(jù)庫(SADB)使用的目的地址(IPSec隧道的結(jié)束點(diǎn))和安全參數(shù)索引(SPI)中獲取并檢驗(yàn)SA,,根據(jù)SA對(duì)有效載荷進(jìn)行解密[9]。(2)通過查詢安全策略數(shù)據(jù)庫檢驗(yàn)數(shù)據(jù)包的安全策略[9],。(3)驗(yàn)證L2TP數(shù)據(jù)包的IP地址和端口值相匹配的信息,,用以設(shè)置L2TP隧道[8]。
2 無線傳輸網(wǎng)絡(luò)設(shè)計(jì)
該系統(tǒng)的網(wǎng)絡(luò)架構(gòu)如圖2所示,。選擇安徽創(chuàng)世科技有限公司的CR3000R系列嵌入式硬盤錄像機(jī)安裝在應(yīng)急指揮車上作為數(shù)據(jù)采集設(shè)備,,選擇Racoon2[7](為IPSec)和MPD[5](為L2TP)安裝在L2TP/IPSec隧道集中器和服務(wù)器上。L2TP/IPSec集中器用于封裝PPP包和創(chuàng)建到遠(yuǎn)程服務(wù)器的隧道,,也可用于封裝L2TP/IPSec隧道內(nèi)的IP數(shù)據(jù)包,。L2TP/IPSec隧道服務(wù)器連接到UNIX服務(wù)器時(shí),首先打開一個(gè)IPSec隧道,,然后利用這個(gè)隧道連接到UNIX服務(wù)器上的L2TP守護(hù)進(jìn)程,,這樣服務(wù)器就可以訪問指揮現(xiàn)場內(nèi)網(wǎng)的計(jì)算機(jī),。
當(dāng)應(yīng)急指揮車靜止時(shí),無線設(shè)備的IP地址未發(fā)生改變,,這就意味著圖2中A點(diǎn)和B點(diǎn)的IP地址是內(nèi)部的IP地址,;當(dāng)應(yīng)急指揮車移動(dòng)時(shí),C點(diǎn)的IP地址就會(huì)改變,,但指揮現(xiàn)場的服務(wù)器兩端和指揮中心的所有IP地址保持不變,。
本設(shè)計(jì)的目標(biāo)是:在無重建隧道成本和無丟失數(shù)據(jù)包的情況下,由L2TP和IPSec集成的VPN隧道能繼續(xù)發(fā)送低延時(shí)包,。因此,,本設(shè)計(jì)決定在沒有任何代理的情況下,讓L2TP/IPSec隧道集中器與L2TP/IPSec隧道服務(wù)器直接通信,。詳細(xì)步驟如下:
(1)隧道集中器更新IPSec隧道信息,,并直接通知隧道服務(wù)器的IP地址,IPSec從舊的IP地址改變?yōu)樾碌腎P地址,。出于安全原因,,本方案將IP變化信息添加到ESP有效載荷[4],首先因?yàn)榘l(fā)送ESP負(fù)載內(nèi)的信息可以修改現(xiàn)有的SA而無需創(chuàng)建一個(gè)新的SA,,從而避免了SA的重建[10],。再者修改的SA數(shù)據(jù)庫和發(fā)送的ESP信息可以消除UNIX下的內(nèi)核和用戶空間之間的通信。在IPSec的地址更新包中,,當(dāng)設(shè)置隧道地址和當(dāng)前地址時(shí),,ESP有效載荷包含了IPSec隧道端點(diǎn)的IP地址。在IPSec地址回復(fù)包中,,當(dāng)ESP有效載荷[6]包含了同在IPSec地址更新消息和VPN網(wǎng)關(guān)中相同的信息時(shí),,證明IPSec中的IP地址更新成功。
(2)隧道服務(wù)器確認(rèn)IP變化,,更新IPSec隧道的信息,,并發(fā)送備份確認(rèn)消息。
(3)隧道集中器直接通知隧道服務(wù)器IP地址的L2TP從舊的IP地址改變?yōu)樾碌腎P地址,,同時(shí)進(jìn)行加密,。最后接收到的數(shù)據(jù)的序列號(hào)也在該數(shù)據(jù)包內(nèi)傳送。
(4)隧道服務(wù)器進(jìn)行解密和驗(yàn)證數(shù)據(jù)包,。如果數(shù)據(jù)包驗(yàn)證成功,,那么隧道服務(wù)器更新L2TP內(nèi)的隧道信息。隧道服務(wù)器緩沖了足夠的數(shù)據(jù)包后發(fā)送應(yīng)答信息指令,。L2TP隧道端口號(hào)在本方案中沒有改變,,如果端口號(hào)改變,那么 L2TP隧道就必須重新建立,。L2TP和IPSec的IP變化信息更新完后,,將L2TP信息保存在用戶空間,IPSec信息保存在UNIX內(nèi)核中,。
(5)隧道集中器進(jìn)行解密和驗(yàn)證答復(fù)包,。在L2TP隧道中增加了一個(gè)固定大小的循環(huán)緩沖區(qū),循環(huán)緩沖區(qū)的大小必須在L2TP隧道的安裝階段協(xié)商,。如果沒有足夠的數(shù)據(jù)包,,隧道集中器就會(huì)切斷用戶連接。如果集中器緩沖了足夠多的數(shù)據(jù)包,,隧道集中器就會(huì)更新L2TP隧道信息并要求隧道服務(wù)器發(fā)送丟失的數(shù)據(jù)包(沒有達(dá)到的舊IP地址的數(shù)據(jù)包),。為了支持丟失數(shù)據(jù)包的傳輸,數(shù)據(jù)序列號(hào)必須添加到L2TP數(shù)據(jù)信息中,。
(6)隧道服務(wù)器發(fā)送丟失的數(shù)據(jù)包,。最后VPN可重新獲得新的數(shù)據(jù)包。
2.1 L2TP/IPSec隧道的認(rèn)證
IPSec安全信息有兩個(gè)數(shù)據(jù)庫:安全策略數(shù)據(jù)庫SPD和安全關(guān)聯(lián)數(shù)據(jù)庫SADB,。SPD含有圖2中A點(diǎn)和F點(diǎn)的信息,,SADB含有圖2中C點(diǎn)和D點(diǎn)的連接和加密信息。本方案僅對(duì)圖2中C點(diǎn)的SA(安全關(guān)聯(lián))信息作了修改,。
IPSec驗(yàn)證的修改如下:(1)當(dāng)在SADB中建立一個(gè)SA時(shí),,隧道端點(diǎn)地址保存為初始的隧道端點(diǎn)地址或者當(dāng)前地址。(2)當(dāng)IPSec隧道服務(wù)器或集中器發(fā)送IPSec數(shù)據(jù)包時(shí),,數(shù)據(jù)包被發(fā)送到隧道的當(dāng)前地址,。初始的隧道端點(diǎn)地址只檢驗(yàn)IPSec的更新數(shù)據(jù)包。(3)當(dāng)IPSec隧道服務(wù)器或集中器接收IPSec數(shù)據(jù)包時(shí),,根據(jù)隧道的當(dāng)前地址檢驗(yàn)數(shù)據(jù)包,。(4)在IPSec服務(wù)器或集中器發(fā)送IPSec地址更新數(shù)據(jù)包前,更新SADB中SA的當(dāng)前地址,,否則,,IPSec地址更新數(shù)據(jù)包將發(fā)送到舊的隧道端點(diǎn)地址。(5)當(dāng)IPSec隧道服務(wù)器或集中器接收IPSec地址更新數(shù)據(jù)包時(shí),,根據(jù)SPI解密數(shù)據(jù)包,。當(dāng)數(shù)據(jù)包是IPSec地址更新數(shù)據(jù)包并且根據(jù)初始的隧道端點(diǎn)地址發(fā)現(xiàn)SA時(shí),則更新SADB中SA的當(dāng)前地址,。(6)SPD的節(jié)點(diǎn)不會(huì)改變,,因?yàn)镾PD中的地址是圖2中A點(diǎn)和F點(diǎn)的地址,這些地址在設(shè)計(jì)中不改變,。
L2TP驗(yàn)證的修改如下:(1)當(dāng)創(chuàng)建一個(gè)L2TP隧道時(shí),,在L2TP連接列表中,隧道端點(diǎn)地址保存為初始的隧道端點(diǎn)地址或者當(dāng)前地址,。(2)對(duì)于正常的L2TP數(shù)據(jù)包,,驗(yàn)證L2TP中的IP地址和端口值時(shí),,應(yīng)與保存的移動(dòng)節(jié)點(diǎn)地址和端口號(hào)相匹配。(3)對(duì)于L2TP地址更新消息,,驗(yàn)證L2TP連接列表中初始的隧道端點(diǎn)地址和更新的當(dāng)前地址,。
2.2 更新路由信息
隧道集中器中的路由表應(yīng)在IPSec更新消息被發(fā)送前更新,隧道服務(wù)器的路由表應(yīng)在IPSec的更新消息收到后更新,。如果網(wǎng)絡(luò)接口改變它們的IP地址,,與此有關(guān)的所有路由的網(wǎng)絡(luò)接口在FreeBSD[4]下將被自動(dòng)刪除,并且將引起新的系統(tǒng)來檢測IP變化和更新L2TP/IPSec隧道,。當(dāng)IP地址被改變時(shí)應(yīng)添加一個(gè)相關(guān)的路由,。
3 系統(tǒng)測試
3.1 L2TP/IPSec隧道傳輸效率測試
測試中,在車載無線終端與指揮中心之間傳送UDP數(shù)據(jù)包,,每個(gè)數(shù)據(jù)包都要進(jìn)行多次傳送,,然后計(jì)算出平均時(shí)間。分別測試單獨(dú)使用L2TP隧道和使用L2TP/IPSec隧道時(shí)的傳輸時(shí)間,,比較結(jié)果如表1所示,。
對(duì)于相同的傳輸任務(wù),使用L2TP/IPSec隧道進(jìn)行傳輸比單獨(dú)使用L2TP隧道傳輸所用時(shí)間要長,,這是因?yàn)槭褂肔2TP/IPSec協(xié)議封裝,,在原有L2TP分組外面又封裝了ESP頭和IP頭,提升了對(duì)數(shù)據(jù)包處理的復(fù)雜度,,進(jìn)而增加了系統(tǒng)的開銷,,降低了系統(tǒng)的傳輸效率。這說明,,安全保護(hù)越復(fù)雜,,系統(tǒng)開銷就越大,安全性的提高會(huì)使系統(tǒng)性能有所降低,。
3.2 L2TP/IPSec隧道切換時(shí)間測試
在系統(tǒng)測試時(shí),,測試中的主要延遲為VPN協(xié)商時(shí)間。在設(shè)計(jì)時(shí),,以修改現(xiàn)有的隧道替代創(chuàng)建新的隧道,,盡量減少IP地址改變后L2TP/IPSec隧道的協(xié)商時(shí)間。模擬裝置中,,通過使用ifconfig命令盡量減少從無線網(wǎng)絡(luò)獲得一個(gè)新IP地址的時(shí)間,。從車載無線終端向指揮中心發(fā)送有一定間隔的UDP數(shù)據(jù)包,測試時(shí)間為5 ms~50 ms,。首先,,測試未更改的FreeBSD7.0[4]軟件設(shè)置,其L2TP/IPSec隧道中的IP變化的平均切換時(shí)間為1.53 s,,由于中斷和丟包,,這是用戶所不能接受的,;其次,測試更改的FreeBSD7.0[6]軟件設(shè)置,,需要在內(nèi)核空間中增加約1 500行的代碼和在用戶空間增加大約400行代碼,。在L2TP/IPSec隧道中切換時(shí)間的測試結(jié)果如圖3所示。結(jié)果達(dá)到預(yù)期的目標(biāo)條件下,,L2TP/IPSec隧道中的IP變化的平均切換時(shí)間為0.079 s,還不會(huì)丟失數(shù)據(jù)包,,這是用戶所能接受的,。
本方案用一個(gè)很小的VPN切換延遲在傳輸網(wǎng)絡(luò)中創(chuàng)建了一個(gè)改進(jìn)的L2TP/IPSec隧道,突出體現(xiàn)了L2TP/IPSec隧道的優(yōu)勢:具有較強(qiáng)的安全性,,能夠?yàn)橛脩籼峁┌踩?、方便、支持多種協(xié)議封裝的VPN遠(yuǎn)程接入服務(wù),。方案的實(shí)施取得了較好的效果,,指揮中心能夠取得第一手資料,對(duì)突發(fā)事件現(xiàn)場迅速采取有效的措施,,提高了現(xiàn)場辦公效率,,減小了經(jīng)濟(jì)損失,具有重大的意義,。
參考文獻(xiàn)
[1] 孫玉.應(yīng)急通信技術(shù)總體框架討論[M].北京:人民郵電出版社,,2007.
[2] 李慧,李濤.IPSec和L2TP集成的多安全連接技術(shù)研究及實(shí)現(xiàn)[J].微計(jì)算機(jī)信息,,2010(26):93-95.
[3] HOEKSTRA B.Comparing TCP performance of tunneled and non-tunneled traffic using OpenVPN[D].2011.
[4] FreeBSD the power to serve[EB/OL].[2008-06-01).http://www.freebsd.org/.2008.
[5] MPD project from sourceforge[EB/OL].[2009-07-06].http://mpd.sourceforge.net/.2009.
[6] HAFIZ M,,ZAHARUDDIN M,RAHMAN R A,,et al.Technical Comparison Analysis of Encryption Algorithm on Siteto-Site IPSec VPN[C].IEEE Trans Consumer Electronics,,2010:641-645.
[7] Racoon2 website[EB/OL].[2010-05-26].http://www.racoon2.wide.ad.jp/w/.
[8] PATEL B,ABOBA B,,DIXON W,,et al.Securing L2TP using IPSec[Z].RFC3193.2001.11.
[9] DANALACHI I,PETRESCU M L.Interoperability Issues for VPN IPSec Solutions[C].SECITC,,2011:30-33.
[10] MAUGHAN D,,SCHERTLER M.Internet security association and key management protocol(ISAKMP)[C].RFC 2408.1998.