当我尝试从我的私人托管 Gitlab 服务器克隆或拉取 Git 存储库时,经常会收到一条错误消息,提示无法解析名称或主机。
我认为这是因为 DNS 查找失败,所以我尝试运行nslookup privategitlab.here.com
以检查是否有任何错误。奇怪的是,域名已正确解析。如果我尝试克隆/拉取,它确实可以正常工作,不会出现错误。
我曾经看到过一个错误nslookup
。它指出无法使用 Google 名称服务器 (8.8.8.8) 解析 DNS,错误为SERVFAIL
。但当我nslookup
再次运行时,它确实开始再次工作。
DNS 查找怎么会看似随机失败呢?
我只在我的 Digital Ocean 服务器上注意到此错误。使用 Azure 时不会发生此错误。
在两种情况下我都使用了 Ubuntu 14.04 x64。
答案1
您的可用 DNS 服务器列表中的某个 DNS 服务器可能响应错误或根本没有响应,或者您使用的域名的主 DNS 服务器出现某种问题。虽然我们倾向于认为 DNS 在出现问题时可以很好地进行故障转移,但这种情况很少发生。
另一个可能的原因是您的网络(甚至是 Google 的服务器)进行 DNS 查找时出现严重延迟。如果第一次尝试失败,然后第二次尝试返回,这很好地表明您的 DNS 服务器获取答案的速度太慢,直到缓存了答案后才能响应。
所以基本上它可能是您的本地 DNS 服务器、您的主机的 DNS 服务器,或者您的 resolv.conf 文件中可能有一个错误条目指向不再存在的 DNS 服务器。