3、VPN技术基础:IPsec VPN原理,站点到站点VPN配置,动态路由协议(BGP)在VPN中的应用。

3.1 IPsec VPN原理:别被“隧道”两个字骗了

很多人一听到VPN,脑子里就浮现出“挖隧道”的画面。其实没那么玄乎。IPsec VPN说白了,就是在两个网络节点之间,给IP数据包加了一层“加密信封”。

我个人习惯把IPsec拆成两个部分来理解:认证头(AH)封装安全载荷(ESP)。AH只管数据有没有被篡改,ESP才负责加密。实际项目中,我几乎只用ESP,因为AH不支持NAT穿透——你想想看,现在哪个企业网络没有NAT?

IPsec有两种模式:

  • 传输模式:只加密IP包的数据部分,头部不动。适合端到端的通信,比如两台服务器之间。
  • 隧道模式:整个IP包都被加密,再套上一个新的IP头。这才是站点到站点VPN的标准姿势。

核心要点:IPsec不是单个协议,而是一套协议族。它包括IKE(密钥交换)、ESP(加密)、AH(认证)。IKE又分两个阶段——阶段1建立管理通道,阶段2建立数据通道。

嗯,这里要注意:IKE阶段1有两种模式——主模式和野蛮模式。主模式更安全,但交互次数多。野蛮模式快,但会暴露身份。我在项目中遇到过,有些老旧防火墙只支持野蛮模式,那就只能迁就它了。

3.2 站点到站点VPN配置:手把手教你搭一条“专线”

配置站点到站点IPsec VPN,其实就三步:定义感兴趣流、配置IKE策略、配置IPsec策略。我拿华为和思科的设备举个例子。

华为设备配置示例:

# 定义感兴趣流(哪些流量要走VPN)
acl number 3000
 rule 5 permit ip source 192.168.1.0 0.0.0.255 destination 10.0.0.0 0.0.0.255

# 配置IKE提议
ike proposal 1
 encryption-algorithm aes-256
 dh group14
 authentication-algorithm sha256
 authentication-method pre-share
 integrity-algorithm hmac-sha256

# 配置IPsec策略
ipsec policy vpn-policy 1 isakmp
 security acl 3000
 ike-peer hq-peer
 proposal ipsec-proposal-1

思科设备配置示例:

crypto isakmp policy 10
 encr aes 256
 authentication pre-share
 group 14
 hash sha256

crypto isakmp key cisco123 address 203.0.113.1

crypto ipsec transform-set AES256-SHA esp-aes 256 esp-sha-hmac

crypto map VPN-MAP 10 ipsec-isakmp
 set peer 203.0.113.1
 set transform-set AES256-SHA
 match address 101

避坑指南:我曾经在配置两端设备时,把预共享密钥写成了“cisco123”和“Cisco123”——大小写不一致,结果排错排了整整两个小时。记住,预共享密钥是大小写敏感的!

配置完成后,记得用display ike sa(华为)或show crypto isakmp sa(思科)检查IKE阶段1是否建立成功。如果状态是“RD”或“QM_IDLE”,恭喜你,隧道通了。

3.3 动态路由协议(BGP)在VPN中的应用:让网络自己“认路”

站点到站点VPN建好了,但问题来了——如果我有三个分支、两个总部,难道每条链路都要手动配静态路由?那网络拓扑一变,你就得改配置改到哭。

这时候就该BGP上场了。BGP在VPN中的应用,我把它分为两种场景:

  • MPLS VPN中的BGP:运营商级别的玩法,用BGP传递VPNv4路由,配合MPLS标签转发。这个比较复杂,咱们后面章节再细聊。
  • 普通IPsec VPN中的BGP:直接在IPsec隧道上跑BGP,让两端设备自动交换路由。

说白了,就是在IPsec隧道接口上启用BGP,把隧道当成一条物理链路来用。配置起来很简单:

# 华为设备配置BGP over IPsec
interface Tunnel0/0/0
 ip address 10.255.255.1 255.255.255.252
 tunnel-protocol ipsec
 source GigabitEthernet0/0/0
 destination 203.0.113.1

bgp 65001
 peer 10.255.255.2 as-number 65002
 network 192.168.1.0 255.255.255.0

注意:BGP over IPsec有一个坑——BGP的Keepalive报文如果因为IPsec隧道抖动而丢失,会导致BGP邻居频繁震荡。我建议把BGP的Hold Time调大一些,比如从默认的180秒改成300秒,给IPsec重协商留出缓冲时间。

为什么要用BGP而不是OSPF?原因有三:

  1. BGP更稳定:OSPF对链路抖动敏感,IPsec隧道一旦重协商,OSPF就会重新计算SPF树。
  2. BGP支持策略控制:你可以用Route-Map精确控制哪些路由能通过VPN传播。
  3. BGP适合大规模组网:分支多了,OSPF的LSA泛洪会压垮设备CPU,BGP的增量更新就优雅得多。

我记得有一次帮客户做跨国组网,三个国家的分支通过IPsec VPN连到总部。一开始用的OSPF,结果每次IPsec重协商,全网路由都要震荡一遍。后来改成BGP,世界清净了。

3.4 实战经验总结:三个“一定”

场景 建议 原因
IPsec配置 一定要用AES-256 + SHA256 3DES和MD5已经不安全了,等保测评过不去
NAT穿透 一定要开启NAT-T 两端设备如果都在NAT后面,不加NAT-T隧道建不起来
路由协议 一定要用BGP 静态路由维护成本高,OSPF不稳定,BGP是正解

最后说一句:IPsec VPN + BGP的组合,是企业多云互联的“黄金搭档”。你想想看,云上VPC、本地数据中心、分支办公室,全都能通过BGP自动交换路由,IPsec负责加密传输。这套方案我用了五年,稳得很。

下一章咱们聊聊SD-WAN——说白了就是给IPsec VPN加了个“智能大脑”,让流量自动选择最优路径。到时候你会发现,原来网络也可以这么“聪明”。