当Dnsmasq不应该被用作服务器的DNS服务器时

我有在/ etc / network / interfaces中硬编码的DNS名称服务器

dns-nameservers 8.8.8.8 

(我只需要在testing过程中使用另一个DNS Live进行Google DNS)。

然后我把dnsmasq运行在一个DNScaching上,同时也重写了一些DNS条目,指向Apache作为代理。

现在由于某种原因,我一直无法弄清楚,当dnsmasq运行时,无论DNS服务器是否设置,DNS服务器都使用dnsmasq。 如果我将dnsmasq设置为在所有接口和127.0.0.1上进行侦听,则所有查找只需要经过dnsmasq,包括应该被代理的那个,所以它只是被循环代替而不是代理。 如果我用127.0.0.1不使用lo和注释掉,我根本就没有得到DNS。

 except-interface=lo #listen-address=127.0.0.1 

没有iptables规则或任何redirect所有DNSstream量的东西,只允许访问我们的IP范围。

必须有我失踪的东西,但我无法弄清楚。

在禁用dnsmasq的情况下,digs会通过设置的DNS,启用它将通过127.0.0.1

有任何想法吗?

Ubuntu和Debian中的dnsmasq启动脚本明确地将名称服务器添加到启动或结束服务的/etc/resolv.conf中。

为了防止这个,你需要编辑/ etc / default / dnsmasq(而不是/etc/dnsmasq.conf)并添加行

  DNSMASQ_EXCEPT=lo 

这将阻止dnsmasq自动将自己设置为resolv.conf中的名称服务器,尽pipe它仍然会将更改设置为resolv.conf

 nameserver (your nameserver) nameserver 127.0.0.1