当我使用外部 DNS 时,为什么 dig 将 dns 服务器报告为 127.0.0.1?

fpg*_*ost 12 dns dnsmasq

我使用 unbound 并且通常使用 openDNS 作为我的 DNS 服务器。

当我运行时dig google.com说我得到SERVER: 127.0.0.1#53(127.0.0.1)。这个东西到底在监听 #53 端口是什么?这是未绑定的还是与dnsmasq有关(我什至安装了dnsmasq,因为dnsmasq.conf似乎没有安装/etc?)

在 resolv.conf 中,nameserver 127.0.0.1但是在网络管理器中,我将 DNS 服务器指向了两个 openDNS 地址。那么这里发生了什么?本地名称服务器是否指向 dnsmasq,然后使用来自网络管理器的值?还是实际上在听的未绑定?

Gil*_*il' 15

默认情况下,NetworkManager 使用 Dnsmasq 作为 DNS 解析器(如果已安装)。这是基于 Debian 的系统上的默认设置,因此 Dnsmasq 在默认配置中运行,它仅根据命令行选项指定的上游服务器(加上 的内容/etc/hosts)解析名称。您没有,/etc/dnsmasq.conf因为该文件仅存在于可选包dnsmasq 中

要查看您的系统当前是使用 Dnsmasq 还是 Unbound 进行 DNS 查询,请运行netstat -ulnp | grep ":53 "

在 Ubuntu 12.04 中,NetworkManager 不能很好地与其他 DNS 解析器配合使用(请参阅错误 959037Thomas Hood 的总结几乎涵盖了所有内容)。要继续将 Unbound 与 NetworkManager 一起运行,最好的办法是告诉 NetworkManager 不要运行 Dnsmasq(除了 Unbound,您不需要它,除非您正在使用 NetworkManager 不使用的 Dnsmasq 功能)。要做到这一点:

  1. 编辑/etc/NetworkManager/NetworkManager.conf以注释掉包含的行dns=dnsmasq#在该行的开头添加一个)。
  2. service network-manager restart.