IPsec的案例已经介绍了很多了(IPsec合集),突然发现原来很多地方已经开始用IKEv2了。说实话,之前还真没深入了解过,我一直以为IKEv2应该是给IPv6用的,没想到我还真就理解错了。
其实IKEv2是IKEv1的增强版本,具有抗攻击能力、更强的密钥交换能力以及减少报文交互数量等特点。
可能比较直观能看到的就是报文交互数量的减少吧。当需要建立一对IPsec SA时,IKEv1需要经历两个阶段,至少需要交换6条消息;而IKEv2只需要进行两次交互,使用4条消息就可以完成一个IKEv2 SA和一对IPsec SA的协商建立。如果要求建立的IPsec SA的数目大于一对,则每增加一对IPsec SA只需要额外增加一次交互。
今天我们就通过一个IKEv2的小实验来看一下IKEv2和IKEv1的差别。
组网图和使用IKEv1建立IPsec隧道是一样的。首先按照组网图所示配置各接口的IP地址,使得RTA和RTB可以互通。
配置上比较直观的就是IKE密钥配置命令不同了,使用IKEv1的配置命令如下:
#
ike keychain key1
pre-shared-key address 13.1.1.3 255.255.255.0 key simple qwe123
而使用IKEv2时,需要为每个对等体都创建一个子视图,并且将命令拆开了,本来1条命令能解决的事情,现在要用4条命令。创建IKEv2密钥,创建IKEv2对等体,指定对等体的主机地址,指定对等体的身份信息,配置对等体使用的预共享密钥。
#
ikev2 keychain IKEV2
peer RTB
address 23.1.1.3 255.255.255.255
identity address 23.1.1.3
pre-shared-key plaintext IKEV2
在配置IKEv1的安全框架时,指定密钥和对等体信息就可以了。
#
ike profile pro1
keychain key1
match remote identity address 13.1.1.3 255.255.255.0
在使用IKEv2的安全框架时,除了指定密钥和对等体信息之外,还需要分别指定本端和对端的身份认证方式。
#
ikev2 profile IKEV2
authentication-method local pre-share
authentication-method remote pre-share
keychain IKEV2
match remote identity address 23.1.1.3 255.255.255.255
其余的就一样了,配置保护数据流的ACL。
#
acl advanced 3402
rule 0 permit ip source 11.1.1.0 0.0.0.255 destination 22.1.1.0 0.0.0.255
创建IPsec安全提议。
#
ipsec transform-set IKEV2
esp encryption-algorithm des-cbc
esp authentication-algorithm sha1
创建IPsec安全策略,引用的IKEv2 profile。
#
ipsec policy IKEV2 10 isakmp
transform-set IKEV2
security acl 3402
remote-address 23.1.1.3
ikev2-profile IKEV2
在接口上应用IPsec安全策略。
#
interface GigabitEthernet0/0
ipsec apply policy IKEV2
最后配置到对端子网的静态路由。
#
ip route-static 22.1.1.0 24 12.1.1.2
RTB和RTA的配置相近,直接上配置。
#
acl advanced 3402
rule 0 permit ip source 22.1.1.0 0.0.0.255 destination 11.1.1.0 0.0.0.255
#
ipsec transform-set IKEV2
esp encryption-algorithm des-cbc
esp authentication-algorithm sha1
#
ikev2 keychain IKEV2
peer RTA
address 12.1.1.1 255.255.255.255
identity address 12.1.1.1
pre-shared-key plaintext IKEV2
#
ikev2 profile IKEV2
authentication-method local pre-share
authentication-method remote pre-share
keychain IKEV2
match remote identity address 12.1.1.1 255.255.255.255
#
ipsec policy IKEV2 10 isakmp
transform-set IKEV2
security acl 3402
remote-address 12.1.1.1
ikev2-profile IKEV2
#
interface GigabitEthernet0/0
ipsec apply policy IKEV2
#
ip route-static 11.1.1.0 24 23.1.1.2
查看IKEv2安全框架信息。
查看IKEv2安全提议的配置信息。
通过手工触发建立RTA和RTB之间的IKEv2 SA和IPsec SA。
看一下报文交互,可以发现,SA建立有2个交换:IKE_SA_INIT交换和IKE_AUTH交换。第一个报文中,Key Exchange内容如下:
Security Association中信息较多,单独展开看一下。可以看到加密算法提供了AES_CBC和3DES两种,认证算法提供了HMAC_SHA1和HMAC_MD5两种。
另外还提供了两种PRF(Pseudo-random Function,伪随机函数)算法HMAC_SHA1和HMAC_MD5,还有两个DH组:组5和组2。这就是DH猜想,响应方根据发起方“猜测”的DH组来响应发起方。如果发起方猜测成功,则这样通过两条消息就可以完成IKE_SA_INIT交换。
然后我们看一下RTB的响应报文,可以看到RTB的加密算法选择了AES_CBC,认证算法选择了HMAC_SHA1,PRF算法选择了HMAC_SHA1,DH组选择了组5。比较幸运,应该是同厂商设备的原因,一次协商成功。
紧接着完成了对等体的身份认证以及IPsec SA的创建。
所以报文交互数量是4个,我们回顾一下,使用IKEv1主模式时创建IPsec SA需要2个阶段共9个报文。(IKE主模式及预共享密钥认证配置)
使用IKEv1野蛮模式时创建IPsec SA需要2个阶段共6个报文,这就是最少的情况了。(采用IKE野蛮模式建立保护IPv4报文的IPsec隧道)
再有就是IKEv2增加了一些对加密算法camellia算法的支持,提高了抗攻击能力。