doggo
doggo copied to clipboard
DNS over QUIC slow
DNS queries over QUIC are always slow and appear to be hitting some sort of timeout. This behavior is the same on MacOS and Linux. Queries to @quic://dns.adguard.com
are always over 6 seconds. This is using main branch and Go 1.21.0
and the following patch which appears to be required for the HTTPS queries:
diff --git a/pkg/resolvers/doq.go b/pkg/resolvers/doq.go
index 33bc47f..0242c99 100644
--- a/pkg/resolvers/doq.go
+++ b/pkg/resolvers/doq.go
@@ -26,7 +26,8 @@ type DOQResolver struct {
func NewDOQResolver(server string, resolverOpts Options) (Resolver, error) {
return &DOQResolver{
tls: &tls.Config{
- NextProtos: []string{"doq"},
+ InsecureSkipVerify: true,
+ NextProtos: []string{"doq"},
},
server: server,
resolverOptions: resolverOpts,
time doggo @https://cloudflare-dns.com/dns-query A AAAA HTTPS cloudflare.com;
time doggo @quic://dns.adguard.com A AAAA HTTPS cloudflare.com
NAME TYPE CLASS TTL ADDRESS NAMESERVER
cloudflare.com. A IN 32s 104.16.132.229 https://cloudflare-dns.com/dns-query
cloudflare.com. A IN 32s 104.16.133.229 https://cloudflare-dns.com/dns-query
cloudflare.com. AAAA IN 136s 2606:4700::6810:84e5 https://cloudflare-dns.com/dns-query
cloudflare.com. AAAA IN 136s 2606:4700::6810:85e5 https://cloudflare-dns.com/dns-query
cloudflare.com. HTTPS IN 56s 1 . alpn="h3,h2" https://cloudflare-dns.com/dns-query
ipv4hint="104.16.132.229,104.16.133.229"
ipv6hint="2606:4700::6810:84e5,2606:4700::6810:85e5"
________________________________________________________
Executed in 129.20 millis fish external
usr time 4.88 millis 38.00 micros 4.84 millis
sys time 4.80 millis 721.00 micros 4.08 millis
NAME TYPE CLASS TTL ADDRESS NAMESERVER
cloudflare.com. A IN 212s 104.16.133.229 dns.adguard.com:853
cloudflare.com. A IN 212s 104.16.132.229 dns.adguard.com:853
cloudflare.com. AAAA IN 212s 2606:4700::6810:84e5 dns.adguard.com:853
cloudflare.com. AAAA IN 212s 2606:4700::6810:85e5 dns.adguard.com:853
cloudflare.com. HTTPS IN 300s 1 . alpn="h3,h2" dns.adguard.com:853
ipv4hint="104.16.132.229,104.16.133.229"
ipv6hint="2606:4700::6810:84e5,2606:4700::6810:85e5"
________________________________________________________
Executed in 6.41 secs fish external
usr time 5.65 millis 50.00 micros 5.60 millis
sys time 5.51 millis 473.00 micros 5.04 millis
This can be specified with --skip-hostname-verification
.
I've made some improvements in the resolver lookup. Seems fine on my end, so closing it:
$ time doggo @https://cloudflare-dns.com/dns-query A AAAA HTTPS cloudflare.com
NAME TYPE CLASS TTL ADDRESS NAMESERVER
cloudflare.com. A IN 220s 104.16.132.229 https://cloudflare-dns.com/dns-query
cloudflare.com. A IN 220s 104.16.133.229 https://cloudflare-dns.com/dns-query
cloudflare.com. AAAA IN 211s 2606:4700::6810:84e5 https://cloudflare-dns.com/dns-query
cloudflare.com. AAAA IN 211s 2606:4700::6810:85e5 https://cloudflare-dns.com/dns-query
cloudflare.com. HTTPS IN 300s 1 . alpn="h3,h2" https://cloudflare-dns.com/dns-query
ipv4hint="104.16.132.229,104.16.133.229"
ipv6hint="2606:4700::6810:84e5,2606:4700::6810:85e5"
doggo @https://cloudflare-dns.com/dns-query A AAAA HTTPS cloudflare.com 0.02s user 0.01s system 12% cpu 0.234 total