IPsec_VPN實現技術【轉載】

一坨翔發表於2017-09-04

GRE Tunnel

GRE Tunnel(General Routing Encapsulation
通用路由封裝)是一種非常簡單的VPN(Virtual Private Network
虛擬專用網路),其基本思路是:VPN閘道器把發往對方的資料包在網路邊界重新進行封裝,然後通過Internet將資料包傳送到目標站點的對等VPN網
關,這個過程也就是把一個私網的資料包封裝在一個公網的資料包中;對方收到資料包後剝離報頭,復原出原來的資料包,然後向其私網內的目標主機傳遞出資料
包;這樣私網的資料包就穿過了公網,到達了另一個私網。但是採用GRE Tunnel
VPN技術的一個重要問題是資料包在Internet上傳輸是不安全的。

實驗

VPN

配置IP地址及路由:

R1(config)#ip route 0.0.0.0 0.0.0.0 s0/0
12.1.1.2 permanent

R2(config)#ip route 34.1.1.0 255.255.255.0
s0/1 23.1.1.3

R3(config)#ip route 12.1.1.0 255.255.255.0
s0/1 23.1.1.2

R4(config)#ip route 0.0.0.0 0.0.0.0 s0/0
34.1.1.3 permanent

配置GRE Tunnel:

R1(config)#int tunnel
0
       
//建立Tunnel介面0,編號只有本地有效

R1(config-if)#ip add 172.16.14.1
255.255.255.0
      //配置隧道介面的地址,顯然該地址是私網地址

R1(config-if)#tunnel source
s0/0
       
//配置Tunnel的源介面
R1(config-if)#tunnel destination
34.1.1.4
       
//配置Tunnel的目的地址
R1(config-if)#tunnel mode gre
ip
       
//配置隧道為GRE模式,預設即為GRE

R4(config)#int tunnel
0

R4(config-if)#ip add 172.16.14.4
255.255.255.0

R4(config-if)#tunnel source
s0/0

R4(config-if)#tunnel destination 12.1.1.1

說明:

①Tunnel的源介面:也可以使用“tunnel source
12.1.1.1”命令配置,路由器將以此介面的地址作為源地址重

 
新封裝VPN資料包;

②Tunnel的目地址:路由器將以此地址作為目的地址重新封裝VPN資料包;

③隧道建立後,可以把隧道看成一條專線。

實驗除錯:

R1#show int tunnel
0
       
//檢視Tunnel 0介面的狀態

VPN

配置路由協議:

R1(config)#router rip
R1(config-router)#version 2
R1(config-router)#no
auto-summary

R1(config-router)#network
172.16.0.0

R4(config)#router rip
R4(config-router)#version 2
R4(config-router)#no
auto-summary
R4(config-router)#network 172.16.0.0

實驗除錯:

R1#show ip route

R1#ping 172.16.4.1 source lo0
VPN
以上輸出表明遠端辦公室已經學習到了企業總部內部網路的路由,下一跳為隧道另一端的地址。

配置NAT:

由於現在企業內部和遠端辦公室都無法與Internet通訊,還需要配置NAT。

R1(config)#access-list 10 permit
172.16.1.0 0.0.0.255

R1(config)#ip nat inside source list 10 int
s0/0 overload

R1(config)#int lo0
R1(config-if)#ip nat inside
R1(config)#int
s0/0
R1(config-if)#ip nat
outside

R4(config)#access-list 10 permit
172.16.4.0 0.0.0.255

R4(config)#ip nat inside source list 10 int
s0/0 overload

R4(config)#int lo0
R4(config-if)#ip nat inside
R4(config)#int s0/0
R4(config-if)#ip nat outside
實驗除錯:

R1#ping 34.1.1.3 source
lo0
       
//測試遠端辦公室和Internet的通訊
VPN
R1#ping 172.16.4.1 source
lo0
       
//再次測試遠端辦公室和公司總部的通訊,一切正常
VPN

 

Site To
Site VPN/LAN To LAN VPN

Site To Site是指把一個區域網和另一個區域網連線在一起,本實驗採用IPSec(Internet Protocol
Security 網際網路協定安全規格)VPN解決這個問題。IPSec VPN是針對IP通訊保護的協議簇,IPSec
VPN的基礎是資料機密性、資料完整性和身份驗證。

資料機密性:一個常見的安全性考慮是防止竊聽者竊取資料。VPN利用封裝和加密機制來實現機密性,常見的算

  法有DES、3DES和AES。

資料完整性:資料完整性確保資料在源主機和目的主機之間傳送時不被篡改。VPN通常使用雜湊來確保資料完整

  性,常見的演算法有MD5和SHA。

身份驗證:身份驗證確保訊息來自真實來源,並傳送到真實目的地。VPN利用使用者標識確信與其建立通訊的一方

  正是其所認為的那一方,常用的演算法有預共享密碼和數字證書。

兩種主要的IPSec協議框架:

驗證報頭(AH):僅提供完整性和身份驗證功能,在不要求或不允許有機密性時使用。AH在原有的資料包頭部和

 
資料之間加入AH欄位,該欄位裡包含IP頭和資料的完整性校驗值。因此AH能為兩個系統間傳送的IP資料包提供

 
資料驗證和資料完整性檢查。它驗證訊息在傳送過程中是否未被篡改,還驗證來源。AH不提供資料包的資料機

 
密性(加密)檢查。AH協議在單獨使用時提供的保護較脆弱,因此需要將其與ESP協議配合使用,來提供資料加

  密和防篡改檢測等安全功能。

封裝安全負載(ESP):通過對IP資料包加密隱藏資料及源主機和目的主機的身份提供機密性、完整性和身份驗

 
證。ESP可驗證內部IP資料包和ESP報頭的身份,從而提供資料來源驗證和資料完整性檢查。ESP有兩種模式:傳

  輸模式和隧道模式。

  傳輸模式:不產生新的IP包頭,但是在原有的IP包頭和資料欄位之間加入ESP頭部,並且在尾部加了ESP尾和完

   
整性校驗值,該模式提供端到端的安全。

 
隧道模式:用新的IP包頭對原有的資料包進行了重新封裝,新增了ESP頭、ESP尾及完整性校驗值,該模式提供

   
路由器到路由器的安全,計算機到路由器的資料安全並不能保證,該模式對使用者是透明的,因此使用較多。

IPSec的工作方式:

協商階段:互聯VPN之前要進行協商,VPN的協商可分為兩個階段:
 
①金鑰協商階段:裝置獲取了相應的金鑰(為了保證傳輸過程中傳輸的安全性會使用非對稱金鑰);

 
②IPsec階段:資料要進加密的資料交換(通過協商後產生的非對稱金鑰獲得加密的先決條件)。
資料傳輸階段:採用對稱加密演算法完成資料的安全傳輸,對等體雙方使用的相應加密手段與校驗手段。

說明:對稱加密演算法安全性更高,第一階段不使用對稱加密演算法的原因就是避免傳輸過程中被截獲,而第二

 
通過安全的金鑰交換之後不怕被截獲,即便被截獲通過轉換集複雜的加密演算法被解密的可能性也
是微乎其微。

實驗

VPN

配置IP地址及路由:

R1(config)#ip route 0.0.0.0 0.0.0.0 s0/0
12.1.1.2 permanent

R2(config)#ip route 34.1.1.0 255.255.255.0
s0/1 23.1.1.3

R3(config)#ip route 12.1.1.0 255.255.255.0
s0/1 23.1.1.2

R4(config)#ip route 0.0.0.0 0.0.0.0 s0/0
34.1.1.3 permanent

配置Site To Site VPN:
R1(config)#crypto isakmp policy
10
       
//建立一個ISAKMP策略,編號為10
R1(config-isakmp)#encryption
aes
       
//配置ISAKMP採用AES加密演算法
R1(config-isakmp)#authentication
pre-share
       
//配置ISAKMP採用預共享密碼身份認證演算法
R1(config-isakmp)#hash
sha
       
//配置ISAKMP採用SHA HASH演算法
R1(config-isakmp)#group
5
       
//配置ISAKMP採用DH group 5金鑰交換演算法

R1(config-isakmp)#lifetime
86400
     //為了安全起見設定生存時間,即多長時間重認證,預設即為86400

R1(config)#crypto isakmp key cisco
address
34.1.1.4
   //配置對等體34.1.1.4的預共享密碼為cisco

R1(config)#crypto ipsec
transform-set TRAN esp-aes esp-sha-hmac

                  //建立一個名為TRAN的IPSec交換集,交換集採用ESP封裝,加密演算法為AES,HASH演算法為SHA

R3(cfg-crypto-trans)#mode
tunnel
       
//設定ESP的模式,預設即為Tunnel

R1(config)#ip access-list extended
VPN

R1(config-ext-nacl)#permit ip
172.16.1.0 0.0.0.255 172.16.4.0 0.0.0.255

  //定義一個ACL,只限定從遠端辦公室到企業總部的流量才通過VPN加密傳送,其它流量(如到Internet)不加密

R1(config)#crypto map MAP 10
ipsec-isakmp
       
//建立名為MAP,編號為10的加密圖
R1(config-crypto-map)#set peer
34.1.1.4
       
//指明VPN對等體為路由器R4
R1(config-crypto-map)#set
transform-set
TRAN
       
//指明採用前邊已經定義的交換集
R1(config-crypto-map)#match address
VPN
       
//指明匹配名為VPN的ACL的定義的流量就是VPN流量
R1(config-crypto-map)#reverse-route
static
       
