Thr*_*old 6 server networking hostname 12.04
我有一个安装了 Ubuntu 12.04 的小型 dedi 服务器。因为我安装了桌面,所以我通过 x2go 访问它。
一切正常,直到 2 天前,重新启动后,我失去了任何 Internet 访问权限并开始收到“无法解析主机名”错误。
如果我尝试 ping google,我会得到:
ping: unknown host google.com
Run Code Online (Sandbox Code Playgroud)
为了访问某些站点,我将它们添加到主机文件中,它适用于大多数站点,但不是全部。当然,这只是临时解决方案。
如果我查看“系统设置 - 网络”,我会得到以下信息:
我不是很能干,所以我不知道要发布什么其他信息,但请询问您希望我了解的任何信息。
谢谢你。
hee*_*ayl 11
问题纯粹与DNS有关。由于/etc/resolv.conf文件中没有 DNS 名称服务器条目,因此在通过主机名 ping 到/etc/hosts条目之外的主机时,名称解析失败。
在 Ubuntu 12.04 中,网络管理器包提供了与网络相关的功能(而不是旧的网络程序),resolvconf(和dnsmasq在某种程度上)程序提供了大量的 DNS 功能。但令人惊讶的是,在您的情况下,未安装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 的 DNS 由于某种原因出现故障。假设您的 ISP 的 DNS 是vv.xx.yy.zz,因此您需要运行以下命令将其设为主 DNS,并保留 Google 的 DNS 作为备份。
Run Code Online (Sandbox Code Playgroud)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开关,它用于追加而不是覆盖。这里 8.8.4.4 也是谷歌的 DNS。
您可以在/etc/resolv.conf 中添加任意数量的名称服务器,但这有点过头了。保持简单而紧凑。
归档时间: |
|
查看次数: |
38030 次 |
最近记录: |