Ubuntu 12.04 – 无法解析主机名

我有一个小的dedi服务器,我已经安装了Ubuntu 12.04。 我通过x2go访问它,因为我安装了桌面。

所有工作都很好,直到2天前,重新启动后,我失去了任何Internet访问权限,并开始收到“无法解决主机名”错误。

如果我尝试ping谷歌我得到:

ping: unknown host google.com 

要访问某些网站,我将它们添加到hosts文件中,它适用于大多数网站但不是全部。 当然这只是一个临时解决方案。

如果我查看“系统设置 – 网络”,我会得到:

我不是很称职,所以我不知道发布什么其他信息,但请问你希望我找到的任何信息。

谢谢。

问题纯粹与DNS有关。 由于/etc/resolv.conf文件中没有DNS名称服务器条目,因此在将主机名ping到/ etc / hosts条目之外的主机时,名称解析失败。

在Ubuntu 12.04中, Network Manager软件包提供与网络相关的function(而不是旧的网络程序),以及提供大规模DNSfunction的resolvconf (以及某种程度上的dnsmasq )程序。 但令人惊讶的是,在您的情况下,未安装resolvconf,因此我们必须手动更新/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地址(可以是多个)并将地址添加为名称服务器。 虽然您可以保留Google的DNS作为备份,以防您的ISP因某种原因而失败。 假设您的ISP的DNS是vv.xx.yy.zz ,因此您需要运行以下命令将其作为主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 

请参阅tee命令中的-a switch,该命令用于追加而不是覆盖。 这里8.8.4.4也是谷歌的DNS。

您可以在/etc/resolv.conf中添加任意数量的名称服务器,但这样会有点过分。 只需保持简单而紧凑。