Open PeterDaveHello opened 1 year ago
Oh I mean http3 😅
Maybe we can use https://github.com/lucas-clemente/quic-go ?
Looks promising as it may also resolve the DoQ request. Searched for an integration in miekg/dns and found a repo utilizing both libraries. It seems a bit early stage though.
I have a local branch where I started work on this using the lib linked above, which has been renamed/moved to https://github.com/quic-go/quic-go.
Status is config is updated and blocky server creates the listeners + QUIC server, but I couldn't get actual requests to work.
When I tried working this (late July), the DoQ client state wasn't great so that was an extra hurdle. I was testing using Knot's kdig
but was hitting issues with it so I ended up needing to debug some C code and got tired of that and shelve it :smile:
I'm sure situation has improved though so might give it another shot at some point.
Another good source for inspiration is AdGuardHome: https://github.com/AdguardTeam/AdGuardHome/blob/v0.108.0-b.49/internal/home/web.go#L290
Is DoH3 and DoQ still on the todo list or maybe even actively worked on? I would really love to see support of these 2 protocols in Blocky. With support of these 2, I (maybe others as well) would be able to use only 1 DNS server software and not chain multiple together.
Right now I do Client --> Blocky --> RouteDNS or AdguardHome --> upstream resolver
.
The reason for this is, both RouteDNS and AdguardHome support DoH3 and DoQ. In my case they don't do any DNS manipulation, purely forwarding to a bunch of upstream resolvers via DoH, DoT, DoH3 and DoQ.
RouteDNS is also written in Go and leverages the quic-go package.
Another tool that uses quic-go is the dns client q.
RouteDNS or q work very stable for me, so I think quic-go is really mature.
In theory I could remove Blocky from the chain, and let RouteDNS do the DNS blocking, but RouteDNS does not have metrics available in the way I need to consume them. https://github.com/folbricht/routedns/issues/375 The ideal solution is to have Blocky for everything. 😄
Definitely still on the todo llst, but not being worked on actively ATM.
Current implementation doesn't offer HTTP3 on DoH server