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(ISAKMP SA): 建立一条安全的控制通道。主模式需要6条消息,野蛮模式只要3条。
- 阶段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,那又是另一种玩法了。