昨天我升级到了 Precise,dnsmasq 停止工作了。也就是说,对 dnsmasq 正在监听的本地主机 (127.0.0.1) 的 DNS 查询被拒绝。
删除 resolvconf ( apt-get remove resolvconf
) 并重新启动解决了该问题(在 Google 上找到了该建议)。/etc/resolv.conf
无论有没有 resolvconf 看起来都很好。没有任何区别。
- 我为什么要使用 resolvconf?有什么好处吗?维基百科文章涵盖了解析配置糟透了。
- 为什么 resolvconf 会干扰 dnsmasq?这是一个已知问题吗?
答案1
对 (1) 的简单回答是:resolvconf 将自身设置为提供此信息的程序(例如 ifup 和 ifdown、DHCP 客户端、PPP 守护程序和本地名称服务器)与使用此信息的程序(例如 DNS 缓存和解析器库)之间的中介。从 Ubuntu 12.04 开始,resolvconf 是服务器和桌面版本中默认安装的一部分。永远不需要删除 resolvconf,删除它的人通常不理解它,通常是因为他们没有阅读 resolvconf(8) 和 /usr/share/doc/resolvconf/README.gz。
第二个问题的答案是,resolvconf 很可能不会干扰 dnsmasq。我猜你遇到了 bug #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 进程只监听分配给接口的地址。
答案2
我刚刚在安装时将其删除。我手动使用 pppd 拨打我的 3G 调制解调器连接,当我想使用自定义 DNS 时,resolvconf 通过自动添加我的提供商 DNS 干扰了我的 DNS 设置。pppd 有控制这一点的选项,但 resolvconf 用自己的设置破坏了它们。我也想知道这个问题的答案?这似乎是某种让事情变得简单但反而使事情变得复杂的软件包?
附言:我发现了这个错误报告: https://bugs.launchpad.net/ubuntu/+source/resolvconf/+bug/922578
答案3
对 (1) 的简单回答是:resolvconf 将自身设置为提供此信息的程序(例如 ifup 和 ifdown、DHCP 客户端、PPP 守护进程和本地名称服务器)与使用此信息的程序(例如 DNS 缓存和解析器库)之间的中介。
这是软件包说明。在桌面上,它与 NetworkManager 配合使用,可以顺利处理建立和断开连接。
因此,resolvconf 和 dnsmasq 在 12.04 中被使用,以使桌面版的 DNS 信息处理更加可靠。因此在某些情况下,它确实使情况变得更好,但整个情况缺乏正确的文档,尤其是在服务器世界中。
尽管进行了大量 Google 搜索,我仍无法确定在服务器安装时推荐什么。
就 (2) 而言,您遇到的问题与我相反。Dnsmasq 在我的计算机上与 resolvconf 配合良好,并更新 /etc/resolv.conf 文件以包含 127.0.0.1,但存在其他问题,因为 dnsmasq 无法从 eth0(这是一个网关)上的 dhclient 获取 ISP 名称服务器,也无法获取我在 /etc/network/interfaces 中的 eth0 节中手动输入的名称服务器。
你为什么要使用 dnsmasq?你是不是也在运行一个有 2 个网卡的网关?还是只是一个普通的桌面?如果是这样,resolvconf 与 network-manager 协调