You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

通过堡垒机上的cloud-sql-proxy连接CloudSQL遇IAP隧道问题

问题诊断与解决方案

核心问题分析

你的IAP隧道无法连接堡垒机3306端口,核心原因有两点:

  1. Cloud SQL Proxy监听范围限制:默认情况下cloud-sql-proxy仅监听127.0.0.1,仅允许堡垒机本地进程访问,而IAP隧道的连接请求属于外部(相对堡垒机本地)请求,无法命中监听端口。
  2. 进程生命周期不稳定:直接在启动脚本中运行./cloud-sql-proxy,进程会依附于脚本会话,脚本执行完成后进程可能被终止,无法长期稳定运行。

修复步骤

1. 修改Cloud SQL Proxy监听地址

在Terraform的startup_script中,给cloud-sql-proxy添加--address 0.0.0.0参数,让它监听堡垒机的所有网络接口:

./cloud-sql-proxy --private-ip --address 0.0.0.0 ${var.project}:${var.db_instance_region}:${var.db_instance_name}

2. 确保进程后台稳定运行

直接运行进程会在脚本会话结束后终止,推荐两种稳定运行方案:

方案A:用nohup后台启动

修改启动命令,让进程脱离终端并持久运行:

nohup ./cloud-sql-proxy --private-ip --address 0.0.0.0 ${var.project}:${var.db_instance_region}:${var.db_instance_name} > /var/log/cloud-sql-proxy.log 2>&1 &
  • nohup:让进程脱离终端会话,脚本结束后仍能继续运行
  • 输出重定向到日志文件,方便后续排查问题

方案B:配置systemd服务(推荐,可靠性更高)

替换启动脚本中的启动逻辑,用systemd管理进程,实现崩溃自动重启:

#!/bin/bash
sudo apt-get update
$(gcloud info --format="value(basic.python_location)") -m pip install numpy
URL="https://storage.googleapis.com/cloud-sql-connectors/cloud-sql-proxy/v2.6.1"
curl "$URL/cloud-sql-proxy.linux.amd64" -o /usr/local/bin/cloud-sql-proxy
chmod +x /usr/local/bin/cloud-sql-proxy

# 创建systemd服务配置文件
cat << EOF | sudo tee /etc/systemd/system/cloud-sql-proxy.service
[Unit]
Description=Cloud SQL Proxy Service
After=network.target

[Service]
Type=simple
ExecStart=/usr/local/bin/cloud-sql-proxy --private-ip --address 0.0.0.0 ${var.project}:${var.db_instance_region}:${var.db_instance_name}
Restart=always
User=root

[Install]
WantedBy=multi-user.target
EOF

# 加载配置并启动服务
sudo systemctl daemon-reload
sudo systemctl enable cloud-sql-proxy
sudo systemctl start cloud-sql-proxy

3. 验证配置

应用Terraform变更重新部署堡垒机后,执行以下检查:

  • 检查进程状态(systemd方案):sudo systemctl status cloud-sql-proxy
  • 确认端口监听:ss -tulpn | grep 3306,应显示监听0.0.0.0:3306

4. 重新测试IAP隧道

再次执行隧道命令:

gcloud compute start-iap-tunnel bastion-vm 3306 --local-host-port=localhost:3310 --zone=europe-west2-a --project=my-project

此时本地localhost:3310即可正常访问Cloud SQL实例。

额外优化建议

  • 权限最小化:当前堡垒机服务账号使用roles/editor权限过大,建议仅授予roles/cloudsql.client权限即可满足proxy运行需求。
  • 防火墙加固:保持防火墙规则仅允许IAP固定IP段35.235.240.0/20访问3306端口,避免不必要的暴露。

内容的提问来源于stack exchange,提问作者markwalker_

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 06:24:56