我不确定我是否恰当地表达了这一点,但我想要完成的是通过以循环格式向 DNS 服务器列表发出 DNS 查询,而不是继续,对机器在线足迹进行如此轻微的匿名化一遍又一遍地使用相同的服务,因为它的响应速度最快。
我已经dnsmasq
在我的 CentOS 系统上进行了设置,并且查询正在按预期通过它进行路由。 /etc/dnsmasq.conf
如下...
domain-needed
bogus-priv
no-resolv
log-queries
user=dns
group=dns
listen-address=127.0.0.1
server=1.1.1.1
server=1.0.0.1
server=208.67.222.222
server=208.67.220.220
server=8.8.8.8
server=8.8.4.4
所以目前,我可以在我的日志中看到,根据 DNS 查询请求,dnsmasq 正在一次向所有 6个服务发出查询......
dnsmasq[5801]: query[A] example.com from 127.0.0.1
dnsmasq[5801]: forwarded example.com to 8.8.4.4
dnsmasq[5801]: forwarded example.com to 8.8.8.8
dnsmasq[5801]: forwarded example.com to 208.67.220.220
dnsmasq[5801]: forwarded example.com to 208.67.222.222
dnsmasq[5801]: forwarded example.com to 1.0.0.1
dnsmasq[5801]: forwarded example.com to 1.1.1.1
...并返回第一个响应。
我想要的是它只向第一台服务器发出查询,并返回/缓存响应,除非出现错误。如果有错误,它应该移动到列表中的下一个服务器,直到它得到正确的响应。然后对新请求的下一个查询应该转到列表中的下一个服务器......就像循环一样。
那可能吗?
这对于 dnsmasq 或 bind 是不可能的。可能有其他 DNS 服务执行一些负载平衡。
如果我必须这样做,我会查看负载均衡器或“流量管理器”服务来接收 DNS 请求,然后将其轮询到多个 dnsmasq 解析器(在 docker 容器中或在不同端口上运行)。这样我就可以将每个 dnsmasq 服务配置为使用其中一个转发器。
但是实际的负载平衡必须由不同的服务来完成。