AdguardTeam / AdguardTeam/AdGuardHome

Treat empty responses as invalid during parallel requests

未关闭
#6,508 3 条评论 0 个 reaction 已指派 0 人 在 GitHub 查看
feature request
主要语言
TypeScript
星标
36.9k
派生
2.5k
PR 合并指标
30 天内没有已合并 PR

描述

### Prerequisites

- [X] I have checked the [Wiki](https://github.com/AdguardTeam/AdGuardHome/wiki) and [Discussions](https://github.com/AdguardTeam/AdGuardHome/discussions) and found no answer

- [X] I have searched other issues and found no duplicates

- [X] I want to request a feature or enhancement and not ask a question

### The problem

Neither adguard home nor dnsmasq nor other dns proxies that i know support this. Sometimes dns servers return empty response (domain not exists) just because their resolver module gone disconnected from upstream. The issue is actual when you want some freedom and when you are using something like opennic resolvers or blockchain resolvers (or even some meshnet resolvers) which provide you extra domain TLDs.
Right now due to this issue i can only use opennic resolvers as upstreams because i want to use those extra tabooed TLDs. I cant use cloudflare/google alongside opennic resolvers because they will respond faster and i will get "domain does not exists" response.
But even if i use only opennic resolvers the issue is still there, sometimes they just crack and then once again i get "domain does not exists" response just because some server replied faster than another working server.
This DNS technology is too legacy and drives me nuts but i see adguard home as some solution that can potentially solve the issue as some extra feature since it already has more features comparing to dnsmasq.

### Proposed solution

Add extra feature to treat empty responses as invalid during parallel requests. Wait for response from each upstream with timeout and only then respond that domain does not exists or ip is empty or whatever. Only if some ip came as response then treat it as job done and stop further waiting for other upstreams. This will make it more stable when upstream is nuts and also will allow to use cloudflare/google alongside any other custom TLD resolver and prevent cache poisoning/empty replies due to cloudflare/google faster responses.

### Alternatives considered and additional information

Alternative could be adding a feature for setting resolvers per TLD but its pain in the ass. There are too many of them, sometimes new ones are introduced, its really not possible to track all custom TLDs and write em down like that. Much easier if machine would be able to just execute this simple algorithm and wait for more replies from other upstreams in case of empty response.

贡献指南

打开贡献指南

评估

这个 Issue 还没有评估数据。

把新 issue 发到你的邮箱

精选适合新手参与的 GitHub issue 摘要。