Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feature request] 关于 forward 和 hosts 插件的功能建议! #49

Closed
jzp820927 opened this issue Mar 8, 2024 · 4 comments
Closed

Comments

@jzp820927
Copy link

大神,你在 IrineSistiana#794 回复的我的 issues 我看到了。
你让我参考你的[备注],因为我不太懂代码,所以我猜我应该是看懂了,意思是不是 dnsproxy 0.58.0 以后的版本不支持上游配置多个IP,之前的版本可以?但是 0.58.0 之前的版本对应 mosdns 是哪个版本?具体应该怎么配置?

另外,目前,我用的是 cf 的 doh,你也知道 cf 的 IP 多的用不完,而且 IP 通用,就是不稳定,同一个 IP 用一会儿容易失效,停用一段时间又会恢复,所以我就想给 cf 的 doh 指定多个不同的 ip,每次随机挑选不同的 ip 进行连接,这样可以避免长时间连接同一个 cf ip, ip 失效,导致 dns 查询失败。如果可以配置多个 cf IP,每次连接不同的 cf ip,这样就基本上可以保持长期稳定使用了,目前我的做法就是在 upstreams 下面配置很多个 一模一样的 cf doh 的 addr,每个 cf doh 的 addr 通过 dial_addr 指定不同的 ip 来用,配置就显得非常冗余,很不优雅,如果能配置多个 IP 随机连接,那么就只需要配置一个 cf doh 就可以了。不知道大神 fork 的项目,能不能实现这个目的?如果可以实现,能否给个参考配置?

@sieveLau
Copy link
Owner

sieveLau commented Mar 8, 2024

意思是不是 dnsproxy 0.58.0 以后的版本不支持上游配置多个IP,之前的版本可以?但是 0.58.0 之前的版本对应 mosdns 是哪个版本?具体应该怎么配置?

是的,因为forward插件实际上是交给AdguardTeam的dnsproxy模块来负责后续处理的,所以dnsproxy的0.58.0改动会把v4版本的forward的可以设置多个ip(参见手册forward)功能给破坏掉,我技术有限所以就锁了版本,现在这个fork的release都是维持了多IP功能的。

但是,我不太确定v4版本的forward的多IP是不是能够满足你的需求,或者说我可以确定不满足你说的“随机选择一个IP”的要求,因为IrineSistana(原作者)实现的就是按顺序尝试而不是“随机”——可以说v4版本就没有“随机选一个”的forward,v4的forward都是同时请求所有upstream或者按顺序尝试,即使组合用sequence的fallback或parallel都是没办法实现“随机”的。

如果你用的是V5版本的话……因为v5版本我用不习惯所以我一直在用v4,然后这个fork主要目的就是更新v4版本的依赖,以及加一点点功能(比如foward支持添加自定义的根证书)。所以如果你习惯的是v5版本那这个fork对你来说是没有用的。

我其实完全不懂golang,因为我比较熟悉的是C++……

@jzp820927
Copy link
Author

V4,V5 我都用过,目前用的 V5,讲真,在实现相同功能的情况下,V5 的配置文件比 V4 要简洁很多,之前我V4 配置文件有接近 100 行内容,现在 V5 只有10多行,要简洁很多。
如果是按顺序一个一个用IP,那基本上也可以实现我这个需求,如果是并行同时请求多个IP,那就会导致多个IP同时被阻断,和用单个IP效果是一样的。
我这边网络在 DOH 只有单一IP的情况下,DOH 基本上是不可用的,我觉得 DOH 协议应该是被精准识别了,不管用什么 DOH 服务器,只要用一段时间,IP就会被阻断,DOT直接不可用,DOQ 也是间接性阻断,只有在用 CF 的多IP 随机负载均衡的情况下,才能长期稳定使用,这个就是我现在用的方案,经过实践证明了的。

@sieveLau
Copy link
Owner

sieveLau commented Mar 8, 2024

我主要是用来放在server端,所以fallback、分流等还是v4比较适合。如果是用在客户端的话,v5倒是可以简单快捷。

@jzp820927
Copy link
Author

哦,原来你是搭 dns server 的,搭 DNS server 就简单很多了。我主要是用在客户端的,用来获取正确的域名解析结果,和实现我的一些高级功能。目前能实现我的 DNS 需求的,我也就找到 mosdns 这一个软件,因为我要对部分特定域名的解析结果进行劫持,然后修改域名解析结果,最后返回我指定的 IP 作为这部分特定域名解析结果。目前还没找到有其他什么 DNS 软件能实现这个功能的。

@sieveLau sieveLau closed this as not planned Won't fix, can't repro, duplicate, stale Apr 30, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants