为什么我必须删除 resolvconf 才能让 dnsmasq 再次工作?

lig*_*txx 8 resolv.conf dnsmasq

昨天我升级到 Precise 并且 dnsmasq 停止工作。也就是说,对 dnsmasq 正在侦听的 localhost (127.0.0.1) 的 DNS 查询被拒绝。

删除 resolvconf ( apt-get remove resolvconf) 并重新启动解决了该问题(在 Google 某处找到了该建议)。/etc/resolv.conf有和没有 resolvconf 看起来都很好。完全没有区别。

  1. 为什么要使用resolvconf?有什么好处吗?涵盖resolvconf的维基百科文章很糟糕。
  2. 为什么resolvconf会干扰dnsmasq?这是一个已知的问题?

jdt*_*ood 10

对 (1) 的简单回答是:resolvconf 将自身设置为提供此信息的程序(例如 ifup 和 ifdown、DHCP 客户端、PPP 守护程序和本地名称服务器)和使用此信息的程序(例如 DNS缓存和解析器库)。从 Ubuntu 12.04 开始,resolvconf 是服务器和桌面变体中默认安装的一部分。从来没有必要删除resolvconf 并且删除它的人通常不理解它,通常是因为他们没有阅读resolvconf(8) 和/usr/share/doc/resolvconf/README.gz。

第二个问题的答案是 resolvconf 很可能不会干扰 dnsmasq。我的猜测是您遇到了错误 #959037。

说明:在 Ubuntu 12.04 中有两种运行 dnsmasq 的方式。有传统的 dnsmasq 独立版本,它可以监听所有地址。还有一个新的 NetworkManager 控制的 dnsmasq 进程,它只监听 127.0.0.1。除非重新配置前者,否则后者与前者冲突。这个问题在 Ubuntu 12.10 中得到解决,方法是让 NM 控制的 dnsmasq 进程监听 127.0.1.1 而不是 127.0.0.1,并强制独立的 dnsmasq 进程只监听分配给接口的地址。