如何配置 dnsmasq 转发多个 DNS 服务器?

如何配置 dnsmasq 转发多个 DNS 服务器?

我现在通过 VPN 使用公共 DNS,以避免中国的一些 DNS 污染。但这也带来了一个代价,那就是我无法利用 CDN。

有没有办法配置 dnsmasq 并让它查询两个 DNS 服务器(公共服务器和 ISP 服务器),并返回具有较低指标的 IP?

我知道可以使用server=/domain/server指令为某个域分配 DNS 服务器,但问题是有数百个。所以我必须想出一个通用的方法。

提前致谢。

答案1

DNSmasq 无法为您完成此操作。但是,具有管道后端的 Powerdns 可以,因为您可以编写自己的代码来进行解析。我会使用 python pydns 作为后端,因为它可以轻松查询任意名称服务器。

答案2

有没有办法配置 dnsmasq 并让它查询两个 DNS 服务器(公共服务器和 ISP 服务器),并返回具有较低指标的 IP?

dnsmasq 提供选项 --all-servers

--所有服务器

默认情况下,当 dnsmasq 有多个上游服务器可用时,它将只向一个服务器发送查询。设置此标志将强制 dnsmasq 将所有查询发送到所有可用的服务器。最先回答的服务器的回复将返回给原始请求者。

这个选项确实回答了你的问题

答案3

我不认为 dnsmasq 会给你这个功能。不过,bind 可以解决这个问题。我知道他们说设置 bind 有点过头了,但对于你正在尝试做的事情来说,这还不算太糟糕。

options {
    forwarders {
            x.x.x.x;        //ISP dns ip address
            y.y.y.y;        //Public dns ip address
    }
}

关键是转发器是按照从上到下的顺序进行查询的。因此,将首先查询 ISP(这很可能也会给出较低的度量值),如果失败,则将查询公共转发器。

相关内容