4、IPsec VPN实战:IKEv1与IKEv2协议、安全联盟(SA)建立过程、ESP与AH协议选择

各位好,我是老张。今天咱们聊点硬核的——IPsec VPN。说实话,这玩意儿我折腾了十几年,从最早的ISAKMP配置到现在的自动化部署,踩过的坑能写本书。但别怕,咱们一步步来。

IPsec VPN,说白了就是给IP数据包穿上一层铠甲。它工作在第三层,跟那些应用层的VPN(比如OpenVPN、SSL VPN)不一样。你想想看,它连TCP/UDP都不需要,直接在IP层加密,这意味着什么?意味着所有上层协议都能被保护,包括ICMP、IGMP这些。

核心要点:IPsec不是单个协议,而是一套协议簇。它包含三个核心组件:IKE(密钥交换)、ESP(封装安全载荷)、AH(认证头)。咱们今天重点讲IKEv1和IKEv2的区别,以及SA的建立过程。

4.1 IKEv1与IKEv2:两代密钥交换协议

IKEv1是1998年的老协议,IKEv2是2005年更新的。我在项目里见过不少设备还在跑IKEv1,但新项目我强烈建议用IKEv2。为什么?

对比项 IKEv1 IKEv2
建立阶段 主模式/野蛮模式 + 快速模式(共9条消息) 单一交换(4条消息)
NAT穿透 需要额外配置NAT-T 原生支持
移动性 不支持 支持MOBIKE
重协商 需要重新建立SA 支持无缝更新
DoS防护 较弱 内置Cookie机制

我记得有一次给某工厂做异地组网,两边的防火墙都是老款,只支持IKEv1。结果因为NAT穿透问题折腾了两天。后来换了支持IKEv2的设备,4条消息就搞定了握手,省心多了。

我的建议:如果设备支持,优先选IKEv2。它更健壮,尤其适合工业场景下频繁重连的环境。我曾经在一条生产线上测试过,IKEv2的重连速度比IKEv1快30%以上。

4.2 安全联盟(SA)建立过程

SA是IPsec的核心概念。你可以把它理解成通信双方签的一份合同——里面写明了用什么算法、密钥多久换一次、数据怎么加密。没有SA,IPsec就是空壳。

IKEv1的SA建立分两个阶段:

  1. 阶段1(ISAKMP SA): 建立一条安全的控制通道。主模式需要6条消息,野蛮模式只要3条。
  2. 阶段2(IPsec SA): 在控制通道里协商具体的数据加密参数。快速模式需要3条消息。

嗯,这里要注意。野蛮模式虽然快,但安全性稍弱,因为它交换的ID是明文。我在项目中一般只在远程接入场景用野蛮模式,站点到站点还是老老实实走主模式。

IKEv2就简单多了。它把两个阶段合并成一个交换:

发起方 → 响应方:SA提议 + 密钥材料
响应方 → 发起方:SA选择 + 密钥材料
发起方 → 响应方:认证数据
响应方 → 发起方:认证数据 + 完成

你看,就4条消息。而且IKEv2支持同时协商多个子SA,这在多子网场景下特别有用。我曾经给一个集团做VPN,总部有10个网段要跟分部互通。用IKEv1得建10个隧道,用IKEv2一个隧道就够了。

避坑指南:我曾经遇到过一个问题——IKEv1的SA生命周期到了,但IPsec SA还在传输数据。结果数据突然中断,生产线停了半小时。后来我养成了习惯:把IKEv1的SA生命周期设成比IPsec SA长一倍,或者干脆用IKEv2的无缝重协商。

4.3 ESP与AH协议选择

ESP和AH,这两个协议经常让人犯迷糊。我简单说:

  • AH(认证头): 只做完整性校验,不加密。它保护整个IP包(包括IP头),但无法过NAT。
  • ESP(封装安全载荷): 既能加密又能做完整性校验。它只保护载荷部分,IP头是明文的。

你想想看,现在哪个网络没有NAT?所以AH基本被淘汰了。我在实际项目中,99%的情况都用ESP。只有一种例外——某些合规要求必须对IP头做完整性校验,比如金融行业的核心网络。

ESP有两种模式:

模式 保护范围 典型场景
传输模式 只保护上层协议(TCP/UDP) 端到端通信(如两台服务器之间)
隧道模式 保护整个IP包 站点到站点VPN(如路由器之间)

工业物联网场景下,我几乎只用隧道模式。为什么?因为我们的设备通常在内网,需要路由器把整个私网IP包封装起来,再通过公网传输。传输模式只适合两个设备直连,中间不能有网关。

实战配置示例(Cisco IOS):

crypto isakmp policy 10
 encr aes 256
 authentication pre-share
 group 14
 lifetime 86400
!
crypto ipsec transform-set MY-TRANSFORM esp-aes 256 esp-sha-hmac
 mode tunnel
!
crypto map MY-MAP 10 ipsec-isakmp
 set peer 203.0.113.1
 set transform-set MY-TRANSFORM
 match address 101
!

这段配置里,我用了AES-256加密、SHA-HMAC完整性校验、Diffie-Hellman group 14(2048位)。说实话,在工业场景下,AES-128已经够用了,但我习惯留点余量。万一哪天生产线要跑4K视频流呢?

我的经验:选择加密算法时,别盲目追求高强度。有一次我在一个老旧PLC网关上配了AES-256,结果CPU直接飙到100%,丢包率飙升。后来换成AES-128,一切正常。工业设备的计算能力有限,要平衡安全与性能。

最后说一句,IPsec VPN的调试是个细致活。我建议你在实验室先搭一套环境,用Wireshark抓包看看IKE的交换过程。当你亲眼看到那4条消息(IKEv2)或者9条消息(IKEv1)在网络上飞过,你对SA的理解会深很多。

嗯,今天就到这。下一章咱们聊聊L2TP over IPsec,那又是另一种玩法了。