The IETF 101 hackathon has come and gone. I wanted to write up the results of this. See my original plan for the hackathon.

  1. Implement DOH (DNS over HTTPs). Go DNS already implements DNS over TLS, so this shouldn’t be too hard

This turned out to be “too hard” (who would have guessed?). Basically DNS over HTTPS (DoH) doesn’t map to proper DNS at all. See my write up to the DoH mailing list.

  1. Time permitting implement gRPC in Go DNS in a “plug in my own transport” fashion.

gRPC is basically the same thing as DoH - i.e. something layered over HTTP/2 - as such this won’t fit miekg/dns either. So I’m giving up on this idea as well…

  1. As these things all use TCP, it might also be worth looking a connection pooling.

So “all these things” do all this by themselves or don’t expose the connection they use. This means I can’t pool the connections outside of the package. And most of these packages are pretty smart anyway, net/http and grpc both do this (if I’m not mistaken).

Considering that gRPC looks very much like DoH, and CoreDNS already supports gRPC I figured it should be easy to add DoH support to the server side of CoreDNS.

This resulted in this pull request for CoreDNS

  • I probably will not merge this before the DoH I-D is an actual RFC. The PR also needs a few tweaks to make it more robust.

All in all a very productive weekend, with only a minor downside that I’m now subscribed to the IETF DoH mailing list :)