Cisco 路由器之Easy虛擬專用網(解決出差員工訪問公司內網)
- 2019 年 11 月 13 日
- 筆記
在之前寫過了Cisco路由器之IPSec 虛擬專用網;在Cisco的ASA防火牆上實現IPSec虛擬專用網。這兩篇博文都是用於實現總公司和分公司之間建立虛擬專用網的,那麼還有一種使用很多的情況,就是出差人員想要訪問公司內網的資源呢?由於出差人員只是單一的一個客戶端,所以和前兩篇博文不一樣,前兩篇博文.da.建.虛.擬.專.用網,兩端設備都是路由器或防火牆,有固定的IP地址,所以呢,並不能實現出差人員訪問,這篇博文的目的,就是實現出差人員可以訪問公司內網資源的,這個技術被稱之為——Easy 虛擬專用網。
傳送門: Cisco路由器之IPSec 虛擬專用網:https://blog.51cto.com/14227204/2448319 Cisco ASA 實現 IPSec 虛擬專用網:https://blog.51cto.com/14227204/2448965
一、在路由器上實現Easy 虛擬專用網需要配置什麼?這篇博文將寫下如何在路由器上實現Easy 虛擬專用網。如果網關設備是Cisco ASA防火牆,配置可參考: 1、XAUTH身份驗證 在原有的IPSec協議上,並沒有用戶驗證的功能,所以引入了一個RFC的草案——XAUTH。它是一個虛擬專用網網關的增強特性,提供用戶名和密碼的方式來驗證用戶身份。由於這個過程是在兩個連接建立之間完成的,所以被戲稱為「階段1.5」(關於兩個階段的介紹,可以參考Cisco路由器之IPSec 虛擬專用網,有詳細的介紹)。
談到用戶驗證自然就涉及到了用戶名和密碼的存儲方式,通常情況下有兩種方式:
- 存儲在虛擬專用網網關設備的內部數據庫中,實現簡單,我接下來就使用這種方式;
- 存儲在第三方設備上,如一台AAA服務器。
2、組策略 要實現Easy 虛擬專用網,那麼一定要在虛擬專用網設備上配置一些策略,然後,當客戶端來連接虛擬專用網設備時,經過身份驗證後,主動將配置的策略推送給客戶端,以便成功建立連接,那麼這個提前被配置的策略就被稱之為組策略。
組策略包含如下: (1)地址池:可以使虛擬專用網設備像DHCP服務器一樣為每個通過驗證的客戶端「推送」IP地址。這樣,由於客戶端的IP地址是虛擬專用網網關動態分配的,虛擬專用網設備自然也就知道該與哪個IP建立虛擬專用網連接。示意圖如下:

(2)DNS和網關:和DHCP服務器一樣,除了給客戶端分配IP地址以外,還要分配網關和DNS,這樣客戶端就擁有了內網的IP、網關及DNS等必備的資源,真正成為內網的一員,如下所示:

(3)交換共享密鑰:在遠程訪問虛擬專用網中,虛擬專用網網關需要與多組客戶端「共享密鑰」,因此在配置虛擬專用網時需要為每組客戶端設置不同的共享密鑰,客戶端的密鑰並不是虛擬專用網網關推送的,而是需要用戶通過客戶端軟件配置在主機上,而這個過程一般是由公司的網絡管理員來實現的,那麼這個密鑰自然是保存在客戶端主機本地了,因此才有了「階段1.5」的存在,如下:

(4)分離隧道:默認情況下,客戶端與虛擬專用網網關建立隧道後,只能訪問內網授權的資源,這是因為隧道會允許所有的流量,也就是說所有的流量必須經過隧道到達公司內網,自然也就不允許任何流量fang wen wai wang ,而對於客戶端來說,fang wen wai wang,再正常不過了,所以需要針對遠程訪問虛擬專用網配置ACL來分離隧道,通過配置ACL,所有「permit」的流量都被加密傳輸,所有「deny」的流量都被明文傳輸,而加密的流量就是通過隧道訪問公司內網的流量,明文的流量就是訪問Internet的流量,將這個ACL應用到組策略中即可實現需求,如下:

(5)分離DNS:當客戶端主機通過遠程訪問虛擬專用網連接到公司內網,即使隧道分離後,客戶端訪問Internet的web服務器時,也需要使用公司內網的DNS解析,但這不是一個合理的過程,如果客戶端每次訪問百度,都要經過公司內網進行DNS解析,其實是沒必要的,太浪費資源了,所以要實現客戶端訪問公司內網的web服務器時,使用公司內網的DNS解析,若訪問百度,則使用Internet的DNS,如果要實現不同的域名使用不同的DNS,就需要用到了分離DNS,如下圖:

3、動態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的一般思路,如下圖所示:

二、配置實例 1、環境如下:

