跨云网络打通实战:阿里云与腾讯云通过 StrongSwan 实现 VPC 互通并中转访问运维网络

在多云架构日益普及的今天,企业常常需要在不同云厂商之间打通私有网络,实现资源互通、数据同步或统一运维。本文将详细介绍如何通过 StrongSwan IPsec 站点到站点(Site-to-Site)VPN,实现 阿里云 VPC_A(172.20.0.0/16)腾讯云 VPC_B(172.16.0.0/16) 的双向互通,并进一步利用 VPC_A 作为中转节点,使腾讯云 VPC_B 能够访问 阿里云的运维网络 VPC_OPS(10.200.0.0/16)

整个方案无需依赖云厂商的跨云专线服务,成本可控,适用于中小型企业组网环境。


一、整体架构概览

腾讯云 VPC_B (172.16.0.0/16)
        ↑
        | StrongSwan IPsec S2S
        ↓
阿里云 VPC_A (172.20.0.0/16) ←→(VPC 对等连接)→ 阿里云 VPC_OPS (10.200.0.0/16)

- ECS_A(172.20.0.234):阿里云侧 StrongSwan 网关
- CVM_B(172.16.16.8):腾讯云侧 StrongSwan 网关
- 公网 IP:ECS_A → 120.120.120.120(乱编的公网IP,实际配置请修改为正确的公网IP);CVM_B → 100.100.100.100(乱编的公网IP,实际配置请修改为正确的公网IP)

关键点:VPC 对等连接 不能跨云传递路由,因此必须通过 IPsec + 路由中转实现 VPC_B ↔ VPC_OPS 的双向通信。


二、前提条件检查

1. 公网可达性

  • 两台网关主机必须拥有 固定公网 IP(已满足)。
  • 安全组/防火墙需开放 UDP 500(IKE)UDP 4500(NAT-T) 端口,双向放行。

2. 内网路由基础

  • 阿里云 VPC_A 与 VPC_OPS 已建立 VPC 对等连接,且路由表已互相添加对方网段。
  • 腾讯云 VPC_B 的路由表需手动添加指向 CVM_B 的 172.20.0.0/1610.200.0.0/16 路由。
  • 阿里云 VPC_A 需添加指向 ECS_A 的 172.16.0.0/16 路由(用于回程流量)。

三、StrongSwan 配置详解

3.1 阿里云侧(ECS_A)

/etc/ipsec.conf

config setup
    charondebug="ike 2, knl 2, cfg 2"
    uniqueids=no

conn tencent-vpc
    authby=psk
    left=%any
    leftid=120.120.120.120
    leftsubnet=172.20.0.0/16,10.200.0.0/16   # 包含中转网段!
    leftfirewall=yes
    right=100.100.100.100
    rightid=100.100.100.100
    rightsubnet=172.16.0.0/16
    ike=aes256-sha2_256-modp2048!
    esp=aes256-sha2_256!
    keyingtries=0
    ikelifetime=8h
    lifetime=1h
    dpddelay=30
    dpdtimeout=120
    dpdaction=restart
    auto=start

/etc/ipsec.secrets

  • your_strong_psk_here 推荐使用base64编码后的字符串,避免各种奇怪的异常
120.120.120.120 100.100.100.100 : PSK "your_strong_psk_here"

启用 IP 转发

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p

防火墙规则(iptables)

## 按需开启,测试可直接关闭防火墙。

# 允许 IPsec 控制流量
iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT

# 允许转发:VPC_B ↔ VPC_OPS
iptables -A FORWARD -s 172.16.0.0/16 -d 10.200.0.0/16 -j ACCEPT
iptables -A FORWARD -s 10.200.0.0/16 -d 172.16.0.0/16 -j ACCEPT

# (一般不需要)如遇 NAT 问题可启用 MASQUERADE
# iptables -t nat -A POSTROUTING -s 172.16.0.0/16 -d 10.200.0.0/16 -j MASQUERADE

3.2 腾讯云侧(CVM_B)

/etc/ipsec.conf

config setup
    charondebug="ike 2, knl 2, cfg 2"
    uniqueids=no

