2. Cloud VPN 深入
Cloud VPN 是 Google Cloud 混合云互联中最常用的加密通道方案,但很多工程师第一次接触时容易把 HA VPN 和 Classic VPN 混为一谈。两者虽然都基于 IPsec,但在拓扑、SLA、BGP 支持和路由行为上有本质差异。理解这些差异,是后续配置、排障和调优的前提。
一、HA VPN 与 Classic VPN 的本质区别
Classic VPN 是早期方案,采用静态路由或基于策略的路由,单个隧道只能连接一个对端网关,SLA 为 99.9%。它支持两种场景:静态路由(手动指定远端网段)和动态路由(通过 Cloud Router 建立 BGP)。但 Classic VPN 的动态路由只支持一个隧道对应一个 BGP 会话,且不支持 ECMP 多隧道负载均衡。
HA VPN 是当前推荐方案,SLA 达到 99.99%,必须配合 Cloud Router 使用 BGP。它的核心特征是:一个 HA VPN 网关包含两个接口(interface 0 和 interface 1),每个接口对应一个外部 IP。要获得 99.99% 的 SLA,必须同时建立两条隧道,分别连接到两个不同的接口,并且两条隧道都处于 UP 状态。HA VPN 支持 ECMP,多条隧道可以同时承载流量,实现负载均衡和冗余。
二、HA VPN 配置的关键步骤与参数
配置 HA VPN 到本地网关的典型流程如下。假设本地网关有两个公网 IP:203.0.113.10 和 203.0.113.20,本地子网为 192.168.0.0/24,GCP VPC 子网为 10.0.0.0/24。
- 创建 HA VPN 网关:选择区域,GCP 自动分配两个外部 IP,例如
34.82.1.1(interface 0)和34.82.1.2(interface 1)。 - 创建 Cloud Router:指定 ASN,例如
65001,并绑定到 VPC 网络和区域。 - 创建对端 VPN 网关:输入本地两个公网 IP,分别对应两个隧道。
- 创建两条 VPN 隧道:
- 隧道 1:GCP interface 0 ↔ 本地 IP 203.0.113.10,IKE 版本选 IKEv2,共享密钥自定义。
- 隧道 2:GCP interface 1 ↔ 本地 IP 203.0.113.20,使用相同或不同的共享密钥。
- 配置 BGP 会话:每条隧道对应一个 BGP 会话。GCP 侧 BGP IP 通常从
169.254.0.0/16中分配,例如隧道 1 使用169.254.1.1(GCP)和169.254.1.2(本地),隧道 2 使用169.254.2.1和169.254.2.2。对端 ASN 设为65002。 - 添加 BGP 路由通告:在 Cloud Router 中配置自定义通告,将 GCP 子网
10.0.0.0/24通告给本地;本地设备也需要通告192.168.0.0/24。
配置完成后,在 Cloud Console 的 VPN 隧道页面应看到两条隧道状态均为“已建立”,BGP 会话状态为“已启动”,并且路由表中出现从 BGP 学到的对端网段。
三、BGP 会话建立与路由交换过程
BGP 会话建立分为三个阶段:Idle → Connect → Active → OpenSent → OpenConfirm → Established。实际排障时,最常卡在 Active 或 OpenSent 状态。Active 表示 TCP 连接未建立,通常是 BGP 对端 IP 不可达或防火墙未放行 179 端口;OpenSent 表示 TCP 已连接但 BGP Open 报文参数不匹配,常见原因是 ASN 配置错误或 BGP 认证失败。
路由交换方面,Cloud Router 默认会通告 VPC 中所有子网路由,也可以配置自定义通告。从对端学到的路由会以 priority 和 MED 等属性参与选路。HA VPN 的两条隧道如果学到相同前缀,GCP 会执行 ECMP,将流量哈希到两条隧道上。如果一条隧道断开,路由会快速收敛到另一条,收敛时间通常在秒级。
四、故障排查的常见切入点
当隧道无法建立时,按以下顺序排查效率最高:
- IKE 阶段:检查共享密钥是否一致、IKE 版本是否匹配(建议统一 IKEv2)、对端是否允许 GCP 的公网 IP 发起连接。GCP 侧日志可在 Cloud Logging 中过滤
resource.type="vpn_gateway"查看。 - BGP 阶段:确认 BGP 对端 IP 是否可达(可用
ping从本地设备测试 169.254 地址),检查 ASN 是否匹配,确认 179 端口未被防火墙拦截。 - 路由阶段:如果隧道和 BGP 都 UP,但业务不通,检查 Cloud Router 是否通告了正确的子网,本地是否学到了 GCP 路由,以及 VPC 防火墙规则是否放行了来自 192.168.0.0/24 的流量。
五、性能调优要点
Cloud VPN 单隧道吞吐量受限于加密处理和网络路径,通常每个隧道可达到 1.5~3 Gbps。要提升总吞吐,最直接的方式是利用 HA VPN 的多隧道 ECMP。以下参数值得关注:
| 调优项 | 建议值/做法 | 影响 |
|---|---|---|
| IKE 版本 | IKEv2 | 更稳定,支持 MOBIKE,重连更快 |
| 加密算法 | AES-256-GCM | 硬件加速支持好,吞吐更高 |
| 隧道数量 | 2 条以上 | ECMP 提升总带宽和冗余 |
| MTU | 1460 或更低 | 避免分片,减少重传 |
| BGP 保持时间 | 默认 60s/180s | 缩短可加快收敛,但增加报文开销 |
另外,如果本地设备支持,可以启用 多隧道 ECMP 并调整哈希算法,使流量更均匀地分布。对于延迟敏感的业务,建议监控隧道延迟和丢包,必要时考虑使用 Cloud Interconnect 替代 VPN。
gcloud compute vpn-tunnels describe 查看隧道状态,用 gcloud compute routers get-status 查看 BGP 会话和学到的路由。业务侧可用 iperf3 测试吞吐,用 ping 测试延迟和丢包。
总结来说,HA VPN 是生产环境的首选,核心在于双接口、双隧道、BGP 和 ECMP 的配合。配置时重点关注 BGP 参数和路由通告,排障时按 IKE → BGP → 路由的顺序逐层排查,性能上优先通过多隧道 ECMP 和加密算法优化来提升。掌握这些要点,就能在混合云场景中稳定、高效地使用 Cloud VPN。