GCP私有VM实例无法通过私有DNS解析ghs.googlehosted.com求助
解决GCP私有VM通过私有DNS访问App Engine的连接问题
可行解决方案
1. 在私有DNS区域添加App Engine的CNAME记录
直接在你的私有DNS区域(如dev.example.com)中,为目标App Engine服务的子域名添加CNAME记录,指向ghs.googlehosted.com。例如你的App Engine服务地址是app.dev.example.com,添加如下记录:
app.dev.example.com. IN CNAME ghs.googlehosted.com.
这样私有DNS解析该子域名时会返回正确的CNAME,VM后续会自动通过公网DNS解析ghs.googlehosted.com的IP(因为私有DNS未覆盖该域名,会自动 fallback 到公网解析)。
2. 配置私有DNS条件转发规则
在GCP私有DNS区域中创建条件转发规则,将ghs.googlehosted.com的解析请求转发到公网DNS服务器(比如8.8.8.8或GCP内部DNS169.254.169.254)。这样私有VM解析该域名时,会绕过私有DNS的限制,直接获取公网IP。
3. 调整VM的DNS服务器优先级
修改私有VM的DNS配置,将公网DNS服务器放在私有DNS之前,确保ghs.googlehosted.com的解析优先走公网:
- 若使用
systemd-resolved,编辑/etc/systemd/resolved.conf,设置DNS=8.8.8.8 <你的私有DNSIP>,然后执行sudo systemctl restart systemd-resolved - 通过GCP实例元数据配置:添加
dns-servers元数据,值为8.8.8.8, <私有DNSIP>,确保配置持久化(避免GCP自动覆盖)
4. 启用App Engine私有访问(Serverless VPC Access)
配置Serverless VPC Access连接器,让App Engine服务接入你的VPC网络,私有VM可直接通过内部IP访问App Engine,无需依赖公网DNS解析ghs.googlehosted.com:
- 在GCP控制台创建Serverless VPC Access连接器
- 修改App Engine的
app.yaml,添加vpc_access_connector配置指向该连接器 - 配置VPC防火墙规则,允许VM与连接器之间的通信
内容的提问来源于stack exchange,提问作者Kaslie
相关产品推荐
相关产品推荐

