1 minute read

问题

项目中, 客户提供了一台神奇的服务器, 发现对方使用了动态解析服务, 用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

Updated: