1. 程式人生 > 實用技巧 >虛擬專用網路(×××)連線基礎

虛擬專用網路(×××)連線基礎

遠端訪問是指通過透明的方式將位於本地網路以外(遠端網路)位置上的特定計算機連線到本地網路中的一系列相關技術。當啟用遠端訪問時,遠端客戶可以通過遠端訪問技術像直接連線到本地網路一樣來使用本地網路中的資源。在Windows伺服器作業系統中均包含了遠端訪問服務,它是作為路由和遠端訪問服務中的一個元件,遠端訪問服務支援遠端訪問客戶端使用撥號網路連線和虛擬專用網路連線這兩種方式的遠端訪問:
  • 撥號網路連線遠端訪問方式:通過撥號遠端訪問方式,遠端訪問客戶端可以利用電信基礎設施(通常情況下為模擬電話線路)來建立通向遠端訪問伺服器的臨時物理電路或虛擬電路。一旦這種物理電路或虛擬電路被建立,其餘連線引數將通過協商方式加以確定。
  • 虛擬專用網路(×××)連線遠端訪問方式:通過虛擬專用網路遠端訪問方式,×××客戶端可以 通過IP網路(例如Internet)與充當×××伺服器的遠端訪問伺服器建立虛擬點對點連線。一旦這種虛擬點對點連線被建立,其餘連線引數將通過協商方式加以確定。
由於IP網路的流行,撥號網路連線遠端訪問方式已經基本不再使用。在此我僅對虛擬專用網路(×××)連線遠端訪問方式進行闡述。對於一個完整的×××遠端訪問連線,它由以下元素組成:
遠端訪問×××客戶端 ×××客戶端既可以是獨立的計算機,也可以是建立站點到站點×××連線的×××伺服器。而根據×××客戶端型別的不同,×××分為以下兩種連線型別:
  • 遠端訪問×××:由一臺獨立的計算機作為×××客戶端向×××伺服器發起×××連線,從而此×××客戶端計算機可以訪問×××伺服器所連線的內部網路中的資源。Windows XP、Windows 2000、Windows NT 4.0、Windows ME和Windows 98 ×××客戶端均可與Windows的×××伺服器或執行其它大多數×××伺服器的遠端訪問伺服器建立×××連線。
    這種型別的×××又稱為客戶端到伺服器×××。
  • 站點到站點×××:在連線到不同內部網路的兩臺×××伺服器之間進行×××連線,當×××連線成功建立後,它們所連線的內部網路中均可以相互進行訪問,就像直接通過物理鏈路連線到一起。×××伺服器會將通過×××連線的資料進行加密和封裝,但是本地子網中的客戶和×××伺服器之間的通訊並不會進行加密。Windows的×××伺服器均可以和其他×××伺服器建立站點到站點的×××連線。這種型別的×××又稱為閘道器×××或路由器到路由器×××。
遠端訪問×××伺服器 基於Windows伺服器作業系統的遠端訪問伺服器能夠接受基於PPTP或L2TP/IPSec的遠端訪問×××連線,或者基於PPTP、L2TP/IPSec或IPSec隧道模式的站點到站點×××連線。 ×××承載鏈路 遠端訪問×××客戶端必須能夠通過IP網路訪問到遠端訪問×××伺服器,如果×××伺服器位於某個內部網路而×××客戶端位於Internet之上,那麼必須在×××伺服器連線到Internet的閘道器上為×××伺服器做埠對映。 ×××協議 Windows遠端訪問伺服器與客戶端支援兩種遠端訪問×××協議 :
  • 端到端隧道協議(PPTP)
  • 第二層隧道協議(L2TP)
