RFC 7858: DNS over TLS (2016)
tools.ietf.org
tools.ietf.org
However, there's a March 2018 RFC 8310: Usage Profiles for DNS over TLS and DNS over DTLS [1] that describes some privacy implications, deployment scenarios, and DNS authentication mechanisms to be used with the new transports.
To maintain the performance of DNS, you'd want a connectionless protocol. Although I'm not sure whether perfect forward security would be possible without adding a round-trip.
Unbound 1.6.0 TCP 8s
Unbound 1.6.0 UDP 0.4s
BIND 9.11 TCP 0.5s
BIND 9.11 UDP 0.5s
BIND 9.10 TCP 3s
BIND 9.10 UDP 0.5s
1.1.1.1 TCP 0.5s
1.1.1.1 UDP 0.4s
8.8.8.8 TCP 5s # drops connection after 60 queries
8.8.8.8 UDP 220s # it hates me
9.9.9.9 TCP 1s
9.9.9.9 UDP 3s
64.6.64.6 TCP 0.5s
64.6.64.6 UDP 0.5s
https://www.ietf.org/mail-archive/web/dns-privacy/current/ms...What you're looking for is DNSCurve.
The only reason people are interested in DNS over TLS is the garbage middleboxes that intercept and interfere with DNS (and thereby break DNSCurve or anything like it), which typically don't interfere with TLS.
If you could use an arbitrary protocol then it might as well be DNSCurve. If you can't then it has to be TLS. Even DNS over DTLS is people not realizing why TLS was used to begin with.
It seems the thing to do is to default to DNSCurve and fallback to DNS over TLS/HTTPS if that fails.
If you use a public resolver that supports it (such as Cloudflare's 1.1.1.1), I think you'd probably be best served by DNS-over-HTTPS as it uses 443/TCP.
DNS-over-TLS (supported by 1.1.1.1 and 9.9.9.9) would be my next choice, but since it uses 853/TCP, you might run into issues if/when you encounter a wireless network that blocks outbound access to this port.
DNSSEC, if you ran your own validating resolver on your laptop, should work regardless of the network you are connected to (as it just uses 53/UDP), but with the caveat that DNSSEC does not provide privacy (just "response integrity", as noted by the RFC).
> ... out of the box, Windows and macOS and Fedora all just defer to the DNS servers that are assigned by DHCP ... So I'm pretty much stuck, ...
Even when using DHCP, you should still be able to manually configure the DNS servers you want to use. AFAIK, this is still possible on any OS (but I haven't used Windows for years, nor OS X for quite a while). For example, on my laptop (which also hops between wireless networks), I run my own resolver (unbound, which points to a recursive resolver on the Internet that I control) and use DNS-over-TLS (on 853/TCP).
For more information, see the DNS Privacy Project's web site (wiki) [0].
its still in draft state AFAIK
It certainly isn't "out of the box", but on the off chance it's useful to you -- you can change dhclient (/etc/dhcp/dhclient.conf) to specify your own DNS servers. This is what I do, pointing at a bind instance I run, and it provides plenty of warm feels. Or, heck, you could run a full resolver locally.
DNS over HTTPS is being discussed to resolve that problem. The downside is it doesn't really exist yet.
DNSSEC doesn't do anything for query privacy (in other words: most of the reasons you'd use DNS-over-TLS aren't addressed by DNSSEC). DNSSEC is a bad standard whose primary impact on the Internet would be to replace the LetsEncrypt CA system with a PKI run by world governments. That sounds like something InfoWars would say, but I promise you, DNSSEC is weirder than InfoWars.
For now, the right answer is DNS over TLS.
Layering DNS over TLS (or anything else) is meaningless, it increases RTT (and thus response time) without any benefit for most users.
Using DNS over HTTPS or over TLS to hide traffic from your ISP is utterly meaningless. I don't know why people are advocating it for 'privacy' from your ISP.
For privacy, one would just use a VPN for all their traffic and using DNS over HTTPS matters much less, given that the DNS resolver is also being routed over the VPN connection (if it does at all).
The only use I see is that if you're visiting a HTTPS website, and it doesn't have HSTS (or if you're visiting a website with HSTS for the first time), it prevents phishing (for less tech-savvy since one would notice that it won't be TLS) people.
This use is further diminished if Firefox and other browsers start implementing the HSTS preloading[1] feature like Chrome, and people actually start submitting their domains for inclusion. Which I don't see happening soon, so it has some use case.
DNS-over-TLS and DNS-over-HTTPS accomplish the latter.
Not sure how I'll go with captive portals that rely on DNS hijacking, but worst case I just switch to using their DNS servers for a brief period.
https://1.1.1.1/dns-query?name=stavros.io&type=A&ct=applicat...
Yep, it's (unsurprisingly) just an HTTP query.
At least you'll have a better idea that you are getting authoritative responses.
And your provider can still find out what you connect to through SNI.
EDIT: I misunderstood; I though this would encrypt communication between resolvers and authoritative nameservers, too. :(
With this "DNS over HTTPS", given a page of HTML containing pointers to various domains, using a simple script one can filter out all the domainnames it contains, format them into HTTP requests, send them to the "dns-lg" endpoint over a single connection, parse the response and append the answers to /etc/hosts or a local authoritative zonefile. Then one can browse the page, including following any remote URLs without having to do any DNS lookups.
1 For example,
https://dns.google.com/resolve?name=example.com.
http://stat.ripe.net/data/dns-chain/data.json?resource=examp...
Sadly SNI destroys most of this privacy, but leaking less shouldn't be a bad thing. There's also other reasons you don't want people intercepting or re-writing your DNS.
Yeah, but put some strong emphasis on "necessarily" there.
I don't buy this argument. There are too many situations in which it doesn't apply. It offers a false sense of security.
Also worth noting that an ISP will generally go for the low-hanging fruit, but if your threat model includes a determined opponent then this probably isn't for you.
It's hard to argue that this isn't a net improvement over the status quo, though.