我已经将盒子的 DNS 名称服务器硬编码在 /etc/network/interfaces 中
dns-nameservers 8.8.8.8
(我只需要在测试期间使用另一个实时 DNS 来谷歌搜索 DNS。)
然后我让 dnsmasq 在盒子上运行作为 DNS 缓存,同时也重写一些 DNS 条目以指向 Apache 作为代理。
现在,由于某种原因,我无法弄清楚无论 DNS 名称服务器的设置如何,只要 dnsmasq 正在运行,该框就会使用 dnsmasq 作为其 DNS 服务器。如果我将 dnsmasq 设置为侦听所有接口和 127.0.0.1,则所有查找都只会通过 dnsmasq,包括那些应该被代理的查找,因此它只是陷入循环而不是被代理。如果我使用不使用 lo 并注释掉侦听 127.0.0.1,我根本得不到 DNS。
except-interface=lo
#listen-address=127.0.0.1
没有 iptables 规则或任何重定向所有 DNS 流量的东西,只允许访问我们的 IP 范围。
肯定是我遗漏了什么东西,但我就是想不出来。
禁用 dnsmasq 后,digs 将通过设置的 DNS 进行挖掘,启用后,dnsmasq 将通过 127.0.0.1
有任何想法吗?
答案1
Ubuntu 和 Debian 中的 dnsmasq 启动脚本在启动或结束服务时明确将名称服务器添加到 /etc/resolv.conf。
为了防止这种情况,您需要编辑 /etc/default/dnsmasq(而不是 /etc/dnsmasq.conf)并添加行
DNSMASQ_EXCEPT=lo
这将阻止 dnsmasq 自动将自己设置为 resolv.conf 中的名称服务器,但它仍会将 resolv.conf 设置为
nameserver (your nameserver)
nameserver 127.0.0.1