【问题标题】:dnsmasq parallel queries waiting for positive response等待肯定响应的 dnsmasq 并行查询
【发布时间】:2021-07-08 01:50:17
【问题描述】:

我的 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 响应。

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

有没有办法让dnsmasq 表现得像fanout plugin for CoreDNS

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

【问题讨论】:

  • 你的问题在这里与编程无关,但我不认为 dnsmasq 可以做你想做的事。看看dnsdist,它在名称服务器选择方面更加通用。它更适合权威名称服务器,但也许它可以在您的设置中工作。但是,您也可以退后一步,重新考虑整个策略,因为多个服务器对同一个查询的响应完全不同可能是一个更大的问题,因为它看起来像某种拆分视图,必须小心处理,以避免侧面效果。如果 DNSSEC 参与其中,那会很头疼

标签: dns dnsmasq coredns


【解决方案1】:

您可以使用 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 个规则

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-01
    • 1970-01-01
    • 2019-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多