而對於站點到站點×××連線,除了使用上述協議外,你還可以使用IPSec隧道模式。   端到端隧道協議(PPTP) 端到端隧道協議(PPTP)是微軟基於PPP協議開發的隧道協議,在RFC 2637中進行定義,在Windows系統中廣泛使用。PPTP首先在Windows NT 4.0中提供支援,並且隨TCP/IP協議一起自動進行安裝。PPTP是對端到端協議(PPP)的一種擴充套件,它採用了PPP所提供的身份驗證、壓縮與加密機制,並且通過Microsoft端到端加密(MPPE)技術來對資料包進行加密、封裝和隧道傳輸。 PPTP具有以下特性:
  • PPTP幀通過通用路由封裝(Generic Routing Encapsulation,GRE,協議ID 47)報頭和IP報頭(TCP 1723)進行封裝,在IP報頭中提供了與×××客戶端和×××伺服器相對應的源IP地址和目標IP地址;
  • 使用Microsoft端到端加密(MPPE)技術來對多種協議的資料包進行加密、封裝和在IP網路上進行隧道傳輸;
  • PPTP隧道連線協商身份驗證、壓縮與加密;
  • PPTP支援×××客戶端IP地址的動態分配;
  • MPPE使用RSA/RC4演算法和40位、56位或128位的金鑰進行加密;
  • MPPE將通過由MS-CHAP、MS-CHAP v2或EAP-TLS身份驗證過程所生成的加密金鑰對PPP幀進行加密,因此為對PPP幀中所包含的有效資料進行加密,虛擬專用網路客戶端必須使用MS-CHAP、MS-CHAP v2或EAP-TLS身份驗證協議;PPTP將利用底層PPP加密功能並直接對原先經過加密的PPP幀進行封裝;
  • 初始加密金鑰在使用者身份驗證時產生並且定期重新整理;
  • 在PPTP資料包中,只有資料負載才進行了加密。
如果使用PPTP協議的×××客戶端部署在NAT閘道器之後,那麼要求NAT閘道器具有理解PPTP協議的NAT編輯器,否則×××客戶將不能建立×××連線。目前的絕大部分NAT閘道器中都具有PPTP NAT編輯器,均可以很好的支援PPTP協議。   第二層隧道協議(L2TP) 第二層隧道協議(L2TP)是微軟PPTP隧道協議和CISCO第二層轉發協議(L2F)的結合體,在RFC 2661中進行定義(最新的版本是L2TPv3,在RFC 3931中定義)。與PPTP利用MPPE進行資料包加密不同,L2TP依靠Internet協議安全性(IPSec)技術提供加密服務。L2TP與IPSec的結合產物稱為L2TP/IPSec,×××客戶端與×××伺服器都必須支援L2TP和IPSec才能使用L2TP/IPSec。L2TP將隨同路由與遠端訪問服務一起自動進行安裝。 在IPSec資料包基礎上所進行的L2TP封裝由兩個層次組成:
  • L2TP封裝: PPP幀(IP或IPX資料包)將通過L2TP報頭和UDP報頭進行封裝。
  • IPSec封裝: 上述封裝後所得到的L2TP報文將通過IPSec封裝安全性有效載荷(ESP)報頭、用以提供訊息完整性與身份驗證的IPSec身份驗證報尾以及IP報頭再次進行封裝。IP報頭中將提供與×××客戶端和×××伺服器相對應的源IP地址和目標IP地址。IPSec加密機制將通過由IPSec身份驗證過程所生成的加密金鑰對L2TP報文進行加密。
L2TP具有以下特性:
  • L2TP隧道資料可以在任何支援點對點傳輸的網路中進行傳輸,例如IP、幀中繼、ATM網路等等;
  • L2TP使用UDP協議來進行隧道管理;
  • L2TP基於UDP協議傳送封裝的PPP資料包;
  • 負載資料可以被加密和壓縮;
  • 使用IPSec封裝安全性有效載荷(ESP)進行加密,IPSec ESP在RFC 3193中進行定義;
  • 雖然L2TP/IPSec提供了使用者驗證機制,但是同樣要求計算機進行驗證。計算機驗證是相互的,每一端的計算機都必須向對方進行驗證;
  • 對於計算機驗證,要求計算機證書。×××客戶端和×××伺服器(遠端訪問×××)、或兩端的×××伺服器(站點到站點×××)都必須具有有效的證書。你可以配置使用預共享的L2TP金鑰,這樣就無需計算機證書,但是由於所有×××客戶都必須配置相同的預共享金鑰,這樣帶來的後果是極大的降低了L2TP的安全性。
  • 每一端都必須能夠驗證另一端提供的證書是否有效,如果計算機證書是由不同的證書權威頒發,那麼會出現問題。
