Cisco IOS IPsec 配置专题(1) – Static & Dynamic Crypto Map

Cisco IOS IPsec 的配置方式

Cisco IOS 中可以使用很多不同的方式配置 IPsec VPN,每种方式各有优缺点,这个系列的文章将会对以下配置方式进行讲解:

    • Static & Dynamic Crypto Map
    • GRE over IPsec
    • Static & Dynamic Virtual Tunnel Interface (VTI)
    • Group Encrypted Transport VPN (GETVPN)
    • Dynamic Multipoint VPN (DMVPN)
    • FlexVPN

Crypto Map 的历史

在 WAN 技术的初期并没有一种可以对数据进行加密的机制,后来 Cisco 开发出了一种私有的加密机制 – Cisco Encryption Technology (CET),CET 会对两个 Cisco 路由器之间的通信进行加密。随着安全问题的增加,IETF 定义了 IPsec,Cisco 在 IOS 里面引进 IPsec 来替代 CET,但是 CET 的配置命令结构得以保留。Crypto Map 就是 CET 时期的产物。

Static Crypto Map

R1 作为 Hub Site,R2 和 R3 作为 Spoke Site。R1 与 R2 用 PSK 做认证,R1 与 R3 用 cert 做认证建立 IPsec。IOS CA 的配置可以参考之前的文章《Cisco IOS 自身集成的 PKI 功能》。

CA Server 配置:

CA_Server(config)#crypto key gen rsa label CA_Key mod 4096 

CA_Server(config)#crypto pki trustpoint My_CA_Server 
CA_Server(ca-trustpoint)#rsakeypair CA_Key 

CA_Server(config)#crypto pki server My_CA_Server 
CA_Server(cs-server)#issuer-name cn=ca.networkingcube.com 
CA_Server(cs-server)#grant auto 
CA_Server(cs-server)#no shut

CA_Server(config)#ip http server

R1 获取 Cert:

R1(config)#ip domain name networkingcube.com 

R1(config)#crypto key gen rsa mod 1024 label R1_Key 

R1(config)#crypto pki trustpoint My_Trust_CA 
R1(ca-trustpoint)#enrollment url http://1.1.1.4:80 
R1(ca-trustpoint)#subject-name cn=r1.networkingcube.com 
R1(ca-trustpoint)#rsakeypair R1_Key 

R1(config)#crypto pki authenticate My_Trust_CA 

R1(config)#crypto pki enroll My_Trust_CA

R3 获取 cert:

R3(config)#ip domain name networkingcube.com 

R3(config)#crypto key gen rsa mod 1024 label R3_Key 

R3(config)#crypto pki trustpoint My_Trust_CA 
R3(ca-trustpoint)#enrollment url http://1.1.1.4:80 
R3(ca-trustpoint)#subject-name cn=r3.networkingcube.com 
R3(ca-trustpoint)#rsakeypair R3_Key 

R3(config)#crypto pki authenticate My_Trust_CA 

R3(config)#crypto pki enroll My_Trust_CA

R1 IPsec 配置:

R1(config)#crypto isakmp policy 10
R1(config-isakmp)#encryption aes 256
R1(config-isakmp)#hash sha256
R1(config-isakmp)#authentication pre-share
R1(config-isakmp)#group 24

R1(config)#crypto isakmp key CISCO address 1.1.1.2

R1(config)#crypto isakmp policy 20
R1(config-isakmp)#encryption aes 256
R1(config-isakmp)#hash sha256 
R1(config-isakmp)#authentication rsa-sig
R1(config-isakmp)#group 24
R1(config)#ip access-list extended 102 R1(config-ext-nacl)#permit ip 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255

R1(config)#ip access-list extended 103
R1(config-ext-nacl)#permit ip 192.168.10.0 0.0.0.255 192.168.30.0 0.0.0.255 R1(config)#crypto ipsec transform-set VPN_TS esp-sha256-hmac esp-aes 256 R1(config)#crypto map Crypto_Map 10 ipsec-isakmp R1(config-crypto-map)#set peer 1.1.1.2 R1(config-crypto-map)#set transform-set VPN_TS R1(config-crypto-map)#match address 102

R1(config)#crypto map Crypto_Map 20 ipsec-isakmp
R1(config-crypto-map)#set peer 1.1.1.3
R1(config-crypto-map)#set transform-set VPN_TS
R1(config-crypto-map)#match address 103 R1(config)#int e0/0 R1(config-if)#crypto map Crypto_Map

