隧道技術是建立安全VPN的基本技術之一,類似于點對點連接技術,在公用網建立一條數(shù)據遂道,讓數(shù)據包通過這條隧道傳輸。隧道是由隧道協(xié)議形成的,分為第二、三層隧道協(xié)議。第二層隧道協(xié)議有L2F、PPTP和L2TP等,是先把各種網絡協(xié)議封裝到PPP中,再把整個數(shù)據包裝入隧道協(xié)議中。這種雙層封裝方法形成的數(shù)據包靠第二層協(xié)議進行傳輸。第三層隧道協(xié)議有GRE、IPSEC等。第二層隧道協(xié)議和第三層隧道協(xié)議的本質區(qū)別在于在隧道內用戶的數(shù)據包是被封裝在哪種數(shù)據包中進行傳輸?shù)摹?br>L2TP隧道協(xié)議是典型的被動式隧道協(xié)議,它結合了L2F和PPTP的優(yōu)點,可以讓用戶從客戶端或訪問服務器端發(fā)起VPN連接。L2TP是把鏈路層PPP幀封裝在公共網絡設施如IP、ATM、幀中繼中進行隧道傳輸?shù)姆庋b協(xié)議。
L2TP主要由LAC(L2TP Access Concentrator) 和LNS(L2TP Network Server) 構成,LAC支持客戶端的L2TP,用于發(fā)起呼叫、接收呼叫和建立隧道;LNS是所有隧道的終點,LNS終止所有的PPP流。在傳統(tǒng)的PPP連接中,用戶撥號連接的終點是LAC,L2TP使得PPP協(xié)議的終點延伸到LNS。
L2TP的好處在于支持多種協(xié)議,用戶可以保留原有的IPX、Appletalk等協(xié)議或公司原有的IP地址。L2TP還解決了多個PPP鏈路的捆綁問題,PPP鏈路捆綁要求其成員均指向同一個NAS(Network Access Server),L2TP可以使物理上連接到不同NAS的PPP鏈路,在邏輯上的終結點為同一個物理設備。L2TP還支持信道認證,并提供了差錯和流量控制。
L2TP利用IPsec增強了安全性,支持數(shù)據包的認證、加密和密鑰管理。L2TP/IPSec因此能為遠程用戶提供設計精巧并有互操作性的安全隧道連接。這對安全的遠程訪問和安全的網關之間連接來說,它是一個很好的解決方案。因此,安全的VPN需要同時解決好L2TP和IPSec這兩個不同的問題。L2TP協(xié)議解決了穿過IP網絡的不同用戶協(xié)議的轉換問題;IPSec協(xié)議(加密/解密協(xié)議)解決了通過公共網絡傳輸信息的保密問題。
============== 應用L2TP技術的網絡拓撲結構==============
該網絡結構中將IPSec SGW(安全網關)和LNS合并成一個系統(tǒng),即安全遠程訪問服務器SRAS(Secure Remote Access Server)。這樣,遠程訪問客戶將訪問唯一的節(jié)點SRAS,該節(jié)點既是NAS服務的PPP終端,也是進入企業(yè)的安全網關節(jié)點。
至于遠程訪問,好處是對于穿過Internet的端到端IP包,將IPSec安全性當作適合企業(yè)請求的可信任模型。這樣,你可以簡單地使用AH,它不存在對外來竊聽的擔心,你只需要驗證包數(shù)據(包括包的來源);你也可以使用ESP(包括ESP驗證),它不考慮對網絡的信任以及任何人對公司活動竊聽的問題。
SRAS的操作要求配置防火墻允許UDP包進入SRAS節(jié)點,該節(jié)點將依次只處理L2TP包并丟棄其它包。而且,SRAS將要求所有嵌入在PPP內的IP包封裝成AH和ESP包之一,并指向它自身。另外,為了執(zhí)行IKE協(xié)商和動態(tài)生成IPSec密鑰,SRAS也將允許IKE UDP包指向它自身。企業(yè)通過只允許安全遠程訪問包進入企業(yè)來實施安全策略,它將丟棄所有其它嵌入PPP內的IP包。當一個PPP會話被丟棄時,與遠程訪問用戶相關的IPSec和ISAKMP的SAs(安全關聯(lián))也從SRAS內被丟棄。這樣,在捆綁SRAS后,SGW和LNS相分離的網絡結構的所有缺點都不存在了。圖1給出了應用L2TP技術的網絡拓撲結構。
==================L2TP報頭格式=================
L2TP使用兩種類型的消息:控制消息和數(shù)據消息。控制消息用于隧道和呼叫的建立、維護和清除,它使用L2TP內的可靠控制通道來保證傳送。數(shù)據消息用于封裝隧道傳輸?shù)腜PP幀,當發(fā)生包丟失時不再傳送數(shù)據消息。
PPP幀先由L2TP報頭封裝,再由一種包傳輸機制(如UDP、幀中繼、ATM等)封裝之后在一個不可靠的數(shù)據通道上傳輸。但是,控制消息在一個可靠的L2TP控制通道上傳送,這個控制通道在同一包傳輸機制上傳送包。在所有的控制消息中都需要有序列號,序列號還用于提供控制通道上的可靠傳送。數(shù)據消息可以使用序列號來重新排序數(shù)據包和檢測包的丟失。
控制通道和數(shù)據通道的L2TP數(shù)據包的報頭格式相同(如圖2所示)。在該報頭格式中,當一個可選字段未被選中時,在消息中不為這個字段預留空間。注意:當數(shù)據消息的可選項Ns在消息中出現(xiàn)(即被選中)則可選項Nr必須出現(xiàn)在所有控制消息中。
|
T:消息類型,1 bit。 0 數(shù)據消息;1 控制消息。
L:長度字段出現(xiàn),1 bit,可選.如果設置了這一位,則長度字段出現(xiàn).控制消息中必須設置這一位.
S:序列號出現(xiàn),1 bit。 如果設置了這一位,則Ns和Nr字段出現(xiàn)。控制消息中必須設置這一位。
O:偏移字段出現(xiàn),1 bit, 如果設置了這一位,則 Offset Size字段出現(xiàn).控制消息中必須設置這一位。
P:優(yōu)先權,1 bit。 這一特征只是對數(shù)據消息而言,控制消息都必須設置這一位。如果設置了這一位,則在本地排隊和傳輸中將優(yōu)先處理這個數(shù)據消息。
Version:4 bits. 指明L2TP協(xié)議的版本,必須被設置為2。保留值1用作允許對L2F數(shù)據包的檢測,判斷是否與L2TP數(shù)據包一起到達。當接收到一個版本值未知的數(shù)據包時,必須丟棄這個數(shù)據包。
Length:16 bits。 指明消息的總長度,用字節(jié)表示。
Tunnel ID:16 bits。指明控制連接的標識符。L2TP遂道由只有本地意義的標識符命名;即,同一隧道在隧道的每一端都有不同的Tunnel IDs。每一個消息中的Tunnel ID 都是預定接收者而不是發(fā)送者的Tunnel ID。在隧道創(chuàng)建期間,Tunnel IDs的選擇和交換都是作為Assigned Tunnel ID AVPs(Attribute-Value Pair)進行的。
Session ID,16 bits。 指明一個隧道內的一次會話的標識符 。L2TP 會話由只有本地意義的標識符命名;即,同一個會話在會話的每一端有不同的Session IDs。每一個消息中的Tunnel ID 都是預定接收者而不是發(fā)送者的Session ID。在會話創(chuàng)建期間,Session IDs的選擇和交換都是作為AssignedSession ID AVPs進行的。
Ns:16 bits,可選。 指明數(shù)據消息或控制消息的序列號。從0開始每發(fā)送一個消息加1。
Nr:16 bits,可選。 表明所要收到的下一個控制消息中"預定"的序列號0。因此,Nr被設為所接收到的最后一個消息的Ns加1。若在數(shù)據消息中保留Nr,則接收時必須忽略。
Offset Size:16 bits,可選。 如果出現(xiàn),則指定了L2TP報頭之后的字節(jié)數(shù),因為載荷數(shù)據從這里開始(即載荷數(shù)據的字節(jié)數(shù))。如果offset字段出現(xiàn),則L2TP header在offset padding的最后一個字節(jié)之后結束。
Offset Pad:偏移填充,可變長度,可選。
Data:可變長度。
================= 相關技術與應用==================
4.1 用L2TP控制消息維護隧道
與PPTP不同,L2TP隧道的維護不在獨立的TCP連接上進行。L2TP呼叫控制和管理業(yè)務在L2TP客戶和服務器之間以UDP消息的形式發(fā)送。在Windows 2000中,L2TP客戶和服務器都使用UDP端口1701。值得注意的是,Windows 2000的 L2TP服務器也支持使用的其他UDP端口(UDP端口不為1701)的L2TP客戶。
IP上的 L2TP控制消息以UDP數(shù)據包的形式發(fā)送。在 Windows 2000實現(xiàn)中,這樣的L2TP控制消息作為IPSec ESP的加密載荷發(fā)送, 如圖3所示:
L2TP數(shù)據的隧道傳輸是通過多級封裝實現(xiàn)的。圖4為IPSec隧道數(shù)據進行L2TP封裝之后產生的結構。
其中,Data-Link Layer封裝是為了在LAN或 WAN 連接上傳送,IP數(shù)據包用數(shù)據鏈路層的報頭和報尾封裝。例如,以太網接口上發(fā)送的IP數(shù)據報用以太網報頭和報尾封裝。當IP數(shù)據報在點到點WAN鏈路(如模擬電話線或 ISDN)上傳送時,IP數(shù)據報用一個PPP報頭和報尾來封裝。
接收到L2TP封裝的IPSec隧道數(shù)據后,L2TP客戶或L2TP服務器將進行L2TP的分離處理,過程如下:
處理并剝去數(shù)據鏈路層報頭和報尾;
處理并剝去IP header;
使用IPSec ESP Auth trailer認證IP載荷和IPSec ESP報頭;
使用IPSec ESP header解密數(shù)據包的加密部分;
處理UDP header并將L2TP數(shù)據包發(fā)給L2TP;
L2TP使用L2TP header 中的Tunnel ID和Call ID確定特定的L2TP遂道;
使用PPP header確定PPP載荷,并將它轉發(fā)給適當?shù)膮f(xié)議驅動器進行處理。
4.3 在Windows 2000網絡體系結構中利用L2TP技術實現(xiàn)VPN
圖5說明了隧道傳輸數(shù)據在Windows 2000網絡體系結構中從一個VPN客戶使用一個模擬MODEM在遠程訪問VPN經過的過程:
NDISWAN向L2TP協(xié)議驅動器提供PPP幀,由L2TP協(xié)議驅動器用一個L2TP報頭封裝PPP幀。在L2TP報頭中,將Tunnel ID和Call ID設置成適當?shù)闹狄源_定L2TP隧道。
然后L2TP協(xié)議驅動器向TCP/IP協(xié)議驅動器提交產生的數(shù)據包,同時還要提交將L2TP數(shù)據包以UDP消息形式從UDP端口1701發(fā)送到UDP端口1701,同時提交的還有VPN客戶和服務器的IP地址。
TCP/IP協(xié)議驅動器用適當?shù)腎P報頭和UDP報頭構建一個IP數(shù)據包;然后IPSec分析這個IP數(shù)據包找出與之相匹配的 IPSec。IPSec根據這個策略的設置,使用適當?shù)腅SP 報頭和報尾封裝和加密IP數(shù)據包中的UDP消息部分;將Protocol字段設為50的源IP header添加到ESP數(shù)據包前面。
然后TCP/IP協(xié)議驅動器向使用UDIS表示到本地ISP的撥號連接的接口提交所產生的數(shù)據包。
NDIS向NDISWAN提交這個數(shù)據包。
NSIDWAN提供PPP報頭和報尾,并將產生的PPP幀提交給適當?shù)?、表示撥號硬件的WAN miniport驅動器。
應當注意到,撥號連接可以和ISP協(xié)商一個加密的PPP連接,但是不必要也不推薦這樣做,因為所發(fā)送的專用數(shù)據或隧道傳輸?shù)腜PP幀已經用IPSec加密了,不需要其他層的加密,而且這些加密會影響性能。
==================== 結束語===================
L2TP定義了利用公共網絡基礎設施(如IP網絡、ATM和幀中繼網絡)封裝傳輸鏈路層PPP幀的方法?,F(xiàn)在,Internet中的撥號網絡只支持IP協(xié)議,而且必須使用注冊IP地址,而L2TP可以讓撥號用戶支持多種協(xié)議,如IP、IPX、AppleTalk,且可以使用保留網絡地址,包括保留IP地址。可見,L2TP的應用前景廣泛,尤其是在VPN建設方面