dns - 等待肯定响应的 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 请求的响应转发。
解决方案
您可以使用 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 个规则
推荐阅读
- c - 如何在 C 中现有字节数组的末尾附加另一个 HEX 值
- nearprotocol - 托管和多重签名合约
- azure - 如何通过 ARM 创建应用洞察仪表板
- javascript - 执行没有响应的python函数 - Django
- python - 如何找到信号周期(自相关与快速傅立叶变换与功率谱密度)?
- c# - 您的目标项目“x”与您的迁移程序集“xx”不匹配。更改您的目标项目或更改您的迁移程序集
- rest - 几次 POST 请求后 GetResponseAsync 超时
- android - 单击时无法在 Android 应用程序中显示 pdf
- android - 如果 LiveData 没有属性支持,那么在 ViewModels 中使用 livedata-ktx 是否会导致内存泄漏?
- reactjs - 图片的平面列表未定义?