IPSEC VPN中,主模式通过第5.6两个数据包交换身份信息,进行身份认证,常用的身份认证技术为预共享秘钥和数字证书认证,本文详细说明预共享秘钥方式下的各种配置命令(如无特殊说明,下文所说认证均为预共享秘钥方式)。
主模式下身份认证的技术原理,如图:
主模式的3,4个包会进行DH交换,然后双方各自在本地计算自己所需的秘钥,计算方式为,B在收到A发给自己的第三个包后,会以A的网络层源I P地址作为身份标识(可以理解成用户名),在自己本地配置中查找配置策略,找到所对应的预共享秘钥(可以理解成密码),然后以预共享秘钥为素材,计算所需要的各种秘钥,同理,B发送第四个包给A后,A也会以同样的方式计算秘钥,可以简单理解为,对方把用户名发给自己,然后自己在本地根据用户名查找密码,然后判断密码是否正确。在第5,6个包的时候,双方各自将自己的IP地址作为身份标识发送给对端,然后做身份认证。比如,A将IP地址作为身份标识通过第五个包发送给B,同时将自己计算出来的HASH值也发给B。A在计算HASH时,会将身份标识(自己的IP地址)作为素材进行计算。B在收到第五个包后,会把包中的身份标识提取出来,根据身份信息查找密钥素材,然后进行相同的计算,然后根据计算的HASH结果判断身份。同理,B把第六个包发给A后,A也进行同样的处理。
由以上原理可知,虽然身份标识是在5,6个包的时候发送,但是在3,4个包的时候就需要根据身份标识查找预共享秘钥,此时默认的身份标识就是IP地址。也就是说,主模式下,标识对端和自己身份只能是IP地址,这在动态IP地址情况下,会有一些影响。
野蛮模式下,只需要发送三个包就能完成协商,身份标识信息在第1,2个包里就发送了,此时双方都能根据身份标识就能进行预共享秘钥的查找和身份认证了。
身份认证命令详解:
remote-address IPV4-adress
此命令的IP地址要跟对端发起IKE协商的IP地址保持一致,默认情况下,此IP地址的作用三位一体,即指定隧道对端的IP地址(第1,2个包的隧道目的地址),根据此IP地址查找本地的预共享秘钥(3,4个包时发挥作用),参与验证对端身份(5,6个包里的身份标识信息和HASH计算)remote-address authentication-address XXX 此命令是对
remote-address命令三位一体功能进行了拆分,即用XXX地址参与验证对端身份,而不是remote-address命令指定的地址,常用在NAT穿越,使用IP进行身份认证,且对端源NAT转换后公网IP地址可知的情况下,即隧道地址和身份验证标识地址不是同一个地址。
Remote-id id
Id是管理员自定义的值,在IKEv1版本中,配置的remote-id,只能验证对端的身份(即本地验证5,6个包里的信息)。在IKEv2版本中,配置的remote-id,可以发送给对端(5,6包的身份标识发给对方),与对端的local-id进行验证
local-id XXX
local-id命令用来配置IKE协商使用的本端ID,表示该IKE对等体用此ID进行身份认证,需要和对端的Remote-id命令保持一致
ike local-name XXX
功能类似于local-id,local-id命令配置的名称优先级高于ike local-name命令配置的名称
local-id-type XXX
此命令用来配置IKE协商时本端的ID类型,默认为IP地址形式
local-address XXX
此命令用来配置IKE协商时的本端IP地址
remote-id-type XXX
此命令用来配置IKE协商时对端的ID类型
总结:
当对等体之间不使用IP地址作为身份认证标识时,必须采用IKEV1的野蛮模式或者IKEV2,而且要注意对等体两端之间配置的身份标识保持一致。以上是对影响身份命令的部分总结,更多的命令和详细用法请参考相关的配置文档。