我有一台小型的 Dedi 服务器,上面安装了 Ubuntu 12.04。由于我安装了桌面,所以我通过 x2go 访问它。
一切都运行正常,直到两天前,重启后,我失去了对互联网的访问,并开始收到“无法解析主机名”的错误。
如果我尝试 ping google,我会得到:
ping: unknown host google.com
为了访问某些网站,我将它们添加到 hosts 文件中,这对大多数网站都有效,但不是全部。当然,这只是一个临时解决方案。
如果我查看“系统设置 - 网络”,我会得到以下信息:
我不太有能力,所以我不知道该发布什么其他信息,但请询问任何你希望我了解的信息。
谢谢。
答案1
该问题完全与 DNS 有关。由于/etc/resolv.conf文件,因此在通过主机名 ping 外部主机时名称解析失败/etc/hosts項目。
在 Ubuntu 12.04 中网络管理器软件包提供了与网络相关的功能(而不是旧的联网程序),解析配置(和域名系统在某种程度上)提供批量 DNS 功能的程序。但令人惊讶的是,在您的案例中解析配置没有安装,所以我们必须手动更新/etc/resolv.conf文件。
因此通过运行命令
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
我们基本上将 Google 的免费 DNS 服务器 (8.8.8.8) 设置为名称服务器。
此命令将文本“nameserver 8.8.8.8”插入“/etc/resolv.conf”文件,并在屏幕上显示该文本。这样我们就有了一个可以正常工作的名称解析器,它可以将我们提供的主机名解析为 IP 地址。
这里需要注意的一件非常重要的事情是,我们使用的是谷歌的 DNS,这并不理想,你应该在这里使用你的 ISP 的 DNS。要求你的 ISP 给你他们的 DNS 地址(可以有多个),并将该地址添加为名称服务器。虽然你可以保留谷歌的 DNS 作为备份,以防你的 ISP 的 DNS 因某种原因失败。让我们假设你的 ISP 的 DNS 是xx年xx月xx日,因此需要运行以下命令将其设为主DNS,并将Google的DNS作为备份。
echo "nameserver vv.xx.yy.zz" | sudo tee /etc/resolv.conf && echo -e "nameserver 8.8.8.8" "\nnameserver 8.8.4.4" | sudo tee -a /etc/resolv.conf
查看-A接入球座命令,用于追加而不是覆盖。这里的 8.8.4.4 也是 Google 的 DNS。
您可以根据需要添加任意数量的域名服务器/etc/resolv.conf但那有点过了。只要保持简单而紧凑就行。