conn aliyun-vpc
    authby=psk
    left=%any
    leftid=100.100.100.100
    leftsubnet=172.16.0.0/16
    leftfirewall=yes
    right=120.120.120.120
    rightid=120.120.120.120
    rightsubnet=172.20.0.0/16,10.200.0.0/16   # 目标包含两个网段
    ike=aes256-sha2_256-modp2048!
    esp=aes256-sha2_256!
    keyingtries=0
    ikelifetime=8h
    lifetime=1h
    dpddelay=30
    dpdtimeout=120
    dpdaction=restart
    auto=start

/etc/ipsec.secrets

  • 需要跟上面的密钥一致,否则无法认证。
  • your_strong_psk_here 推荐使用base64编码后的字符串,避免各种奇怪的异常
100.100.100.100 120.120.120.120 : PSK "your_strong_psk_here"

启用 IP 转发

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p

防火墙规则

## 按需开启,测试可直接关闭防火墙。

iptables -A INPUT -p udp --dport 500 -j ACCEPT
iptables -A INPUT -p udp --dport 4500 -j ACCEPT
iptables -A FORWARD -s 172.20.0.0/16 -d 172.16.0.0/16 -j ACCEPT
iptables -A FORWARD -s 10.200.0.0/16 -d 172.16.0.0/16 -j ACCEPT

重要:在腾讯云控制台,必须 关闭 CVM_B 的“源/目的地址检查”,否则无法转发非本机 IP 的流量。路径:CVM 实例 → 更多 → 网络 → 关闭“源/目的检查”。


四、云平台路由配置

4.1 阿里云

  • VPC_A 路由表:添加
    目标:172.16.0.0/16 → 下一跳:ECS_A(172.20.0.234)
  • VPC_OPS 路由表(推荐):添加
    目标:172.16.0.0/16 → 下一跳:VPC_A 对等连接

    因 VPC_A 已能路由到腾讯云,VPC_OPS 可通过 VPC_A 中转访问。

4.2 腾讯云

  • VPC_B 路由表:添加两条自定义路由
    • 172.20.0.0/16 → 下一跳:CVM_B(172.16.16.8)
    • 10.200.0.0/16 → 下一跳:CVM_B(172.16.16.8)

五、验证与排错

1. 启动并检查 IPsec 状态

systemctl start strongswan-starter.service
ipsec status

确保连接状态为 ESTABLISHED

2. 网络连通性测试

  • 从 VPC_B(如 172.16.16.10)
    ping 172.20.0.234      # 应通(直达 VPC_A)
    ping 10.200.0.10       # 应通(经中转访问 VPC_OPS)
  • 从 VPC_OPS(如 10.200.0.10)
    ping 172.16.16.8       # 应通(回程经 VPC_A → IPsec)

3. 抓包排查(如不通)

在 ECS_A 上执行:

tcpdump -i any host 100.100.100.100

观察是否收到 ESP 包,并检查是否成功转发至 10.200.0.0/16


六、注意事项与最佳实践

  • PSK 安全性:务必使用高强度预共享密钥(建议 32 位以上随机字符串)。
  • 避免 NAT:除非必要,不要启用 MASQUERADE,否则会破坏端到端路由语义。
  • 云平台限制
    • 阿里云 ECS 默认允许 IP 转发(只要系统开启)。
    • 腾讯云 CVM 必须 手动关闭源/目的检查,这是常见失败原因。
  • 性能考量:若流量大或延迟敏感,建议评估云厂商的 云企业网(CEN)+ 云联网(CCN) 跨云方案,但成本较高。
  • 高可用:生产环境建议部署双网关 + Keepalived 或使用云厂商托管 VPN 服务。

结语

通过 StrongSwan 构建跨云 IPsec 隧道,配合合理的路由规划,我们成功实现了 腾讯云 VPC_B ↔ 阿里云 VPC_A ↔ 阿里云 VPC_OPS 的三层网络互通。该方案灵活、开源、成本低,适用于混合云、灾备、统一监控等多种场景。

附:本文所有配置已在 阿里云、腾讯云 Ubuntu 24.04 + StrongSwan 5.9.1 环境验证通过。


跨云网络打通实战:阿里云与腾讯云通过 StrongSwan 实现 VPC 互通并中转访问运维网络
https://www.gmtgo.com/63988.html
作者
大帅
发布于
2025年10月26日
许可协议