4、IPsec协议族:IPsec架构与组件

IPsec,说白了就是给IP数据包穿上一件“防弹衣”。它不是单个协议,而是一整套安全框架。我最早接触IPsec是在一个跨国企业的远程接入项目里,当时客户要求所有分支机构的数据传输必须加密,而且不能改动现有应用——嗯,IPsec正好干这个。

4.1 IPsec的核心组件:AH、ESP、IKE

IPsec由三个核心组件构成,各司其职。我习惯把它们比作“安检员”、“保险柜”和“钥匙管理员”。

组件 全称 核心功能 我眼中的角色
AH Authentication Header 数据完整性校验 + 源认证 安检员——只检查不保密
ESP Encapsulating Security Payload 加密 + 完整性校验 + 源认证 保险柜——既锁又验
IKE Internet Key Exchange 自动协商密钥和安全参数 钥匙管理员——负责发钥匙

关键区别:AH只做认证,不加密。ESP既加密又认证。实际项目中,99%的场景用ESP就够了。我曾经见过一个团队误配了AH,结果传输内容全是明文,幸好是在测试环境发现的。

AH(认证头)

AH给IP包加一个认证头,接收方用这个头验证数据有没有被篡改。但它不加密数据内容。你想想看,如果只是防篡改不防偷看,那跟明信片有什么区别?所以AH现在用得很少了。

ESP(封装安全载荷)

ESP才是主力。它把原始数据加密后,再包一层新头。我在项目中几乎只用ESP,因为它同时解决了机密性和完整性两个问题。ESP支持多种加密算法,比如AES、3DES,我个人推荐AES-256,性能和安全都平衡。

IKE(互联网密钥交换)

IKE负责自动协商密钥,省去了手动配密钥的麻烦。它分两个阶段:第一阶段建立ISAKMP SA(安全关联),第二阶段建立IPsec SA。我记得第一次配IKE时,被它的“主模式”和“野蛮模式”搞晕了——简单说,主模式更安全但慢,野蛮模式快但暴露身份。

4.2 传输模式 vs 隧道模式

IPsec有两种工作模式,选错模式是新手常犯的错误。我刚开始也踩过这个坑。

特性 传输模式 隧道模式
保护对象 IP包的有效载荷(上层数据) 整个IP包
新IP头 不加新IP头 加新IP头
典型场景 端到端通信(如两台服务器直连) 站点到站点(如两个分支机构的网关)
封装开销 小 大(多一个IP头)

我的选择建议:如果你在配VPN网关之间的连接,用隧道模式。如果是同一台机器上的两个进程需要安全通信,用传输模式。我曾经在一个项目中误把传输模式用在网关上,结果内网IP全暴露了——嗯,那次加班到凌晨三点才改过来。

4.3 IPsec策略配置

配置IPsec策略,说白了就是告诉设备“什么样的流量需要保护,怎么保护”。我习惯按三步走:

  1. 定义感兴趣流——哪些IP、端口、协议需要走IPsec
  2. 配置安全提议——用什么加密算法、认证算法、封装模式
  3. 应用策略——把策略绑定到接口或路由

下面是一个典型的IPsec策略配置示例(以华为设备为例):

# 步骤1:定义感兴趣流
acl number 3000
 rule 5 permit ip source 192.168.1.0 0.0.0.255 destination 10.0.1.0 0.0.0.255

# 步骤2:配置安全提议
ipsec proposal pro1
 esp authentication-algorithm sha2-256
 esp encryption-algorithm aes-256

# 步骤3:配置安全策略
ipsec policy policy1 10 isakmp
 security acl 3000
 proposal pro1
 tunnel local 202.96.1.1
 tunnel remote 203.0.113.1
 sa duration time-based 3600

避坑指南:我曾经遇到过一个问题——ACL配置了但IPsec就是不生效。查了半天,发现是ACL的rule顺序写反了。华为设备默认从上到下匹配,如果前面有条permit any的规则,后面的IPsec规则永远不会被触发。记住:ACL规则顺序就是匹配顺序。

4.4 IPsec VPN实战

理论说完了,咱们来点实战。下面是一个典型的站点到站点IPsec VPN拓扑,我亲手搭过不下20次。

IPsec VPN 站点到站点拓扑图 分支A 内网: 192.168.1.0/24 网关: 202.96.1.1 VPN 网关 互联网 IPsec 隧道 ESP加密 + SHA2认证 VPN 网关 总部 内网: 10.0.1.0/24 网关: 203.0.113.1 数据流:分支A内网 → 分支网关 → IPsec加密隧道 → 总部网关 → 总部内网 对端内网完全透明,应用层无需任何修改

实战配置要点:

  • 预共享密钥(PSK):两端必须一致。我习惯用32位随机字符串,别用“123456”这种——你猜我为什么知道?
  • IKE版本:IKEv2比IKEv1更稳定、更抗攻击。新项目我全用IKEv2。
  • NAT穿透:如果网关后面还有NAT设备,记得开启NAT-T(NAT Traversal)。我曾经在一个客户现场,IPsec死活连不上,最后发现是NAT把ESP协议包给丢了——开启NAT-T后,把ESP封装在UDP里就解决了。

实战经验总结:IPsec VPN排障三板斧——1)先ping对端网关IP,确认网络通;2)检查ACL是否匹配了感兴趣流;3)查看SA状态,确认IKE和IPsec SA都建立成功。这三步能解决80%的问题。

嗯,IPsec的内容就这些。记住:AH基本不用,ESP是主力,IKE负责自动配钥匙。传输模式用于端到端,隧道模式用于网关到网关。配置时注意ACL顺序和NAT穿透问题。下次你配IPsec VPN时,应该能少走不少弯路。