Ubuntu 解决因 DNS Server 配置问题导致的网站无法访问 Resolving ... failed: No address associated with hostname.

前言

最近尝试在一台远程服务器上使用 Copilot,结果提示报错无法连接 Github。

[ERROR] [default] [2023-06-28T02:25:41.892Z] GitHub Copilot could not connect to server. Extension activation failed: "getaddrinfo EAI_AGAIN api.github.com"

第一直觉是本来就无法访问,但是测试了一下 ping 居然能 ping 通。就很离奇。在这里简单记录一下 debug 的过程。

正文

首先用 nslookup github.com 命令来检查。

nslookup github.com

如果提示找不到 nslookup 可以用下面的命令安装。

apt install dnsutils

nslookup 在我这边的输出是:

Server:         10.223.20.32
Address:        10.223.20.32#53

** server can't find github.com: REFUSED

果然是 DNS 配置有问题,直接给我 refused 了。

因为我使用 SSH 连接没有开 GUI,下面介绍命令行修改 DNS 配置的方法。

打开 `/etc/resolv.conf`,检查内容。

nameserver 10.223.20.32
search 4e24-4b25-a292.svc.cluster.local svc.cluster.local cluster.local
options ndots:5

关于 `/etc/resolv.conf` 的内容详细解析可以自行搜索。

第一行是 DNS 服务器,第二行是 DNS 配置 query 的,第三行表示“the minimum number of dots a domain name can have, which makes the resolver query it as an absolute domain name.”(好难翻译,参见 The /etc/resolv.conf File | Baeldung on Linux)

基本的思路就是估计这个 DNS 服务器只配置了基本的内网的 DNS,也不会向外网发出请求。而我们的服务器是可以ping通外网的,所以直接在后面加一个 8.8.8.8 的 DNS 服务器试试。

nameserver 8.8.8.8

为了防止本来内网的一些服务受影响,我没有删去原有的部分。

然后应该问题就解决了。

wget https://github.com

发现可以正常访问了,Copilot 的报错也消失了。 

你可能感兴趣的:(ubuntu,linux,运维)