我有一台 ubuntu 12.04 服务器。在其上运行 sudo apt-get update 会产生如下错误:
W: Failed to fetch http://au.archive.ubuntu.com/ubuntu/dists/precise-backports/main/binary-i386/Packages Something wicked happened resolving 'au.archive.ubuntu.com:http' (-5 - No address associated with hostname)
我可以 ping 网络上的所有其他主机以及 Google 的 DNS 8.8.8.8。但无法 ping www.google.com。
因此,我猜测我的 DNS 设置有问题,但不确定是什么。
我使用静态 IP,并且我的 /etc/network/interfaces 如下所示:
auto eth0
iface eth0 inet static
address 192.168.1.50
netmask 255.255.255.0
network 192.168.1.0
broadcast 192.168.0.255
gateway 192.168.1.1
#dns-nameserver 203.12.160.35 203.12.160.36
#nameserver 203.12.160.35 203.12.160.36
我的 /etc/resolv.conf 和 /etc/resolvconf/resolv.conf.d/base 都是空的,并且我的 /etc/resolvconf/resolv.conf.d/original 显示:
nameserver 192.168.1.1
任何帮助将不胜感激。
PS:我在 Google 上搜索了一下,常见的解决方案是切换到 DHCP,但由于这是我的家庭服务器,所以我不想这样做。
谢谢 Srini
答案1
添加您自己的(或公共的)名称服务器地址/etc/resolvconf/resolv.conf.d/base
并运行resolvconf -u
以更新配置。
这两个地址203.12.160.35
和203.12.160.36
您的网络配置中的名称服务器是否是您应该使用的名称服务器?如果是的话,请将它们添加到文件中base
。
答案2
编辑 /etc/resolv.conf ;添加:
nameserver 208.67.222.222
(这将使用 opendns)
重启网络:/etc/init.d/networking restart
答案3
Ubuntu 12.04 中的 DNS 操作发生了很大变化,在我看来稍微不完整,但它是一个改进,它只缺少本地 DNS 缓存,可以手动安装。
看http://www.stgraber.org/2012/02/24/dns-in-ubuntu-12-04/
如何正确地将静态条目添加到 resolv.conf 是打开您的终端。
sudo nano /etc/resolvconf/resolv.conf.d/base
添加两个公共的和您的本地的(如果有)
nameserver [your_local]
nameserver 208.67.222.222
nameserver 208.67.220.220
备份现有的 resolv.conf
cp /etc/resolv.conf ~/resolv.conf_backup
现在确保 /etc/resolv.conf 是 /run/resolvconf/resolv.conf 的符号链接
sudo ln -s /run/resolvconf/resolv.conf /etc/resolv.conf
重新配置 resolvconf 包
sudo dpkg-reconfigure resolvconf
当询问“准备 /etc/resolv.conf 进行动态更新吗?”时,选择“是”并按照说明进行操作。
故障排除
您可能会遇到默认超时会影响性能的情况(名称解析延迟 5 秒可能会非常昂贵,尤其是对于数据库/http 服务而言)
有 3 种方法可以解决此问题:
将名称条目添加到您的主机文件中,这更像是一种解决方法,而不是修复
编辑 /etc/hosts 并为主机添加静态条目。请注意,这可能会延长以后的调试时间
修改 resolvconf 包中的默认超时时间
sudo echo "options timeout:2" >> /etc/resolvconf/resolv.conf.d/tail
添加 DNS 缓存
还有一些选项我就不打算介绍了。