首页 > 解决方案 > 等待肯定响应的 dnsmasq 并行查询

问题描述

我的 dnsmasq.conf 目前有一些上游服务器

all-servers
dns-loop-detect
no-resolv

server=10.0.0.100
server=10.0.0.101    
server=192.168.53.1
server=192.168.53.2

并且取决于哪个服务器首先响应,有时客户端会得到NXDOMAIN响应。

但我想在发送否定响应之前尝试另一台服务器。

有没有办法让CoreDNSdnsmasq的 fanout 插件表现得像?

每个到达 CoreDNS 扇出插件的传入 DNS 查询都将并行复制到每个列出的 IP(即 DNS 服务器)。
来自任何查询的 DNS 服务器的第一个非否定响应将作为对应用程序 DNS 请求的响应转发。

标签: dnsdnsmasqcoredns

解决方案


您可以使用 iptables 过滤来自上游 DNS 服务器的 NXDOMAIN 回复。

这样 dnsmasq 将超时而不是获取 NXDOMAIN

当与所有服务器 dnsmasq 配置选项配对时,这应该实现您想要的。示例规则:

#iptables -A INPUT -s 10.0.0.100/32 -p tcp -m tcp --sport 53 -m u32 --u32 "0x36&0xf=0x3" -j DROP
#iptables -A INPUT -s 10.0.0.100/32 -p udp -m udp --sport 53 -m u32 --u32 "0x1c&0xf=0x3" -j DROP

您应该为每个上游 DNS 服务器设置这 2 个规则


推荐阅读