和PPTP協議不一樣,如果基於L2TP/IPSec協議的×××客戶端部署在NAT閘道器之後,只有×××伺服器和×××客戶端支援IPSec NAT穿越(NAT-T)時,×××客戶端才能和×××伺服器成功建立×××連線。NAT-T在RFC 3947中進行定義,它描述了IPSec協議如何穿越NAT伺服器。和L2TP/IPSec使用UDP埠500、1701不同,NAT-T使用UDP 4500埠。Windows Server 2003、Microsoft L2TP/IPSec ×××客戶端軟體和L2TP/IPSec NAT-T更新後的Windows XP和Windows 2000支援NAT-T。 但是,微軟不推薦在NAT閘道器後的Windows server 2003上使用IPSec NAT-T,並且修改了Windows XP SP2中的IPSec通訊行為,使其預設情況下不再支援NAT閘道器後的IPSec NAT-T。詳情請參見KB885348,IPSec NAT-T is not recommended for Windows Server 2003 computers that are behind network address translatorsKB885407,The default behavior of IPsec NAT traversal (NAT-T) is changed in Windows XP Service Pack 2    

IPSec隧道模式

對於站點到站點×××連線,除了上述的PPTP和L2TP/IPSec外,你還可以使用IPSec隧道模式。IPSec隧道模式單獨使用IPSec來建立一個加密的隧道,通常用於和不支援L2TP/IPSec或PPTP協議的非Windows ×××伺服器之間建立加密通訊。和L2TP、PPTP不同,IPSec隧道模式不需要驗證使用者賬戶,它具有以下特性:
  • IP資料包通過IPSec進行加密,並在IP網路上進行隧道傳輸;
  • IPSec隧道模式只能用於站點到站點的×××型別;
  • IPSec隧道模式需要額外的IPSec安全策略配置;
    選擇遠端訪問×××協議 PPTP和L2TP/IPSec的區別主要有:
  • PPTP使用MPPE進行加密,L2TP/IPSec和IPSec隧道模式使用IPSec ESP進行加密。
  • PPTP加密在PPP身份驗證通過後處理連線時開始,因此,身份驗證過程沒有被MPPE加密。L2TP/IPSec會先進行安全協商再進行身份驗證,並對PPP身份驗證資料包進行加密,因此L2TP/IPSec比PPTP提供了更高的安全性。
  • PPTP使用MMPE和RC4,而L2TP/IPSec使用DES或3DES;
  • PPTP和L2TP/IPSec均要求使用者使用基於PPP的身份驗證協議進行身份驗證;
  • L2TP/IPSec還要求使用計算機證書進行計算機驗證。因此,L2TP/IPSec提供了更強壯的身份驗證過程。但是,帶來的不便之處是L2TP/IPSec需要公共金鑰基礎服務(PKI)或預共享的連線金鑰,而PPTP則無需PKI。
  • IPSec ESP要求基於資料包的資料來源驗證和資料完整性驗證,另外,IPSec ESP提供了中繼保護,這防止了資料包的重現***;而PPTP沒有提供這些保護。
  • IPSec ESP和PPTP(通過使用MPPE)提供了基於每個資料包的加密。
  • 你可以將基於PPTP的×××伺服器部署在NAT閘道器後,但是不建議將基於L2TP/IPSec、IPSec的×××伺服器部署在NAT閘道器後。
  • L2TP/IPSec比PPTP更耗費CPU效能。
