我的 google 云实例不再能够解析外部主机名

My google cloud instance is no longer able to resolve external hostnames

昨天我不得不恢复到我的虚拟机的最新快照。这个虚拟机在我使用时运行完美。

但现在我无法再从该主机解析任何 url。所有 git 拉命令、所有 curl 请求、主机查找等都失败了。例如:

# host www.google.com
; connection timed out; no servers could be reached

但是这个主机可以从外部世界访问,因为我可以通过 ssh 访问它,并且正在处理传入的 http 请求。

我忘记了什么?

这是预期的行为,GCP 中实例的主机名由元数据服务器提供。每次实例启动时,它都会从元数据服务器获取主机名,因此重置在实例级别所做的任何更改,请参阅 1 and 2

事实证明,文件 /etc/resolv.conf 已在启动实例后大约 18 小时自动填充。

不太方便,但很高兴解决了。

如果我当时知道,我想我可以通过将此添加到 /etc/resolve.conf:

来解决问题
domain c.[Project ID].internal 
search c.[Project ID].internal.google.internal. 
nameserver 169.254.169.254