Subject: [Doh] IETF hackathon client implementation report

From: Miek Gieben <[email-masked]>
Date: Sun, 18 Mar 2018 10:31:41 +0000

FYI:

Goal: Implement DoH in miekg/dns (Go DNS library)
Try to mimic DNS-over-TLS, which was relatively painless to incorperate.

I attempted to make DNS over HTTPS a first class citizen, i.e. create a
DNS connection and have 1 configuration item set to "https" and then have DoH
"just work".

This approach worked for DNS-over-TLS (but side steps some advanaced features).

This ran into a few snags which makes this approach infeasible meaning I
can't easily incorperate it without major rewrites of the library:

* http/2 (in Go) has it's own socket pipelining so I can't give it a socket
  and make it run with it. This breaks an assumption in this library.

* The Go http client setup has a function called client.Do which sends
  a reply and waits for a reponse, ala Exchange() in this library. But
  this library uses "WriteMsg" and "ReadMsg" as two calls; which can't be
  implemented as such for DoH.

I ended up with some (trivial) helper functions that parse from and
to the http/2 request world, but nothing more tangible. See
https://github.com/miekg/dns/pull/647 .

/Miek

--
Miek Gieben

---

From: Tony Finch <[email-masked]>
Date: Sun, 18 Mar 2018 15:31:44 +0000

I have published my OpenResty-based DNS-over-TLS and DNS-over-HTTPS proxy
at https://dotat.at/cgi/git/doh101.git and https://github.com/fanf2/doh101

The name refers both to the IETF 101 hackathon and to the fact that it is
very basic. It comes with a trivial perl test client.

Tony.
-- 
f.anthony.n.finch  <[email-masked]>  http://dotat.at/  -  I xn--zr8h punycode
Fisher: East 5 or 6, backing northwest 5 to 7. Slight or moderate,
occasionally rough. Fair. Good.