我的 Google Cloud 实例不再能够解析外部主机名

我的 Google Cloud 实例不再能够解析外部主机名

昨天我不得不恢复到虚拟机的最近快照。在我拍摄快照时,该虚拟机运行正常。

但现在我无法再解析来自此主机的任何 URL。所有 git pull 命令、所有 curl 请求、主机查找等均失败。例如:

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

然而,这个主机可以从外界访问,因为我可以通过 ssh 连接到它,而且传入的 http 请求正在得到服务。

我忘记了什么?

答案1

您不必在 /etc/resolv.conf 中添加手动条目,只需运行以下命令即可刷新文件。遇到了同样的问题,并通过此操作解决了它。

systemd-resolve --status

答案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

答案3

事实上,您需要对/etc/resolv.conf/etc/hosts文件进行适当的配置,以便将 DNS 请求正确解析到特定主机;否则,您的请求将直接路由到您的默认 DNS 服务器,您将无法访问上述文件中应声明的主机。这是文件配置的示例/etc/hosts

127.0.0.1 localhost
::1 localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
fe00::0 ip6-mcastprefix
fe00::1 ip6-allnodes
fe00::2 ip6-allrouters

在文件末尾,您可以添加以下行:

169.254.169.254 metadata.google.internal

话虽如此,无论您的resolv.conf文件如何被第三方修改,您都应该能够正确解析文件中声明的主机/etc/hosts

有关内部 DNS 和文件的更多信息resolv.conf,请查看此关联

相关内容