現代企業中為了實現異地辦公的需要,廣泛使用了VPN技術。這一節我們就來談談VPN。什么是VPN呢?
一、VPN的基本概念
VPN,即Virtual Private Network的縮寫,是將物理分布在不同地點的網絡通過公用骨干網,尤其是Internet連接而成的邏輯上的虛擬子網。Virtual指VPN是邏輯上存在的,真實中只是借助了Internet;Private指VPN有著嚴格的身份認證和報名性,只對特定的用戶開放;Network指VPN需要特定的設備建立通信。
VPN主要有三種類型:1. Access VPN,即所謂的移動VPN,主要用于企業內部人員流動頻繁或遠程辦公的情況;2. Intranet VPN,即所謂的網關對網關的VPN,在異地兩個網絡的網關之間建立了一個加密的VPN隧道,兩端的內部網絡可以通過該VPN隧道安全地進行通信,常用于企業總部與遠程辦事處、分支機構的連接;3. Extranet VPN,也是一種網關對網關的VPN,只不過范圍進一步擴大,加入了企業合作伙伴的網絡,即在不同企業的網絡之間組建了VPN。
從上面的敘述可以看出來,VPN的優點是:降低成本(不需要鋪設專線)、易于擴展(VPN設備添加)、保證安全(加密與認證)。
二、VPN技術
VPN的關鍵考慮是保證數據傳輸的機密性和完整性,而這兩個屬性主要由加密和身份認證來實現。加密方面支持非對稱密碼體制RSA\ElGamal等管理VPN密鑰,采用對稱密碼體制DES、AES、RC4/5等加密傳輸的數據。身份認證方面主要有非PKI體系和PKI體系認證。PKI體系借助公鑰密碼體制,需要有CA頒發的數字證書作為身份的認證憑證;而非PKI體系一般使用用戶名+口令的方式進行認證,如PAP(口令認證協議)、CHAP(詢問握手認證協議)等。
隧道封裝技術主要有第二層和第三層兩種:
1. 第二層隧道協議是在數據鏈路層進行的,先把各種網絡協議封裝到PPP包中,再把整個數據包裝入隧道協議中,這種經過兩層封裝的數據包由第二層協議進行傳輸,一般第二層隧道協議有以下幾種:L2F、PPTP(RFC 2637, Point-to-Point Tunneling Protocol)、L2TP(RFC 2661, Layer Two Tunneling Protocol)
2. 第三層隧道協議是在網絡層進行的,把各種網絡協議直接裝入隧道協議中,形成的數據包依靠第三層協議進行傳輸,第三層隧道協議有以下幾種:IPSec、GRE(RFC 2784, General Routing Encapsulation)。
密鑰管理技術主要是密鑰分發的技術,手工配置一般適用于小型網絡,對于大型網絡而言,還是使用SKIP或ISAKMP框架。
三、第二層隧道協議
這部分來稍微細致地看看這一層的隧道協議,對于隧道協議,包括三個部分:乘客協議、封裝協議、傳輸協議:
乘客協議就是實際要傳輸的數據內容,可以是IP、PPP、SLIP等;封裝協議用于建立、保持和拆卸隧道,即將討論的L2F、PPTP、L2TP、GRE就屬于封裝協議;乘客協議被封裝之后使用傳輸協議,可以是TCP/IP或者UDP。目前普遍使用的是自愿隧道模式,即由計算機客戶端發起的VPN連接;對于強制隧道模式,由ISP支持的VPN撥號接入服務來配置和創建。
1. PPTP(Point2Point Tunneling Protocol)
PPTP協議將PPP數據包封裝在IP數據包內通過IP網絡進行傳送,PPTP協議需要PPTP客戶端和服務器的協議安裝;PPTP客戶端和服務器間的報文分為控制報文和數據報文,其中:
(1). 控制報文:攜帶PPTP呼叫控制和管理信息,用于維護PPTP隧道,其中包括周期性地發送回送請求和回送應答報文,以期檢測出客戶機與服務器之間可能出現的連接中斷。PPTP控制連接包括一個IP報頭、一個TCP報頭和PPTP控制信息:
(2). 數據報文:真正數據經過加密和壓縮之后,再依次經過PPP、GRE、IP的封裝最終得到一個IP包,PPTP服務器收到該包后會依次讀取報頭層層解包:
這里的GRE協議是第三層的隧道協議,GRE(Generic Routing Encapsulation,通用路由封裝協議)由Cisco和NetSmiths共同研發,GRE支持全部的路由協議,如RIP或OSPF等,在GRE中,乘客協議可以使任何協議的數據包,傳輸協議就是IP,GRE是一種通用的封裝形式。
2. L2TP(Layer Two Tunneling Protocol,第二層隧道協議)
L2TP是由RFC 2661定義的,結合了L2F與PPTP協議的優點,可以讓用戶從客戶端或訪問服務器端發起VPN連接。L2TP已經成為了二層隧道協議的工業標準,并得到眾多網絡廠商的支持。L2TP協議主要使用IPSec協議保證其安全性。用戶通過LAC發起到LNS的VPN連接,認證通過后可以建立VPN。與PPTP不同的是,L2TP的控制和數據報文均使用UDP傳輸,其控制報文封裝為:
其中的UDP報文是IPSec加密的部分。L2TP的數據報文格式為:
PPTP與L2TP協議都使用PPP協議對數據進行封裝,然后添加附加包頭用于數據在互聯網上的傳輸。盡管兩個協議非常相似,但是仍存在以下幾方面的不同:
(1). PPTP要求互聯網絡為IP網絡,L2TP只要求隧道媒介提供面向數據包的點對點連接,可以在幀中繼永久虛擬電路上使用;
(2). PPTP只能在兩點間建立單一隧道,L2TP支持兩點間使用多隧道;
(3). L2TP可以提供包頭壓縮;
(4). L2TP可以提供隧道驗證,而PPTP不支持隧道驗證;