一个接口只能配置一个 crypto map,当需要多个 IPsec 连接的时候就需要在同一个 crypto map 下配置多个 policy。

R2 IPsec 配置:

R2(config)#crypto isakmp policy 10
R2(config-isakmp)#encryption aes 256
R2(config-isakmp)#hash sha256
R2(config-isakmp)#authentication pre-share
R2(config-isakmp)#group 24

R2(config)#crypto isakmp key CISCO address 1.1.1.1

R2(config)#ip access-list extended 101
R2(config-ext-nacl)#permit ip 192.168.20.0 0.0.0.255 192.168.10.0 0.0.0.255

R2(config)#crypto ipsec transform-set VPN_TS esp-sha256-hmac esp-aes 256


R2(config)#crypto map Crypto_Map 10 ipsec-isakmp
R2(config-crypto-map)#set peer 1.1.1.1
R2(config-crypto-map)#set transform-set VPN_TS
R2(config-crypto-map)#match address 101

R2(config)#int e0/0
R2(config-if)#crypto map Crypto_Map

R3 IPsec 配置:

R3(config)#crypto isakmp policy 10 
R3(config-isakmp)#encryption aes 256 
R3(config-isakmp)#hash sha256 
R3(config-isakmp)#group 24 

R3(config)#ip access-list extended 101 
R3(config-ext-nacl)#permit ip 192.168.30.0 0.0.0.255 192.168.10.0 0.0.0.255 

R3(config)#crypto ipsec transform-set VPN_TS esp-sha256-hmac esp-aes 256 

R3(config)#crypto map Crypto_Map 10 ipsec-isakmp 
R3(config-crypto-map)#set peer 1.1.1.1 
R3(config-crypto-map)#set transform-set VPN_TS 
R3(config-crypto-map)#match address 101 

R3(config)#int e0/0 
R3(config-if)#crypto map Crypto_Map

Static Crypto Map 这种配置方式带来的问题是通信的两端必须使用静态 IP 地址,在实际的场景中我们经常会遇到的一种情况是在 Hub Site (HQ Office) 使用静态 IP,在 Spoke Site(Branch Office)很可能使用的是由 ISP 分配的 DHCP IP。这个情况我们可以通过配置 Dynamic Crypto Map 来解决,它的配置思路就是在 Hub Site 我们无需指定 Spoke Site 的 IP 地址,而是接受任意 IP 地址发起的 IPsec 连接请求。

Dynamic Crypto Map

R1 IPsec 配置:

R1(config)#crypto isakmp policy 10 
R1(config-isakmp)#encryption aes 256 
R1(config-isakmp)#hash sha256 
R1(config-isakmp)#authentication pre-share 
R1(config-isakmp)#group 24

R1(config)#crypto isakmp key CISCO address 0.0.0.0 0.0.0.0

R1(config)#crypto isakmp policy 20
R1(config-isakmp)#encryption aes 256
R1(config-isakmp)#hash sha256 
R1(config-isakmp)#authentication rsa-sig
R1(config-isakmp)#group 24

R1(config)#ip access-list extended 102 
R1(config-ext-nacl)#permit ip 192.168.10.0 0.0.0.255 192.168.20.0 0.0.0.255

R1(config)#ip access-list extended 103
R1(config-ext-nacl)#permit ip 192.168.10.0 0.0.0.255 192.168.30.0 0.0.0.255 

R1(config)#crypto ipsec transform-set VPN_TS esp-sha256-hmac esp-aes 256 
R1(config)#crypto dynamic-map My_Dynamic_Map 102
R1(config-crypto-map)#set transform-set VPN_TS
R1(config-crypto-map)#match address 102

R1(config)#crypto dynamic-map My_Dynamic_Map 103
R1(config-crypto-map)#set transform-set VPN_TS
R1(config-crypto-map)#match address 103

R1(config)#crypto map Crypto_Map 10 ipsec-isakmp dynamic My_Dynamic_Map 

R1(config)#int e0/0 
R1(config-if)#crypto map Crypto_Map

R2 和 R3 的配置可以保持不变。

在使用 dynamic crypto map 的时候处于 Hub Site 的 router 没有办法发起连接请求因为它不知道对端的 IP 地址,所以只能被动的等待 Spoke Site 进行连接。

发表评论

电子邮件地址不会被公开。