Ubuntu 14.04 DNS 异常解决方法
问题
项目中, 客户提供了一台神奇的服务器, 发现对方使用了动态解析服务, 用nslookup
查看, IP地址每天变. 我忍了, ssh
上去安装软件, apt-get update
无法连接到远程服务, 所有的包无法更新, ping
IP是通的, nslookup
任意域名, 没有结果. 断定, DNS
服务出了问题.
打电话给对方的负责人, 对方的负责人是名博士, 他说开了DNS
他ssh的时候非常卡, 所以他就给关了! 而且他说他网上查的, 让我自己上网查查, 解决下, 简直了. 没办法, 只好自己动手.
尝试
起初, 找到几篇文章, 给出的解决方案是修改/etc/resolv.conf
, 在其中添加nameserver 8.8.8.8
, 但是我发现ubuntu
中该文件中
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
明确表示, 不要手工修改.
又看了篇文章, 解决了我的问题, 修改/etc/resolvconf/resolv.conf.d/base
文件(一般来说这个文件是空的), 在其中加入nameserver 8.8.8.8
.
接着resolvconf -u
搞定. 查看/etc/resolv.conf
文件, 最后一行自动追加了nameserver 8.8.8.8
.
解决
nslookup
结果正常了, 搞定, 接着apt-get update
, 等等, 还是无法连接, ping
任意域名失败. 没有办法, 再次查看文章, 修改/etc/nsswitch.conf
, 将其中的hosts: files wins mdns4_minimal [NOTFOUND=return]
修改为hosts: files dns
.
修改完成后, apt-get
终于正常了.
参考
How To Make Changes In resolv.conf Permanent in Ubuntu[QuickTip] ping can’t resolve hostname, but nslookup can