博文目錄
1、Easy 虛擬化專用網須要解決的問題是什麼?
2、如何在路由器上實現Easy 虛擬專用網?
3、配置路由器上實現Easy 虛擬專用網web
因爲「Virtual Private Network」(請看首字母,就知道是什麼咯)是敏\感詞彙,因此在博文中使用它的中文名字「虛擬專用網」來代替。算法
在以前寫過了Cisco路由器IPSec 虛擬專用網原理與詳細配置;Cisco的ASA防火牆和路由器上實現IPSec虛擬專用網。這兩篇博文都是用於實現總公司和分公司之間創建虛擬專用網的,那麼還有一種使用不少的狀況,就是出差人員想要訪問公司內網的資源呢?因爲出差人員只是單一的一個客戶端,因此和前兩篇博文不同,前兩篇博文搭建虛擬專用網,兩端設備都是路由器或防火牆,有固定的IP地址,因此呢,並不能實現出差人員訪問,這篇博文的目的,就是實現出差人員能夠訪問公司內網資源的,這個技術被稱之爲——Easy 虛擬專用網。數據庫
以下圖所示,當兩臺路由器之間通訊的流量出現匹配Crypto ACL的流量時,就會觸發IPSec 虛擬專用網的鏈接。在L2L的IPSec 虛擬專用網創建過程當中,鏈接創建經歷兩個階段。windows
協商採用何種方式創建管理鏈接。安全
經過DH算法共享密鑰信息。服務器
- 對等體彼此進行身份驗證。
定義了對等體間保護何種流量。網絡
定義用來保護數據的安全協議。框架
- 定義傳輸模式。
按照上述過程創建鏈接對於遠程訪問虛擬專用網而言就會存在一些問題。遠程訪問虛擬專用網通常來講,一端是硬件設備,如路由器、防火牆等;另外一端則是客戶端設備,如臺式機、筆記本電腦等。這時客戶端一側的安全性就會存在必定的問題。能夠試想一下,公司網關級的設備與PC的安全管理級別確定是不一樣的,更況且不少員工可能須要從家裏訪問公司的資源,加用的計算機就會存在更多的安全隱患。而整個IPSec 虛擬專用網加密傳輸的根本就是事先配置在設備上的預共享密鑰,一旦密鑰外泄,整個IPSec 虛擬專用網所作的努力全都會付之東流。而IPSec只是考慮經過隧道傳輸提供一種安全的機制,並無引入任何的用戶名/密碼的驗證機制,因此當IPSec被應用於遠程虛擬專用網的時候,將在安全問題上存在很大的隱患。dom
另外一個問題就是,創建L2L IPSec 虛擬專用網時,雙方都有固定的IP地址,這樣咱們纔能有可能在配置crypto map的時候指定對方的peer,纔有可能配置crypto ACL來定義哪些流量將觸發鏈接的創建。可是對於遠程訪問 虛擬專用網而言,客戶端一側的IP是不可能固定的,所以,若是咱們依然按照L2L的思路來創建鏈接是不可能的。ide
IPSec協議最初的設計並未考慮用戶驗證的問題。因此IETF(Internet Engineering Task Force,因特爾網工工程任務部)引入了一個RFC的草案——XAUTH。它是一個虛擬專用網網關的加強特性,提供用戶名和密碼的方式來驗證用戶身份。因爲這個過程是在兩個鏈接創建之間完成的,因此被戲稱爲「階段1.5」。(關於兩個階段的介紹,能夠參考Cisco路由器IPSec 虛擬專用網原理與詳細配置,有詳細的介紹)。
談到用戶驗證天然就會涉及用戶名和密碼的存儲方式 ,一般狀況下有兩種方式:
存儲在虛擬專用網網關設備的內部數據庫中。
- 存儲在第三方設備上,如一臺AAA服務器。
AAA是Authentication(驗證)、Authorization(受權)和Accounting(統計)的縮寫,提供了在網絡設備上配置訪問控制的基本框架。
1)驗證:用戶是誰?
對用戶的合法性進行驗證,包括用戶名、密碼等信息的驗證。
2)受權:用戶能夠作什麼?
在用戶經過驗證後,爲用戶指定其可以使用的服務等權限。
3)統計:用戶作過什麼?
在用戶驗證、受權成功後,記錄用戶的操做等信息,以便於記帳、審計和報告。
實現AAA服務器主要 使用RADIUS協議和TACACS+協議。
RADIUS(Remote Authentication Dial In User Service,遠程驗證撥入用戶服務)是一個全開放的標準協議,廠商或用戶能夠靈活地修改RADIUS。
- TACACS+(Terminal Access Controller System,終端訪問控制器訪問控制系統)是Cisco設計的私有協議。基本再也不使用。
因爲與虛擬專用網網關創建鏈接的客戶端可能會不少,因此peer的IP地址就不會固定,crypto acl也不會惟一。最好的解決辦法就是讓虛擬專用網網關「推送」這些策略給客戶端。可是不少狀況下客戶端的這些策略多是相同的,所以在遠程訪問虛擬專用網中引入組的概念,將這些具備相同策略的客戶端劃分在一個組裏,在虛擬專用網網關上一次性地爲一組客戶端配置策略,這樣在配置過程和管理過程當中都將大大節省工做量。
1)地址池
可使虛擬專用網設備像DHCP服務器同樣爲每一個經過驗證的客戶端「推送」IP地址。這樣,因爲客戶端的IP地址是虛擬專用網網關動態分配的,虛擬專用網設備天然也就知道該與哪一個IP創建虛擬專用網鏈接。以下圖所示:
2)DNS和網關
正像DHCP服務器同樣,除了給客戶端分配IP地址之外,還會分配網關和DNS,虛擬專用網網關也會給客戶端推送網關和DNS,這樣客戶端就擁有了內網的IP、網關及DNS等必備的資源,真正成爲內網的一員,以下圖所示:
3)共享密鑰
在L2L的過程當中,須要根據預共享密鑰演算出用於加密、身份驗證、完整性驗證的密鑰,支持後續虛擬專用網鏈接的創建及數據通訊。在遠程訪問虛擬專用網中,虛擬專用網網關須要與多組客戶端「共享密鑰」,所以在配置虛擬專用網網關時須要爲每組客戶端設置不一樣的共享密鑰,客戶端的密鑰並非虛擬專用網網關推送的,而是須要用戶經過客戶端軟件配置在主機上,而這個過程通常是由公司的網絡管理員來實現的,那麼這個密鑰天然是保存在客戶端主機本地了,所以纔有了「階段1.5」的存在,以下圖所示:
4)分離隧道
默認狀況下,客戶端與虛擬專用網網關創建隧道後,只能訪問內網受權的資源,這是由於隧道會容許全部的流量,也就是說全部的流量必須通過隧道到達公司內網,天然也就不容許任何流量訪問外網,但對於客戶端而言,訪問外網,是再正常不過的需求了,因此須要針對遠程訪問虛擬專用網配置ACL來分離隧道。
經過配置ACL,全部「permit」的流量都被加密傳輸,全部「deny」的流量都被明文傳輸,而加密的流量就是經過隧道訪問公司內網的流量,明文的流量就是訪問Internet的流量,將這個ACL應用到組策略中便可實現需求,以下圖所示:
5)分離DNS
當客戶端主機經過遠程訪問虛擬專用網鏈接到公司內網,即便隧道分離後,客戶端訪問Internet的web服務器時,也須要使用公司內網的DNS解析,但這不是一個合理的過程,細想一下,客戶端每次訪問外網的某一個域名,都須要不一樣地區公司內部進行DNS解析,實際上是沒有必要的;但若是客戶端訪問的是公司內網的Web服務器就須要經過內網的NDS解析。若要實現訪問不一樣的域名使用不一樣的DNS,使用的最佳方案是分離DNS。以下圖所示:
由於咱們沒法實如今虛擬專用網設備的靜態crypto map中指定客戶端的地址(客戶端的地址由虛擬專用網的DHCP服務分發,不是固定的),因此須要將靜態crypto map中須要的參數被動態填充,使用動態crypto map 必須採用ISAKMP/IKE發起協商,並且在實現遠程訪問虛擬專用網的時候一般在虛擬專用網網關上同時配置靜態和動態的crypto map,由於只有一臺具備靜態配置的設備能夠發起IPSec的隧道,也正是如此,動態的crypto map不多被用於L2L(局域網to局域網)會話創建。
在實現遠程訪問虛擬局域網的時候,通常會先配置transform-set,由於指定傳輸集與peer的IP地址無關,能夠將傳輸集直接應用到動態crypto map;因爲在接口上只能配置一個crypto map,且虛擬專用網網關上必須有靜態crypto map,因此需將動態crypto map 應用到靜態的crypto map中,再將靜態crypto map應用到接口上,這就是配置crypto map的通常思路,以下圖所示:
1)在公司網關路由器上配置虛擬專用網,客戶端(出差人員)能夠鏈接到虛擬專用網,並訪問內網提供的DNS服務,使用該域名訪問,內網中的DNS負責解析該域名)。
2)客戶端鏈接到虛擬專用網後,還要實現出差員工能夠訪問ISP路由器的loop back 0接口(模擬Internet網)和訪問R1的loop back 0接口(模擬HTTP服務)。
3)R4上要開啓DHCP服務,給客戶端自動下發IP地址網關及DNS。
3)自行配置正確的路由器接口及各個服務器的IP、網關、路由(服務器配置相應的網關,路由器R1只需配置接口IP及一條默認路由指向R2路由器便可,R2路由器除了接口IP之外什麼都不要配置,尤爲是路由表,不然可能測試不出來虛擬專用網的效果)。
4)客戶端須要安裝Cisco提供的客戶端軟件進行鏈接。
1)下載客戶端使用的軟件,並安裝在客戶端,用來鏈接虛擬專用網(我這裏提供的是windows 7的client安裝包。Cisco客戶端軟件包
1)配置基本網絡參數:
1) R1配置以下: R1(config)#int loo0 #開啓loop back 0接口 R1(config-if)#ip add 1.1.1.1 255.255.255.0 #配置IP地址 R1(config-if)#no shutdown #啓用接口 R1(config-if)#exit R1(config)#int f0/0 R1(config-if)#ip add 192.168.10.1 255.255.255.0 R1(config-if)#no shutdown R1(config-if)#exit R1(config)#line vty 0 4 #配置vty,容許5個終端訪問 R1(config-line)#password pwd@123 #配置telnet密碼 R1(config-line)#login #保存 R1(config-line)#exit R1(config)#enable password pwd@123 #配置全局密碼 2) Easy配置以下: Easy(config)#int f0/0 Easy(config-if)#ip add 192.168.10.254 255.255.255.0 Easy(config-if)#no shutdown Easy(config-if)#exit Easy(config)#int f1/0 Easy(config-if)#ip add 192.168.20.254 255.255.255.0 Easy(config-if)#no shutdown Easy(config-if)#exit Easy(config)#ip route 0.0.0.0 0.0.0.0 192.168.20.1 #配置去往ISP的路由 Easy(config)#ip route 1.1.1.0 255.255.255.0 192.168.10.1 #配置去往R1的loop back 0接口的路由 3) ISP配置以下: ISP(config)#int f1/0 ISP(config-if)#ip add 192.168.20.1 255.255.255.0 ISP(config-if)#no shutdown ISP(config-if)#exit ISP(config)#int f0/0 ISP(config-if)#ip add 192.168.30.1 255.255.255.0 ISP(config-if)#no shutdown ISP(config-if)#exit ISP(config)#int loo0 ISP(config-if)#ip add 2.2.2.2 255.255.255.0 ISP(config-if)#no shutdown ISP(config-if)#exit ISP(config)#line vty 0 4 ISP(config-line)#password pwd@123 ISP(config-line)#login ISP(config-line)#exit ISP(config)#enable password pwd@123 4) R4配置以下: R4(config)#int f0/0 R4(config-if)#ip add 192.168.30.254 255.255.255.0 R4(config-if)#no shutdown R4(config-if)#exit R4(config)#int f1/0 R4(config-if)#ip add 192.168.40.254 255.255.255.0 R4(config-if)#no shutdown R4(config-if)#exit R4(config)#ip route 0.0.0.0 0.0.0.0 192.168.30.1 #配置去往ISP的路由 R4(config)#ip dhcp pool LAN #開啓DHCP服務 R4(dhcp-config)#network 192.168.40.0 255.255.255.0 #下發網段 R4(dhcp-config)#default-router 192.168.40.254 #下發網關 R4(dhcp-config)#dns-server 202.96.0.10 202.96.0.20 #下發首選DNS和備份DNS R4(config)#access-list 10 permit any R4(config)#ip nat inside source list 10 interface f0/0 overload R4(config)#int f0/0 R4(config-if)#ip nat outside R4(config-if)#int f1/0 R4(config-if)#ip nat inside R4(config-if)#exit
Easy-虛擬專用網路由器配置以下:
Easy(config)#aaa new-model #啓用AAA驗證 Easy(config)#aaa authentication login authen local group radius#配置AAA驗證使用radius驗證,名字爲authen Easy(config)#aaa authorization network author local group radius #配置AAA受權使用radius受權資源訪問,受權的名字是author Easy(config)#username benet password pwd@123 #建立easy虛擬專用網驗證的帳戶名和密碼 #配置IPSec 虛擬專用網階段一 Easy(config)#crypto isakmp policy 1 #策略序列號爲「1」 Easy(config-isakmp)#encryption aes #配置加密算法 Easy(config-isakmp)#hash sha #hash命令指定驗證過程當中採用的散列算法 Easy(config-isakmp)#group 2 #配置加密共享密鑰方式使用dh算法 Easy(config-isakmp)#lifetime 86400 #配置保持時間,默認保持時間爲24小時 Easy(config-isakmp)#authentication pre-share #配置共享密鑰的方式爲「預先共享密鑰」 Easy(config-isakmp)#exit Easy(config)#crypto ipsec transform-set bj-set esp-aes esp-sha-hmac #配置傳輸集地址池使用動態map調用傳輸集 Easy(cfg-crypto-trans)#exit Easy(config)#ip local pool ez虛擬專用網 192.168.10.100 192.168.10.200#建立地址池,地址池的名字爲ez虛擬專用網 Easy(config)#crypto dynamic-map dy-map 1#建立動態map,動態map的名字爲dy-map Easy(config-crypto-map)#reverse-route #配置反轉路由 Easy(config-crypto-map)#set transform-set bj-set #動態map調用傳輸集 Easy(config-crypto-map)#exit Easy(config)#crypto isakmp client configuration group remote虛擬專用網# 建立用戶組,名字爲remote虛擬專用網 Easy(config-isakmp-group)#key pwd@123 #設置訪問密碼 Easy(config-isakmp-group)#pool ez虛擬專用網 #用戶組調用地址池 Easy(config-isakmp-group)#dns 2.2.2.2 #給虛擬專用網客戶端下發dns Easy(config-isakmp-group)#domain benet.com #給客戶端下發域名,名字爲benet.com Easy(config-isakmp-group)#exit Easy(config)#crypto map st-map client configuration address respond #建立靜態map,名字爲st-map Easy(config)#crypto map st-map client authentication list authen #靜態map調用驗證,驗證的名字是authen Easy(config)#crypto map st-map isakmp authorization list author#靜態map調用受權,受權的名字是author Easy(config)#crypto map st-map 1 ipsec-isakmp dynamic dy-map #靜態map調用動態map Easy(config)#exit Easy(config)#int f1/0 #進入接口 Easy(config-if)#crypto map st-map #應用靜態map到接口 Easy(config-if)#exit
至此Easy虛擬專用網就已經配置完成了,接下來客戶端安裝client軟件就能夠開始驗證咯。
2)客戶端配置以下:
將我提供的壓縮包解壓後安裝虛擬專用網的客戶端軟件。
語言保持默認下一步就OK
繼續下一步
選擇安裝路徑,我這裏就保持默認,繼續下一步
點擊next,開始安裝
保持默認,結束就能夠了
yes,重啓電腦
按照圖片步驟打開便可
1) 建立ACL抓取要走隧道分離的流量 Easy-***(config)#access-list 100 permit ip 1.1.1.0 0.0.0.255 any Easy-***(config)#access-list 100 permit ip 192.168.10.0 0.0.0.255 any 2)應用隧道分離 Easy-***(config)#crypto isakmp client configuration group remote*** Easy-***(config-isakmp-group)#acl 100 Easy-***(config-isakmp-group)#exit
驗證隧道分離,同時橋接主機能夠訪問R1和ISP的loop back 0接口(注意,***鏈接要斷開從新鏈接一下)我就簡單驗證一下,大家能夠經過ping命令驗證。
至此,效果實現,客戶端既能夠訪問公司內網的服務(R1的loop back 0接口),也能夠訪問Internet的服務。
———— 本文至此結束,感謝閱讀 ————