2、環境分析:
(1)在公司網關路由器上配置虛擬專用網,客戶端(出差人員)可以連接到虛擬專用網,並訪問內網提供的DNS服務及HTTP(www.test.com ) 服務(使用該域名訪問,內網中的DNS負責解析該域名),為了簡化環境,所以集成到一台服務器上了。 (2)客戶端連接到虛擬專用網後,還可以使用Internet的DNS及HTTP服務,模擬www.baidu.com 網站服務,並使用Internet上的服務器提供的DNS服務解析該域名。 (3)自行配置正確的路由器接口及各個服務器的IP、網關、路由(服務器配置相應的網關,路由器R1隻需配置接口IP及一條默認路由指向R2路由器即可,R2路由器除了接口IP以外什麼都不要配置,尤其是路由表,否則可能測試不出來虛擬專用網的效果)。 (4)客戶端需要安裝Cisco提供的客戶端軟件進行連接。 3、配置前準備:
(1)下載客戶端使用的軟件,並安裝在客戶端,用來連接虛擬專用網(我這裡是windows 7的client安裝包,如果客戶端是Windows 10,請參考博文:Windows 10 安裝虛擬專用網client端):https://blog.51cto.com/14154700/2431163 (2)自行配置路由器接口IP地址及路由(這些基礎配置命令就不展示了,我之前的博文有寫到過,或者自行百度吧)。 (3)自行配置各個服務器及客戶端的IP及網關。 (4)自行在相關服務器上搭建web服務及DNS服務(這兩個服務不是這篇博客想要介紹的,我這裡簡單搭了一個,我之前的博文有搭相關服務的,可以自行查看)。 4、開始配置 公司內網路由器配置(接口IP自行配置):
Router(config)#ip route 0.0.0.0 0.0.0.0 200.0.0.1 # 配置一條向外的默認路由 Router(config)#aaa new-model # 開啟三A #以下是為遠程訪問虛擬專用網客戶端進行認證及授權。 # 「 test1-authen」是自定義的認證名稱,「local」表示本地認證方式, #也可以使用「group radius」,路由器會轉發給指定的RADIUS服務器進行驗證, #這裡就使用「local」了,方便。 Router(config)#aaa authentication login test-authen local # 認證 Router(config)#aaa authorization network test-author local # 授權 Router(config)#username zhangsan secret 123123 # AAA的認證用戶及密碼 #以下是"配置虛擬專用網階段1",是指定管理連接的相關參數,加密算法等 Router(config)#crypto isakmp policy 10 Router(config-isakmp)#encryption 3des Router(config-isakmp)#hash sha Router(config-isakmp)#authentication pre-share Router(config-isakmp)#group 2 #階段1至此配置完畢 Router(config-isakmp)#exit #接下來"配置階段1.5",就是需要在管理連接後建立成功後,推送給客戶端的配置了。 #以下是配置一個地址池,池中的地址是向客戶端分發的, #地址池的網段地址,不可以和內網使用同一網段,否則將會影響最終通信 Router(config)#ip local pool test-pool 192.168.1.200 192.168.1.210 #以下是定義一個命名的ACL,這個ACL是推送給客戶端使用的,只有ACL允許的源地址是可以被客戶端訪問的 Router(config)#ip access-list extended split-acl #這個ACL是允許192.168.0.0去往任何地址,當推送到客戶端時,就會反過來。 #變成了允許任何IP地址訪問192.168.0.0。因為這裡的源地址是站在路由器的角度的。 Router(config-ext-nacl)#permit ip 192.168.0.0 0.0.0.255 any #以下是創建用戶組 Router(config)#crypto isakmp client configuration group test-group Router(config-isakmp-group)#key 321321 # 用戶組密碼 Router(config-isakmp-group)#pool test-pool # 應用剛才定義的地址池 Router(config-isakmp-group)#dns 192.168.0.10 # 指定dns Router(config-isakmp-group)#acl split-acl # 應用acl Router(config-isakmp-group)#split-dns test.com # 指定要分離出來的域名 Router(config-isakmp-group)#exit #階段1.5至此就配置完畢了。 #"配置階段2,也就是數據連接的相關配置" Router(config)#crypto ipsec transform-set test-set esp-3des esp-sha-hmac # 配置傳輸集 Router(cfg-crypto-trans)#exit Router(config)#crypto dynamic-map test-dymap 1 # 創建動態map,「1」是序號,用來定義優先級 Router(config-crypto-map)#set transform-set test-set #在動態crypto map中定義transform-set(傳輸集) Router(config-crypto-map)#exit #以下是配置應用到靜態crypto map中,由於同一台網關設備還會存在和分公司的虛擬專用網靜態map, #所以建議將這種方式的虛擬專用網配置的序號靠後一點,優先匹配與分公司之間的虛擬專用網靜態map,這裡定義為1000 Router(config)#crypto map test-stamap 1000 ipsec-isakmp dynamic test-dymap #引用剛才創建的動態map # 以下配置是讓客戶端發起連接 Router(config)#crypto map test-stamap client authentication list test-authen Router(config)#crypto map test-stamap isakmp authorization list test-author Router(config)#crypto map test-stamap client configuration address respond Router(config)#int f 0/1 Router(config-if)#crypto map test-stamap # 應用到接口
公司網關路由器上關於虛擬專用網的配置已經完成了,現在使用客戶端安裝專用軟件,連接虛擬專用網,並測試訪問即可。 客戶端配置如下:











使用客戶端進行訪問驗證:

