目錄
前言
Cisco 的 Group Encrypted Transport VPN (GETVPN) 技術可以簡化 IPSec 設定,讓網管人員更容易管理和配置 IPSec。為了建立 Fully Mesh IPSec 網絡,每隻 Router 都要對其餘所有 Router 建立 IPSec Tunnel,涉及大量的 ISAKMP Key 管理及 IPSec 組態。試計算一下,如網絡裡有 n 隻 Router 之間需要 IPSec 保護,IPSec Tunnel 總數為 n(n-1)/2,設定極為費時及容易出錯,網管人員生活大打折扣 😭 。本文將會介紹 GETVPN 的原理和設定,假設讀者已對 IPSec 理論有所了解。
GETVPN 原理
傳統 IPSec 設定需要在每隻 Router 設定 IPSec 參數,包括 Interesting Traffic 和 Encryption Policy 等等,GETVPN 化繁為簡的方法是先定義一隻 Key Server (KS),然後把 IPSec Policy 都設定在 KS 之中。其他 Router (又稱為 Group Member,或 GM) 用 GDOI (Group Domain of Interpretation) Protocol 向 KS 認證並取得 Policy 設定,然後建立單一 IPSec Tunnel 與其他 GM 溝通。
本文將用以下網絡作例子來設定 GETVPN,R4 是 KS,R1 與 R2 分別是 GM1 和 GM2。
Router 以 EIGRP 打通,原設定如下:
hostname R3 ! interface Ethernet1/1 ip address 192.168.13.3 255.255.255.0 ! interface Ethernet1/2 ip address 192.168.23.3 255.255.255.0 ! interface Ethernet1/3 ip address 192.168.34.3 255.255.255.0 ! router eigrp 1 network 0.0.0.0
R1、R2 及 R4 設定相若,以下只顯示 R1 設定:
hostname R1 ! interface Loopback0 ip address 10.0.1.1 255.255.255.0 ! interface Ethernet1/0 ip address 192.168.13.1 255.255.255.0 duplex full ! router eigrp 1 network 0.0.0.0
Key Server 設定
Step 1:設定 Interesting Traffic
跟一般 IPSec 相同,先設定 Interesting Traffic 去定義想要建立 IPSec 的 Network,此例子所有 VPN Network 均為 10.0.x.x,因此使用以下 ACL:
KS(config)#ip access-list extended VPN-Traffic KS(config-ext-nacl)#permit ip 10.0.0.0 0.0.255.255 10.0.0.0 0.0.255.255
Step 2:設定 IKE Phase 1 和 Phase 2 參數
參數的意思已在 IPSec 的文章中解釋過,不在此重複說明。
R4(config)#crypto isakmp policy 1 R4(config-isakmp)#encryption aes R4(config-isakmp)#hash md5 R4(config-isakmp)#authentication pre-share R4(config-isakmp)#group 2
R4(config)#crypto ipsec transform-set TS esp-aes esp-sha-hmac
理論上,我們可以對不同的 GM 使用不同的 Key,這裡為方便,一律使用 ccie 這個 Key,因此 Address 設為 0.0.0.0,即所有 Address。
R4(config)#crypto isakmp key ccie address 0.0.0.0
Step 4:定義 Crypto Map
這部份最複雜,先定義 Profile。
R4(config)#crypto ipsec profile PROFILE-IPSEC R4(ipsec-profile)#set transform-set TS
KS 會定期產生 Encryption Key 派給 GM,並用 Asymmetric Encryption 加密,因此,我們要先為 KS 產生出 Private and Public Key Pair。
R4(config)#crypto key generate rsa label KEYPAIR modulus 1024
然後設定 GDOI:
R4(config)#crypto gdoi group GROUP_GDOI R4(config-gdoi-group)#identity number 1234 1️⃣ R4(config-gdoi-group)#server local R4(gdoi-local-server)#rekey authentication mypubkey rsa KEYPAIR 2️⃣ R4(gdoi-local-server)#rekey transport unicast 3️⃣ R4(gdoi-local-server)#sa ipsec 10 R4(gdoi-local-server)#address ipv4 192.168.34.4 4️⃣ R4(gdoi-sa-ipsec)#profile PROFILE-IPSEC R4(gdoi-sa-ipsec)#match address ipv4 VPN-Traffic 5️⃣
1️⃣ 使用同一組 GDOI 的 GM 需使用與 KS 相同的 Identity Number
2️⃣ 用此組 Asymmetric Key Pair 去產生 Encryption Key 派給 GM
3️⃣ 用 unicast 派發
4️⃣ KS 用來接收 GDOI Request 的 IP Address
5️⃣ 設定什麽 Traffic 會推動 IPSec 流程,此 Policy 會下載到每隻 GM
定義 Crypto Map,然後把 Crypto Map 放進 Interface。
R4(config)#crypto map CMAP 10 gdoi % NOTE: This new crypto map will remain disabled until a valid group has been configured. R4(config-crypto-map)#set group GROUP_GDOI
R4(config)#int ethernet 1/0 R4(config-if)#crypto map CMAP
Group Member 設定
基本上,所有 GM 都使用相同的設定。
Step 1:設定 IKE Phase 1
GM 必先與 KS 建立 ISAKMP,才能獲取 Policy 資訊,所以 IKE Phase 1 設定不能幸免。
R1(config)#crypto isakmp policy 1 R1(config-isakmp)#encryption aes R1(config-isakmp)#hash md5 R1(config-isakmp)#authentication pre-share R1(config-isakmp)#group 2
並需設定 Pre-share Key。
R1(config)#crypto isakmp key ccie address 192.168.34.4
Step 2:設定 GDOI
設定 GDOI Group,如剛才所說 Identity Number 要相同,Server Address 則是 KS 的 Address。
R1(config)#crypto gdoi group GROUP_GDOI R1(config-gdoi-group)#identity number 1234 R1(config-gdoi-group)#server address ipv4 192.168.34.4
Step 3:定義 Crypto Map
定義 Crypto Map,然後把 Crypto Map 放進 Interface。
R1(config)#crypto map CMAP 10 gdoi % NOTE: This new crypto map will remain disabled until a valid group has been configured. R1(config-crypto-map)# set group GROUP_GDOI
R1(config)#int ethernet 1/0 R1(config-if)#crypto map CMAP
如果設定沒問題的話,該可以看見此 GM 向 KS 進行 Registration。
*Oct 27 19:09:14.663: %CRYPTO-5-GM_REGSTER: Start registration to KS 192.168.34.4 for group GROUP_GDOI using address 192.168.13.1 R1(config-if)# *Oct 27 19:09:14.671: %CRYPTO-6-GDOI_ON_OFF: GDOI is ON
也可看到 ISAKMP 建立。
R1#show crypto isakmp sa IPv4 Crypto ISAKMP SA dst src state conn-id status 192.168.34.4 192.168.23.2 GDOI_IDLE 1001 ACTIVE 192.168.23.2 192.168.34.4 GDOI_REKEY 1002 ACTIVE
在 R2 使用相同的 GM 設定,然後從 R1 的 Loopback0 Ping R2 的 Loopback0 (產生 Interesting Traffic),IPSec Tunnel 便出現了。
R1#ping 10.0.2.2 source 10.0.1.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 10.0.2.2, timeout is 2 seconds: Packet sent with a source address of 10.0.1.1 !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 16/27/52 ms R1# R1#show crypto ipsec sa interface: Ethernet1/0 Crypto map tag: CMAP, local addr 192.168.13.1 protected vrf: (none) local ident (addr/mask/prot/port): (10.0.0.0/255.255.0.0/0/0) remote ident (addr/mask/prot/port): (10.0.0.0/255.255.0.0/0/0) current_peer 0.0.0.0 port 848 PERMIT, flags={} #pkts encaps: 5, #pkts encrypt: 5, #pkts digest: 5 #pkts decaps: 5, #pkts decrypt: 5, #pkts verify: 5 #pkts compressed: 0, #pkts decompressed: 0 #pkts not compressed: 0, #pkts compr. failed: 0 #pkts not decompressed: 0, #pkts decompress failed: 0 #send errors 0, #recv errors 0 local crypto endpt.: 192.168.13.1, remote crypto endpt.: 0.0.0.0 path mtu 1500, ip mtu 1500, ip mtu idb Ethernet1/0 current outbound spi: 0x0(0) PFS (Y/N): N, DH group: none inbound esp sas: inbound ah sas: inbound pcp sas: outbound esp sas: outbound ah sas: outbound pcp sas: local crypto endpt.: 192.168.13.1, remote crypto endpt.: 0.0.0.0 path mtu 1500, ip mtu 1500, ip mtu idb Ethernet1/0 current outbound spi: 0x9300630A(2466276106) PFS (Y/N): N, DH group: none inbound esp sas: spi: 0x9300630A(2466276106) transform: esp-aes esp-sha-hmac , in use settings ={Tunnel, } conn id: 1, flow_id: 1, sibling_flags 80000040, crypto map: CMAP sa timing: remaining key lifetime (sec): (3235) Kilobyte Volume Rekey has been disabled IV size: 16 bytes replay detection support: N Status: ACTIVE(ACTIVE) inbound ah sas: inbound pcp sas: outbound esp sas: spi: 0x9300630A(2466276106) transform: esp-aes esp-sha-hmac , in use settings ={Tunnel, } conn id: 2, flow_id: 2, sibling_flags 80000040, crypto map: CMAP sa timing: remaining key lifetime (sec): (3235) Kilobyte Volume Rekey has been disabled IV size: 16 bytes replay detection support: N Status: ACTIVE(ACTIVE) outbound ah sas: outbound pcp sas:
GETVPN 與 DMVPN 之比較
由於 GETVPN 與 DMVPN 都有著簡化 Remote Site 設定的效果,在應用上 GETVPN 比 DMVPN 在以下優勝之處:
- 基於 GETVPN 使用 Tunnel Mode with Address Preservation,即原 IP Header (Inner IP Header) 被複製到 Outer IP Header,因此 VPN Network 可直接被 Routing 而不像 DMVPN 那樣需要在 VPN 之上另外建立一層 Overlay Routing Protocol。
- DMVPN 把 Multicast Traffic 複製到不同的 mGRE Tunnel,籍此支援 Multicast,而 GETVPN 可直接使用 Underlay 的 Multicast Protocol,例如:PIM。
相關主題
Jan Ho 2018-10-27
Posted In: 虛擬私人網路 VPN
發佈留言