shawn1m / overture

A customized DNS relay server

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

DoQ (DNS-over-QUIC) support

zdm9981 opened this issue · comments

DoQ (DNS-over-QUIC) RFC 已经定稿,希望得到支持。

commented

看了一下 overture 的 DNS 请求是由 https://github.com/miekg/dns 构建消息然后发出的,所以 overture 要加 DoQ 的话应该需要 miekg/dns 支持

根据 miekg 的说法,现在的实现不太容易实现

quic-go uses Streams which are not net.Conn`s, and we don't want to pull all of that in this library. Quic/http3 is slowly happening in Go's std lib, until that is done I don't see what can be done in this library.

If you want to play with it yourself, various things can be wrapped in dns.Conn and the server could check if the conn support quic or some such

Originally posted by @miekg in miekg/dns#1370 (comment)

After looking over the code I can't really see a simple way to make protocols pluggable, they are too tied into a lot of things such as the Reader interface which has ReadTCP(), ReadUDP() etc and none of that is applicable to DoQ.

The design is also around having one listener listening for one connection that delivers DNS messages where QUIC is conn listener -> stream listener -> streams. Sure, that could be solved with channels etc but then it's workarounds which makes the code clunky and slow.

I think a better approach is to make my own module that mimics dns.Server as much as possible.

Thanks for the reviews and discussion!

Originally posted by @jelu in miekg/dns#1377 (comment)

Surge 作者发现疑似 Adguard 的实现有问题 AdguardTeam/dnsproxy#260

AdGuard Home 的问题是因为其依赖的上游项目 quic-go 禁用了 Connection Migration,而且 quic-go 在短期内似乎没有计划重新实施连接迁移。

commented

Go 的 QUIC 实现好像只有 quic-go 是吗,官方的进度也比较慢,如果是这样感觉 QUIC 在 Go 生态的推进似乎不太理想