//指明要反向路由注入
R1(config)#int
s0/0

R1(config-if)#crypto map
MAP
       
//把名為MAP的加密圖應用在介面上

R4(config)#crypto isakmp policy
10

R4(config-isakmp)#encryption
aes

R4(config-isakmp)#authentication
pre-share

R4(config-isakmp)#hash
sha

R4(config-isakmp)#group
5

R4(config)#crypto isakmp key cisco
address 12.1.1.1

R4(config)#crypto ipsec transform-set
TRAN esp-aes esp-sha-hmac

R4(config)#ip access-list extended
VPN

R4(config-ext-nacl)#permit ip
172.16.4.0 0.0.0.255 172.16.1.0 0.0.0.255

R4(config)#crypto map MAP 10
ipsec-isakmp

R4(config-crypto-map)#set peer
12.1.1.1

R4(config-crypto-map)#set
transform-set TRAN

R4(config-crypto-map)#match address
VPN

R4(config-crypto-map)#reverse-route
static

R4(config)#int
s0/0

R4(config-if)#crypto map
MAP

說明:

①建立ISAKMP(Internet Security
And Key Management Protocol
因特網安全協議與金鑰管理協議)策略時,可

 
以建立多個
ISAKMP策略,但是雙方路由器將採用編號最小、引數一致的策略,因此雙方至少要有一個策略是一

 
致的,否則協商失敗。

②加密演算法可以選擇:DES、3DES和AES。

③身份認證演算法可以選擇:預共享密碼和(如果有CA伺服器時也可以選擇)CA(電子證書)進行身份認證。

④HASH演算法可以選擇:SHA和MD5。

⑤金鑰交換演算法可以選擇:group 1、group 2和group
5。

⑥配置預共享密碼時,要確保雙方配置的密碼要一致,否則協商失敗。

⑦配置交換集時,交換集名稱只在本地有效,並且要確保雙方路由器有一個引數一致的交換集,否則協商失敗。

 
1>交換集的封裝方式:ESP、AH和ESP+AH;

   
1)ESP封裝提供的功能:機密性、完整性和身份認證;

   
2)AH封裝提供的功能:完整性和身份認證,實際上AH使用的較少。

 
2>交換集的加密演算法:DES、3DES和AES;

 
3>交換集的HASH演算法:SHA和MD5。

⑧建立加密圖時,名稱和編號都只在本地有效,如果有多個編號,路由器將從小到大逐一匹配。

⑨反向路由注入就是在VPN裝置上會根據“match address
VPN”命令生成靜態路由,靜態路由的條數和ACL條數

 
相對應,“static”引數指明即使VPN會話沒有建立起來返向路由也要建立。

實驗除錯:

R1#show ip route

R1#ping 172.16.4.1 source lo0

VPN
以上輸出表明路由器R1有172.16.4.0/24條路由了,下一跳為對方公網地址,並且能與對端區域網正常通訊。

R1#show crypto engine connections
active
       
//檢視活動的VPN會話的基本情況
VPN
以上輸出表明加密和解密是獨立的會話,可以看到加密和解密了個5個資料包。

R1#show crypto isakmp
policy
       
//顯示系統中所有的ISAKMP策略情況
VPN
R1#show crypto ipsec
transform-set
       
//顯示系統中所有的IPSec交換機情況
VPN
R1#show crypto
map
       
//顯示系統中的加密圖情況
VPN
R1#show crypto ipsec
sa
       
//顯示IPSec會話的情況
VPN
NAT配置:

由於現在遠端辦公室和企業內部都無法與Internet通訊,還需要配置NAT。

R1(config)#access-list 100 deny ip
172.16.1.0 0.0.0.255 172.16.4.0 0.0.0.255

                                 //特別注意,要把遠端辦公室去往企業總部的IP資料包排除在進行NAT之外

R1(config)#access-list 100 permit ip
172.16.1.0 0.0.0.255 any

R1(config)#ip nat inside source list 100 int
s0/0 overload

R1(config)#int lo0
R1(config-if)#ip nat inside
R1(config)#int s0/0
R1(config-if)#ip nat outside

R4(config)#access-list 100 deny ip
172.16.4.0 0.0.0.255 172.16.1.0 0.0.0.255

R4(config)#access-list 100 permit ip
172.16.4.0 0.0.0.255 any

R4(config)#ip nat inside source list 100 int
s0/0 overload

R4(config)#int lo0
R4(config-if)#ip nat inside
R4(config)#int s0/0
R4(config-if)#ip nat outside

實驗除錯:

R1#ping 34.1.1.3 source
lo0
        //測試遠端辦公室和Internet的通訊

VPN

R1#ping 172.16.4.1 source
lo0
       
//再次測試遠端辦公室和公司總部的通訊,一切正常

VPN

 


相關文章