在選擇×××協議時,你應考慮以下幾點:
  • 是否存在公共金鑰基礎服務(PKI),如果不存在則選擇PPTP;強烈建議不要在商用網路中通過預共享的連線金鑰來使用L2TP,這樣會極大的降低L2TP的安全性;
  • 如果要求最高的安全級別,選擇L2TP/IPSec;
  • 只有在特別需要時才使用IPSec隧道模式;
  • 如果企業安全策略要求DES或3DES,則使用L2TP/IPSec;
  • 如果使用IPSec導致CPU負荷過重,使用PPTP;
  • 如果×××伺服器部署在NAT閘道器後,選擇PPTP;
  • 部署PPTP比部署IPSec更為簡單。 對於×××客戶的身份驗證、訪問授權和記賬,你可以選擇兩種不同的方式:Windows或RADIUS。你可以為這三種功能選擇一種方式,也可以選擇一種方式用於身份驗證和授權,而另一種用於記賬。 當使用Windows驗證時,如果×××伺服器是獨立伺服器,則使用本地賬戶(SAM)來驗證×××客戶;如果×××伺服器是域成員伺服器,則使用活動目錄資料庫來驗證×××客戶。如果使用RADIUS進行身份驗證,那麼就算×××伺服器是獨立伺服器,也可以通過RADIUS使用活動目錄資料庫來進行驗證。在Windows伺服器中同樣提供了RADIUS伺服器元件,不過被稱為Internet驗證伺服器(IAS) ,關於Internet驗證伺服器更詳細的資訊,請參見Internet驗證服務使用指南一文。 PPTP和L2TP/IPSec均要求使用者進行身份驗證,並且對於L2TP/IPSec,你必須配置使用者身份驗證和計算機身份驗證。Windows ×××伺服器支援的身份驗證方式有:
    • 可擴充套件身份驗證協議(EAP)
    • Microsoft質詢式握手身份驗證協議(MS-CHAP)
    • MS-CHAP第2版(MS-CHAP v2)
    • 質詢式握手身份驗證協議(CHAP)
    • Shiva式口令身份驗證協議(SPAP)
    • 可擴充套件身份驗證協議(EAP,包含EAP-MD5、EAP-TLS、EAP/MS-CHAPv2等等)
    它們之間的詳細區別請參考Windows的幫助,常用的身份驗證方式是MS-CHAP、MS-CHAP v2和EAP-TLS。 當×××客戶通過身份驗證時,×××伺服器將通過撥入×××的使用者賬戶的撥入屬性來決定是否允許它的遠端訪問,如下圖所示: rrasfoundation01.jpg 其中: 允許訪問:顯式允許×××客戶的遠端訪問; 拒絕訪問:顯式拒絕×××客戶的遠端訪問; 通過遠端訪問策略控制訪問:根據×××伺服器配置的授權方式的不同(Windows還是RADIUS),通過自己的遠端訪問策略(Windows方式)或RADIUS伺服器的遠端訪問策略(RADIUS方式)來決定是否允許×××客戶的訪問。遠端訪問策略是定義是否授權×××客戶遠端訪問的一系列規則集合,×××伺服器按照從上到下的順序執行第一個匹配×××客戶連線請求的遠端訪問策略。如果×××客戶匹配某個授權訪問的遠端訪問策略,則×××伺服器允許×××客戶的撥入,如果×××客戶不匹配任何授權訪問的遠端訪問策略或者匹配某個拒絕訪問的遠端訪問策略,則×××伺服器拒絕×××客戶端的訪問。 如果此RRAS伺服器屬於活動目錄,你需要提升域功能級為Windows 2000 Native或者Windows server 2003後,才能使用通過遠端訪問策略控制訪問選項。並且此RRAS伺服器的計算機賬戶必須加入到域本地安全組RAS and IAS Servers組中,否則該RRAS伺服器不能讀取域使用者的撥入許可權設定。 在啟用路由和遠端訪問服務時,會自動加入到RAS and IAS Servers組中,如果沒有自動加入,你可以手動進行新增或者在路由和遠端訪問伺服器上執行Netsh ras add registeredserver命令。 當×××伺服器允許×××客戶撥入×××時,將會為×××客戶分配一個IP地址。你可以配置×××伺服器通過內部網路中的DHCP伺服器來為×××客戶分配一個IP地址,也可以手動配置一個靜態IP地址範圍來為×××客戶進行分配。但是,如果配置使用和內部網路不一致的子網來用於×××客戶的地址分配時,你必須新增內部網路通過×××伺服器到達×××客戶的路由。關於×××客戶的地址分配更詳細的資訊,請參見網路專家Gable Guy的文章“IP 地址分配與“路由和遠端訪問”服務”以及ISA中文站中我的文章關於ISA防火牆中×××服務的一些補充說明 當×××客戶建立×××撥號連線時,預設會啟用遠端網路上的預設閘道器,即把×××連線作為自己的預設閘道器。這將導致×××客戶不能訪問除自己本地子網外的其他本地網路,也不能通過本地網路連線到Internet。關於此選項的詳細資訊,請參見網路專家Gable Guy的文章“針對並行訪問Internet和Intranet的分割隧道功能”。