Strongswan多网络连通性配置问题:GCP无法访问本地网络
Strongswan多网络连通性配置问题:GCP无法访问本地网络
网络拓扑与当前状态
首先梳理下你的网络环境和已验证的连通性:
网络架构
On-Prem (192.168.x.x) ↔ AWS Strongswan VM (172.10.x.x) ↔ GCP (10.10.x.x)
已确认的连通性
- ✅ AWS 实例可访问 GCP 服务器(10.10.x.x)
- ✅ 本地网络(192.168.x.x)可访问 GCP 服务器(10.10.x.x)
- ✅ AWS 实例可访问本地网络(192.168.x.x)
- ✅ GCP 服务器可访问 AWS 实例(172.10.x.x)
- ❌ 问题点:GCP 服务器无法访问本地网络(192.168.x.x)
你已配置的SNAT规则:
iptables -t nat -A POSTROUTING -o ens5 -j MASQUERADE
排查与解决建议
针对GCP无法访问On-Prem的问题,我建议从以下几个维度逐步排查:
检查Strongswan的IPsec策略与路由
- 先通过
ipsec statusall查看IPsec连接状态,确认AWS与GCP的隧道是否正常建立,且策略中是否同时包含192.168.x.x/24和10.10.x.x/24的网段授权。如果你的ipsec.conf里只配置了AWS与GCP的子网,没有把本地网段加入leftsubnet(AWS侧),跨网段流量会被拒绝。 - 确认Strongswan VM上存在从
10.10.x.x/24到192.168.x.x/24的路由(可以用ip route list查看),如果没有,需要手动添加静态路由或者通过Strongswan的路由推送功能自动生成。
- 先通过
验证IP转发与反向流量处理
- 首先确认Strongswan VM的IP转发功能是否开启:
如果输出不是sysctl net.ipv4.ip_forwardnet.ipv4.ip_forward = 1,执行sysctl -w net.ipv4.ip_forward=1临时开启,并把net.ipv4.ip_forward=1写入/etc/sysctl.conf实现持久化。 - 你的MASQUERADE规则是处理AWS出站到外部的流量,但GCP访问On-Prem的流量是双向的,需要确保
FORWARD链允许这类流量通过。可以添加IPsec策略匹配的转发规则:iptables -A FORWARD -s 10.10.x.x/24 -d 192.168.x.x/24 -m policy --pol ipsec --dir in -j ACCEPT iptables -A FORWARD -s 192.168.x.x/24 -d 10.10.x.x/24 -m policy --pol ipsec --dir out -j ACCEPT
- 首先确认Strongswan VM的IP转发功能是否开启:
检查GCP端的路由与防火墙
- 登录GCP控制台,查看VPC路由表,确认是否存在一条目标网段为
192.168.x.x/24(根据你的实际子网调整掩码)、下一跳为AWS Strongswan VM公网/私网IP的路由条目。如果没有,需要添加这条路由,让GCP知道该网段的流量要发往Strongswan隧道。 - 检查GCP的防火墙规则,确保允许来自
192.168.x.x/24的入站流量,同时确保IPsec相关协议(ESP/AH)以及IKE端口(UDP 500、4500)的流量不受限制。
- 登录GCP控制台,查看VPC路由表,确认是否存在一条目标网段为
验证On-Prem端的路由配置
- 确认本地网络的网关或核心防火墙是否配置了指向Strongswan VM(172.10.x.x)的路由,目标网段为
10.10.x.x/24。如果本地没有这条路由,返回GCP的流量会找不到正确的出口,导致连接超时。 - 检查本地防火墙是否允许来自
10.10.x.x/24网段的入站请求,避免流量被本地设备拦截。
- 确认本地网络的网关或核心防火墙是否配置了指向Strongswan VM(172.10.x.x)的路由,目标网段为
排查iptables规则冲突
- 执行
iptables -L -n -v查看FORWARD链的所有规则,确认没有拒绝10.10.x.x到192.168.x.x流量的规则。如果有,需要调整规则顺序或者删除拒绝规则。
- 执行
先从这些步骤排查,大部分跨网段IPsec连通性问题都出在路由或策略配置遗漏上。如果排查过程中遇到具体的命令输出或配置片段,可以补充出来,我再帮你进一步分析。
备注:内容来源于stack exchange,提问作者user170039
相关产品推荐
相关产品推荐

