博文目錄
一、Easy 虛擬化專用網需要解決的問題是什麼?
二、如何在路由器上實現Easy 虛擬專用網?
三、配置路由器上實現Easy 虛擬專用網
由於“Virtual Private Network”(請看首字母,就知道是什麼咯)是敏\感詞彙,所以在博文中使用它的中文名字“虛擬專用網”來代替。
在之前寫過了Cisco路由器IPSec 虛擬專用網原理與詳細配置;Cisco的ASA防火牆和路由器上實現IPSec虛擬專用網。這兩篇博文都是用於實現總公司和分公司之間建立虛擬專用網的,那麼還有一種使用很多的情況,就是出差人員想要訪問公司內網的資源呢?由於出差人員只是單一的一個客戶端,所以和前兩篇博文不一樣,前兩篇博文搭建虛擬專用網,兩端設備都是路由器或防火牆,有固定的IP地址,所以呢,並不能實現出差人員訪問,這篇博文的目的,就是實現出差人員可以訪問公司內網資源的,這個技術被稱之爲——Easy 虛擬專用網。
一、Easy 虛擬化專用網需要解決的問題是什麼?
如下圖所示,當兩臺路由器之間通信的流量出現匹配Crypto ACL的流量時,就會觸發IPSec 虛擬專用網的連接。在L2L的IPSec 虛擬專用網建立過程中,連接建立經歷兩個階段。
1、階段1——建立管理連接
協商採用何種方式建立管理連接。
通過DH算法共享密鑰信息。
- 對等體彼此進行身份驗證。
2、階段2——建立數據連接
定義了對等體間保護何種流量。
定義用來保護數據的安全協議。
- 定義傳輸模式。
按照上述過程建立連接對於遠程訪問虛擬專用網而言就會存在一些問題。遠程訪問虛擬專用網一般來說,一端是硬件設備,如路由器、防火牆等;另一端則是客戶端設備,如臺式機、筆記本電腦等。這時客戶端一側的安全性就會存在一定的問題。可以試想一下,公司網關級的設備與PC的安全管理級別肯定是不同的,更何況很多員工可能需要從家裏訪問公司的資源,加用的計算機就會存在更多的安全隱患。而整個IPSec 虛擬專用網加密傳輸的根本就是事先配置在設備上的預共享密鑰,一旦密鑰外泄,整個IPSec 虛擬專用網所做的努力全都會付之東流。而IPSec只是考慮通過隧道傳輸提供一種安全的機制,並沒有引入任何的用戶名/密碼的驗證機制,所以當IPSec被應用於遠程虛擬專用網的時候,將在安全問題上存在很大的隱患。
另一個問題就是,建立L2L IPSec 虛擬專用網時,雙方都有固定的IP地址,這樣我們纔能有可能在配置crypto map的時候指定對方的peer,纔有可能配置crypto ACL來定義哪些流量將觸發連接的建立。但是對於遠程訪問 虛擬專用網而言,客戶端一側的IP是不可能固定的,因此,如果我們依然按照L2L的思路來建立連接是不可能的。
二、如何在路由器上實現Easy 虛擬專用網?
1、使用XAUTH做用戶驗證
IPSec協議最初的設計並未考慮用戶驗證的問題。所以IETF(Internet Engineering Task Force,因特爾網工工程任務部)引入了一個RFC的草案——XAUTH。它是一個虛擬專用網網關的增強特性,提供用戶名和密碼的方式來驗證用戶身份。由於這個過程是在兩個連接建立之間完成的,所以被戲稱爲“階段1.5”。(關於兩個階段的介紹,可以參考Cisco路由器IPSec 虛擬專用網原理與詳細配置,有詳細的介紹)。
談到用戶驗證自然就會涉及用戶名和密碼的存儲方式 ,通常情況下有兩種方式:
存儲在虛擬專用網網關設備的內部數據庫中。
- 存儲在第三方設備上,如一臺AAA服務器。
2、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設計的私有協議。基本不再使用。
3、組策略
由於與虛擬專用網網關建立連接的客戶端可能會很多,所以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。如下圖所示:
4、動態Crypto Map
因爲我們無法實現在虛擬專用網設備的靜態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的一般思路,如下圖所示:
三、配置路由器上實現Easy 虛擬專用網
1、網絡環境如下:
2、環境分析:
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提供的客戶端軟件進行連接。
3、配置前準備:
1)下載客戶端使用的軟件,並安裝在客戶端,用來連接虛擬專用網(我這裏提供的是windows 7的client安裝包。Cisco客戶端軟件包
4、開始配置:
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,重啓電腦
按照圖片步驟打開即可
5、配置隧道分離,(橋接主機訪問R1loop back0接口走隧道分離而不是走Easy-虛擬專用網)
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的服務。
———— 本文至此結束,感謝閱讀 ————