解释“导入自定义路由”对私有 IP 实例的影响。

解读

在国内企业上云面试中,面试官问“导入自定义路由”对 Cloud SQL 私有 IP 实例的影响,核心想验证两点:

  1. 你是否理解 Cloud SQL 私有 IP 通过 VPC 对等互连(VPC Peering) 与租户 VPC 打通,而 VPC Peering 默认不传递自定义路由
  2. 你是否知道 “导入自定义路由”= 在对等连接上打开 import-custom-routes 开关,从而让 Cloud SQL 实例能够回包到租户侧的非本地子网(例如云下 IDC、其它区域、VPN/专线网段)。
    答不出“回包路由缺失导致连接超时”基本就扣分。

知识点

  • VPC Peering 规则:双向对等仅交换子网路由,不交换静态路由、BGP 路由、Cloud Router 产生的自定义路由。
  • Cloud SQL 私有 IP 架构:实例实际运行在 Google 托管 VPC,通过 Private Service Connection(PSC) 与租户 VPC 建立对等连接;租户侧看到的是 RFC 1918 保留地址段(如 172.x 或 10.x)。
  • 自定义路由:包括 Cloud Router 通过 BGP 学到的 Cloud VPN/Dedicated Interconnect 路由、静态路由、以及 VPC Peering 的二级对等(transitive peering) 路由。
  • import-custom-routes 开关:在租户 VPC 侧对 PSC 对等连接执行 gcloud compute networks peerings update cloudsql-mysql-peering --network=my-vpc --import-custom-routes托管 VPC 会把租户侧的自定义路由注入到其路由表,Cloud SQL 实例才能回包。
  • 安全边界:打开开关后,托管 VPC 会获得租户侧全部自定义路由,需评估是否暴露内部网段;同时 Cloud SQL 实例的出向流量可到达这些网段,需用 VPC Firewall + 云下防火墙 双向限制。
  • 国内合规:金融、政企客户若通过 BGP 三线接入跨境专线,必须打开该开关,否则 云下主机 telnet 3306 能建 TCP,但握手后秒断(SYN→SYN-ACK→ACK 后无响应),抓包表现为 Cloud SQL 实例无法找到回程路由

答案

“导入自定义路由”是指在对等连接上启用 import-custom-routes,把租户 VPC 的自定义路由(VPN/专线/静态路由)注入到 Cloud SQL 托管 VPC。
影响一:打通回包路径。默认情况下,Cloud SQL 实例只能把包直接返回到租户 VPC 的本地子网;若客户端来自云下 IDC 或跨区域网段,实例因缺少路由而丢弃回程包,表现为连接超时。打开开关后,托管 VPC 获得这些自定义路由,回包可达,业务连接瞬间恢复
影响二:出向流量范围扩大。Cloud SQL 实例的出向流量现在可以到达所有被导入的网段,需同步收紧防火墙规则,避免实例被当作跳板。
影响三:路由冲突与优先级。若租户侧存在与 Google 内部重叠的 172.16.0.0/12 子网,导入后可能产生最长前缀匹配冲突,导致部分实例访问异常,需提前规划 CIDR。
影响四:合规审计。国内等保与银监检查要求所有跨境或跨域流量可追踪,打开开关后必须在 VPC Flow Log + 云下流量镜像 中记录 Cloud SQL 出向流量,否则审计会被判为“不可溯源”。

拓展思考

  1. 如果客户要求 只让 Cloud SQL 访问云下 10.100.0.0/24 一个网段,但租户侧还有 50 条其它自定义路由,如何最小化路由泄露
    答:在 Cloud Router 侧使用 自定义路由 Advertise 白名单,仅宣告 10.100.0.0/24;或者在云下 IDC 侧通过 BGP 策略过滤,让 Google 只学到这一条,实现事实上的最小导入
  2. 当 Cloud SQL 实例开启 高可用(HA)+ 跨区域只读副本 时,导入自定义路由是否影响故障切换?
    答:主实例切换至异地后,新主仍在相同托管 VPC,路由表不变,因此导入自定义路由对 RTO 无负面影响;但只读副本若部署在另一区域 VPC,需要独立再做一次 PSC 对等连接并同样打开 import-custom-routes,否则云下应用连只读副本依旧超时。
  3. 国内 双活数据中心 场景,客户用 两条 10G 专线 + BGP 主备 接入不同接入点(北京/上海),如何验证导入自定义路由生效?
    答:在 Cloud SQL 实例上通过 cloudsql_proxy 的 -use_private_ip 与 -debug_http 模式,结合 tcpdump 抓包,观察 SYN-ACK 的源 MAC 是否对应托管 VPC 的 Google 内部网关;同时在租户侧 故意撤回一条 BGP 路由,看 Cloud SQL 到该网段的 next hop 是否立即消失,确认路由实时同步。