L2TP(Layer 2 Tunneling Protocol,二層隧道協議)是VPDN(Virtual Private Dial-up Network,虛擬私有撥號網)隧道協議的一種。
VPDN是指利用公共網絡(如ISDN或PSTN)的撥號功能接入公共網絡,實現虛擬專用網,從而為企業、小型ISP、移動辦公人員等提供接入服務。即,VPDN為遠端用戶與私有企業網之間提供了一種經濟而有效的點到點連接方式。
VPDN采用專用的網絡通信協議,在公共網絡上為企業建立安全的虛擬專網。企業駐外機構和出差人員可從遠程經由公共網絡,通過虛擬隧道實現和企業總部之間的網絡連接,而公共網絡上其它用戶則無法穿過虛擬隧道訪問企業網內部的資源。
VPDN有以下兩種實現方式:
l 接入服務器發起VPDN連接
NAS(Network Access Server,網絡接入服務器)通過使用VPDN隧道協議,將客戶的PPP連接直接連到企業的VPDN網關上,從而與VPDN網關建立隧道。這些對於用戶是透明的,用戶隻需要登錄一次就可以接入企業網絡,由企業網進行用戶認證和地址分配,而不占用公共地址。該方式需要NAS支持VPDN協議、認證係統支持VPDN屬性。
l 用戶發起VPDN連接
客戶端與VPDN網關建立隧道。這種方式由客戶端先建立與Internet的連接,再通過專用的客戶軟件(如Windows 2000支持的L2TP客戶端)與VPDN網關建立隧道連接。用戶上網的方式和地點沒有限製,不需ISP介入。但是,用戶需要安裝專用的軟件(一般都是Windows 2000平台),限製了用戶使用的平台。
VPDN網關一般使用路由器或VPN專用服務器。
VPDN隧道協議主要包括以下三種:
l PPTP(Point-to-Point Tunneling Protocol,點到點隧道協議)
l L2F(Layer 2 Forwarding,二層轉發)
l L2TP
目前使用最廣泛的是L2TP。
使用L2TP協議構建的VPDN應用的典型組網如圖 1所示。
圖 1 應用L2TP構建的VPDN服務
在L2TP構建的VPDN中,網絡組件包括以下三個部分:
l 遠端係統
遠端係統是要接入VPDN網絡的遠地用戶和遠地分支機構,通常是一個撥號用戶的主機或私有網絡的一台路由設備。
l LAC(L2TP Access Concentrator,L2TP訪問集中器)
LAC是附屬在交換網絡上的具有PPP端係統和L2TP協議處理能力的設備,通常是一個當地ISP的NAS,主要用於為PPP類型的用戶提供接入服務。
LAC位於LNS和遠端係統之間,用於在LNS和遠端係統之間傳遞信息包。它把從遠端係統收到的信息包按照L2TP協議進行封裝並送往LNS,同時也將從LNS收到的信息包進行解封裝並送往遠端係統。
LAC與遠端係統之間采用本地連接或PPP鏈路,VPDN應用中通常為PPP鏈路。
l LNS(L2TP Network Server,L2TP網絡服務器)
LNS既是PPP端係統,又是L2TP協議的服務器端,通常作為一個企業內部網的邊緣設備。
LNS作為L2TP隧道的另一側端點,是LAC的對端設備,是LAC進行隧道傳輸的PPP會話的邏輯終止端點。通過在公網中建立L2TP隧道,將遠端係統的PPP連接的另一端由原來的LAC在邏輯上延伸到了企業網內部的LNS。
PPP定義了一種封裝技術,可以在二層的點到點鏈路上傳輸多種協議數據包,當用戶與NAS之間運行PPP協議時,二層鏈路端點與PPP會話點駐留在相同硬件設備(NAS)上。
L2TP(RFC 2661)是一種對PPP鏈路層數據包進行隧道傳輸的技術,允許二層鏈路端點(LAC)和PPP會話點(LNS)駐留在通過分組交換網絡連接的不同設備上,從而擴展了PPP模型,使得PPP會話可以跨越幀中繼或Internet等網絡。
L2TP結合了L2F和PPTP的各自優點,成為IETF有關二層隧道協議的工業標準。
圖 2描述了控製通道以及PPP幀和數據通道之間的關係。PPP幀在不可靠的L2TP數據通道上進行傳輸,控製消息在可靠的L2TP控製通道內傳輸。
圖 2 L2TP協議結構
圖 3描述了LAC與LNS之間的L2TP數據報文的封裝結構。通常L2TP數據以UDP報文的形式發送。L2TP注冊了UDP 1701端口,但是這個端口僅用於初始的隧道建立過程中。L2TP隧道發起方任選一個空閑的端口(未必是1701)向接收方的1701端口發送報文;接收方收到報文後,也任選一個空閑的端口(未必是1701),給發送方的指定端口回送報文。至此,雙方的端口選定,並在隧道保持連通的時間段內不再改變。
圖 3 L2TP報文封裝結構圖
在一個LNS和LAC對之間存在著兩種類型的連接。
l 隧道(Tunnel)連接:它對應了一個LNS和LAC對。
l 會話(Session)連接:它複用在隧道連接之上,用於表示承載在隧道連接中的每個PPP會話過程。
在同一對LAC和LNS之間可以建立多個L2TP隧道,隧道由一個控製連接和一個或多個會話連接組成。會話連接必須在隧道建立(包括身份保護、L2TP版本、幀類型、硬件傳輸類型等信息的交換)成功之後進行,每個會話連接對應於LAC和LNS之間的一個PPP數據流。
控製消息和PPP數據報文都在隧道上傳輸。L2TP使用Hello報文來檢測隧道的連通性。LAC和LNS定時向對端發送Hello報文,若在一段時間內未收到Hello報文的應答,隧道斷開。
L2TP中存在兩種消息:控製消息和數據消息。
l 控製消息用於隧道和會話連接的建立、維護以及傳輸控製。它的傳輸是可靠傳輸,並且支持對控製消息的流量控製和擁塞控製。
l 數據消息用於封裝PPP幀,並在隧道上傳輸。它的傳輸是不可靠傳輸,若數據報文丟失,不予重傳,不支持對數據消息的流量控製和擁塞控製。
控製消息和數據消息共享相同的報文頭。L2TP報文頭中包含隧道標識符(Tunnel ID)和會話標識符(Session ID)信息,用來標識不同的隧道和會話。隧道標識相同、會話標識不同的報文將被複用在一個隧道上。報文頭中的隧道標識符與會話標識符由對端分配。
L2TP隧道的建立包括以下兩種典型模式。
l NAS-Intiated
如圖 4所示,由LAC端(指NAS)發起L2TP隧道連接。遠程係統的撥號用戶通過PPPoE/ISDN撥入LAC,由LAC通過Internet向LNS發起建立隧道連接請求。撥號用戶的私網地址由LNS分配;對遠程撥號用戶的驗證與計費既可由LAC側代理完成,也可在LNS側完成。
l Client-Initiated
如圖 5所示,直接由LAC客戶(指本地支持L2TP協議的用戶)發起L2TP隧道連接。LAC客戶獲得Internet訪問權限後,可直接向LNS發起隧道連接請求,無需經過一個單獨的LAC設備建立隧道。LAC客戶的私網地址由LNS分配。
在Client-Initiated模式下,LAC客戶需要具有公網地址,能夠直接通過Internet與LNS通信。
L2TP應用的典型組網如圖 6所示。
圖 6 L2TP應用的典型組網
下麵以NAS-Initiated模式的L2TP隧道為例,介紹L2TP的呼叫建立流程。
圖 7 L2TP隧道的呼叫建立流程
如圖 7所示,L2TP隧道的呼叫建立流程過程為:
(1) 遠端係統Host發起呼叫連接請求;
(2) Host和LAC端(RouterA)進行PPP LCP協商;
(3) LAC對Host提供的用戶信息進行PAP或CHAP認證;
(4) LAC將認證信息(用戶名、密碼)發送給RADIUS服務器進行認證;
(5) RADIUS服務器認證該用戶,如果認證通過,LAC準備發起Tunnel連接請求;
(6) LAC端向指定LNS發起Tunnel連接請求;
(7) 在需要對隧道進行認證的情況下,LAC端向指定LNS發送CHAP challenge信息,LNS回送該challenge響應消息CHAP response,並發送LNS側的CHAP challenge,LAC返回該challenge的響應消息CHAP response;
(8) 隧道驗證通過;
(9) LAC端將用戶CHAP response、response identifier和PPP協商參數傳送給LNS;
(10) LNS將接入請求信息發送給RADIUS服務器進行認證;
(11) RADIUS服務器認證該請求信息,如果認證通過則返回響應信息;
(12) 若用戶在LNS側配置強製本端CHAP認證,則LNS對用戶進行認證,發送CHAP challenge,用戶側回應CHAP response;
(13) LNS再次將接入請求信息發送給RADIUS服務器進行認證;
(14) RADIUS服務器認證該請求信息,如果認證通過則返回響應信息;
(15) 驗證通過,LNS端會給遠端用戶分配一個企業網內部IP地址,用戶即可以訪問企業內部資源。
L2TP協議本身並不提供連接的安全性,但它可依賴於PPP提供的認證(比如CHAP、PAP等),因此具有PPP所具有的所有安全特性。L2TP可與IPsec結合起來實現數據安全,這使得通過L2TP所傳輸的數據更難被攻擊。L2TP還可根據特定的網絡安全要求在L2TP之上采用隧道加密技術、端對端數據加密或應用層數據加密等方案來提高數據的安全性。
L2TP傳輸PPP數據包,在PPP數據包內可以封裝多種協議。
LAC和LNS可以將用戶名和密碼發往RADIUS服務器進行驗證申請,RADIUS服務器負責接收用戶的驗證請求,完成驗證。
LNS可放置於企業網的防火牆之後,它可以對遠端用戶的地址進行動態的分配和管理,可支持私有地址應用(RFC 1918)。為遠端用戶所分配的地址不是Internet地址而是企業內部的私有地址,這樣方便了地址的管理並可以增加安全性。
可在LAC和LNS兩處同時計費,即ISP處(用於產生帳單)及企業網關(用於付費及審計)。L2TP能夠提供數據傳輸的出入包數、字節數以及連接的起始、結束時間等計費數據,可根據這些數據方便地進行網絡計費。
L2TP協議支持備份LNS,當主LNS不可達之後,LAC可以與備份LNS建立連接,增加了VPN服務的可靠性和容錯性。