網路隧道
傳輸網路協議的技術
網路隧道(tunnel)是在網路中用一種網路協議封裝另一種不同協議的傳輸技術。其中封裝其他協議的封裝協議起著承載的作用,而被封裝的協議是封裝協議的載荷。通過網路隧道,某種載荷能夠經過一種不兼容的承載網路進行傳輸,或實現經公共網路的安全通路。
現有兩種類型的網路隧道協議,一種是二層隧道協議,用於傳輸二層網路協議,它主要應用於構建遠程訪問虛擬專網(Access VPN);另一種是三層隧道協議,用於傳輸三層網路協議,它主要應用於構建企業內部虛擬專網(Intranet VPN)和擴展的企業內部虛擬專網(Extranet VPN)。
二層隧道協議主要有三種。一種是微軟、Ascend、3COM 等公司支持的 PPTP(Point to Point Tunneling Protocol,點對點隧道協議),在 Windows NT 4.0以上版本中即有支持。另一種是 Cisco、北方電信等公司支持的L2F(Layer 2 Forwarding,二層轉發協議),在 Cisco 路由器中有支持。而由 IETF 起草,微軟 Ascend 、Cisco、 3COM 等公司參與的 L2TP(Layer 2 Tunneling Protocol,二層隧道協議)結合了上述兩個協議的優點,將很快地成為 IETF 有關二層隧道協議的工業標準。 L2TP 作為更優更新的標準,已經得到了如:Cisco Systems,Microsoft,Ascend,3Com 等的支持,以後還必將為更多的網路廠商所支持,將是使用最廣泛的 VPN 協議。
下面將簡單介紹一下 L2TP 網路協議。應用 L2TP 所構建的典型 VPN 服務的結構 其中,LAC 表示 L2TP 訪問集中器(L2TP Access Concentrator ),是附屬在交換網路上的具有 PPP 端系統和 L2TP 協議處理能力的設備,LAC 一般就是一個網路接入伺服器 NAS(Network Access Server)它用於為用戶通過 PSTN/ISDN 提供網路接入服務;LNS表示 L2TP 網路伺服器(L2TP Network Server),是 PPP 端系統上用於處理 L2TP 協議伺服器端部分的軟體。
在一個 LNS 和 LAC 對之間存在著兩種類型的連接,一種是隧道(tunnel)連接,它定義了一個 LNS 和 LAC 對;另一種是會話(session)連接,它復用在隧道連接之上,用於表示承載在隧道連接中的每個 PPP 會話過程。 L2TP 連接的維護以及 PPP 數據的傳送都是通過 L2TP 消息的交換來完成的,這些消息再通過 UDP的 1701 埠承載於 TCP/IP 之上。L2TP 消息可以分為兩種類型,一種是控制消息,另一種是數據消息。控制消息用於隧道連接和會話連接的建立與維護。數據消息用於承載用戶的 PPP 會話數據包。
L2TP 連接的維護以及 PPP 數據的傳送都是通過 L2TP 消息的交換來完成的,這些消息再通過UDP的1701埠承載於 TCP/IP之上。控制消息中的參數用 AVP 值對(Attribute Value Pair)來表示,使得協議具有很好的擴展性;在控制消息的傳輸過程中還應用了消息丟失重傳和定時檢測通道連通性等機制來保證了 L2TP 層傳輸的可靠性。數據消息用於承載用戶的 PPP 會話數據包。L2TP 數據消息的傳輸不採用重傳機制,所以它無法保證傳輸的可靠性,但這一點可以通過上層協議如 TCP 等得到保證;數據消息的傳輸可以根據應用的需要靈活地採用流控或不流控機制,甚至可以在傳輸過程中動態地使用消息序列號從而動態地激活消息順序檢測和流量控制功能;在採用流量控制的過程中,對於失序消息的處理採用了緩存重排序的方法來提高數據傳輸的有效性。
L2TP 還具有適用於VPN 服務的以下幾個特性:
靈活的身份驗證機制以及高度的安全性 L2TP 可以選擇多種身份驗證機制(CHAP、PAP 等),繼承了 PPP 的所有安全特性,L2TP 還可以對隧道端點進行驗證,這使得通過 L2TP 所傳輸的數據更加難以被攻擊。而且根據特定的網路安全要求還可以方便地在 L2TP 之上採用隧道加密、端對端數據加密或應用層數據加密等方案來提高數據的安全性。
內部地址分配支持 LNS可以放置於企業網的防火牆之後,它可以對於遠端用戶的地址進行動態的分配和管理,可以支持 DHCP 和私有地址應用(RFC1918)等方案。遠端用戶所分配的地址不是Internet地址而是企業內部的私有地址,這樣方便了地址的管理並可以增加安全性。
網路計費的靈活性
可以在LAC和LNS兩處同時計費,即ISP處(用於產生帳單)及企業處(用於付費及審記)。L2TP 能夠提供數據傳輸的出入包數,位元組數及連接的起始、結束時間等計費數據,可以根據這些數據方便地進行網路計費。
可靠性
L2TP 協議可以支持備份 LNS,當一個主 LNS 不可達之後,LAC(接入伺服器)可以重新與備份 LNS 建立連接,這樣增加了 VPN 服務的可靠性和容錯性。統一的網路管理 L2TP 協議將很快地成為標準的 RFC 協議,有關 L2TP 的標準 MIB 也將很快地得到制定,這樣可以統一地採用 SNMP 網路管理方案進行方便的網路維護與管理。
用於傳輸三層網路協議的隧道協議叫三層隧道協議。三層隧道協議並非是一種很新的技術,早已出現的 RFC 1701 Generic Routing Encapsulation(GRE)協議就是個三層隧道協議。新出來的 IETF 的 IP 層加密標準協議 IPSec 協議也是個三層隧道協議。
IPSec 協議不是一個單獨的協議,它給出了應用於IP層上網路數據安全的一整套體系結構,它包括網路安全協議 Authentication Header(AH)協議和 Encapsulating Security Payload(ESP)協議、密鑰管理協議Internet Key Exchange (IKE)協議和用於網路驗證及加密的一些演演算法等。IPSec 規定了如何在對等層之間選擇安全協議、確定安全演演算法和密鑰交換,向上提供了訪問控制、數據源驗證、數據加密等網路安全服務。
GRE 與 IP in IP、IPX over IP 等封裝形式很相似,但比他們更通用。很多協議的細微差異都被忽略,這就導致了它不是建議用在某個特定的“X over Y”進行封裝,所以是一種最基本的封裝形式。
在最簡單的情況下,系統接受到一個需要封裝和路由的數據報,我們稱之為有效報文(Payload)。這個有效報文首先被 GRE 封裝然後被稱之為 GRE 報文,這個報文接著被封裝在 IP 協議中,然後完全由 IP 層負責此報文的向前傳輸(Forwarded)。我們也稱這個負責向前傳輸的IP 協議為傳遞(Delivery)協議或傳輸(Transport)協議。整個被封裝的報文具有圖2 所示形式: Delivery Header(transpor Protocol) GRE Header(Encapsulation Protocol) Payload Packet(Passenger Protocol) 圖2 通過 GRE 傳輸報文形式 GRE 的作用如下:多協議的本地網通過單一協議的骨幹網傳輸的服務 將一些不能連續的子網連接起來;這一點用於組建 VPN 擴大了網路的工作範圍,包括那些路由網關有限的協議;如 IPX 包最多可以轉發16次(既經過16個路由器),而在一個 Tunnel 連接中看上去只經過一個路由器 IPSec IPSec,IP 安全協議,是一組開放協議的總稱,在特定的通信方之間提供數據的私有性、完整性保護,並能對數據源進行驗證。IPSec 使用 IKE 進行協議及演演算法的協商,並採用由 IKE 生成的密碼來加密和驗證。IPSec 用來保證數據包在 Internet 網上傳輸時的私有性、完整性和真實性。IPSec 在 IP 層提供這些安全服務,對 IP 及所承載的數據提供保護。這些服務是通過兩個安全協議 AH 和 ESP,通過加密等過程實現的。這些機制的實現不會對用戶、主機或其它 Internet 組件造成影響;用戶可以選擇不同的加密演演算法,而不會對實現的其它部分造成影響。
IPSec 提供以下幾種網路安全服務:
私有性 - IPsec 在傳輸數據包之前將其加密,以保證數據的私有性
完整性 - IPsec 在目的地要驗證數據包,以保證該數據包在傳輸過程中沒有被替換
真實性 - IPsec 端要驗證所有受 IPsec 保護的數據包
反重複 - IPsec 防止了數據包被撲捉並重新投放到網上,即目的地會拒絕老的或重複的數據包;它通過與 AH 或 ESP 一起工作的序列號實現 IPSec 協議本身定義了如何在 IP 數據包中增加欄位來保證 IP 包的完整性、私有性和真實性,這些協議還規定了如何加密數據包。使用 IPsec,數據就可以在公網上傳輸,而不必擔心數據被監視、修改或偽造了。IPsec 提供了兩個主機之間、兩個安全網關之間或主機和安全網關主機的保護。
IPSec 定義了兩個新的數據包頭增加到 IP 包,這些數據包頭用於保證 IP 數據包的安全性。這兩個數據包頭由AH(Authentication Header)和 ESP(Encapsulating Security Payload)規定。在網關上實現 IPSec,AH 將插到標準IP包頭後面,它保證數據包的完整性和真實性,防止黑客截斷數據包或向網路中插入偽造的數據包。AH 採用了安全哈希演演算法來對數據包進行保護。AH 沒有對用戶數據進行加密。ESP 將需要保護的用戶數據進行加密后再封裝到IP包中,ESP 可以保證數據的完整性、真實性和私有性。
IPSec 有隧道和傳送兩種工作方式。在隧道方式中,用戶的整個 IP數據包被用來計算 ESP 頭,且被加密,ESP 頭和加密用戶數據被封裝在一個新的 IP 數據包中;在傳送方式中,只是傳輸層(如TCP、UDP、ICMP)數據被用來計算 ESP 頭,ESP 頭和被加密的傳輸層數據被放置在原IP包頭後面。當 IPSec 通信的一端為安全網關時,必須採用隧道方式。
Internet 密鑰交換協議(IKE)用於在兩個通信實體協商和建立安全相關,交換密鑰。安全相關(Security Association)是 IPSec 中的一個重要概念。一個安全相關表示兩個或多個通信實體之間經過了身份認證,且這些通信實體都能支持相同的加密演演算法,成功地交換了會話密鑰,可以開始利用 IPSec 進行安全通信。IPSec 協議本身沒有提供在通信實體間建立安全相關的方法,利用 IKE 建立安全相關。IKE 定義了通信實體間進行身份認證、協商加密演演算法以及生成共享的會話密鑰的方法。IKE中身份認證採用共享密鑰和數字簽名兩種方式,密鑰交換採用 Diffie Hellman 協議。
安全相關也可以通過手工方式建立,但是當 VPN 中結點增多時,手工配置將非常困難。