4 ms·
Not sure about Linux/Mac/Windows, but for OpenBSD, you can simply use unbound in base system to enable DoH (EDIT: No, it's not DoH, it's DoT) for everything in
by katzeilla 7y ago
Not sure about Linux/Mac/Windows, but for OpenBSD, you can simply use unbound in base system to enable DoH (EDIT: No, it's not DoH, it's DoT) for everything in your system.
https://man.openbsd.org/unbound.conf https://man.openbsd.org/unbound.conf
- detaro 7y agoI don't think unbound supports DoH yet (the manpage you link doesn't mention it either). But AFAIK it does DoT. EDIT: clearly shouldn't have used unexplained acronyms: DoH = DNS over HTTPS, DoT = DNS over TLS (which typically uses port 853)
- ori_b 7y agoWhich is better, since it avoids ridiculously complicated web standards like HTTP2 for simple DNS lookups.
- bureaucrat 7y agoIt sounds bad, but the fact that it can’t be blocked is important in terms of censorship. DNS over TLS can be easily blocked by blocking port 853. To block DNS over HTTPS you need to block the entire HTTPS traffic.
- ori_b 7y agoIf that's the concern, you can run a DNS server on port 443. DOH also doesn't help much with censorship: If you look at traffic patterns, you can detect and block DOH servers pretty easily: look for small queries to a constant endpoint that come just before new connections.
- bureaucrat 7y ago“You” need to run port 443 DNS server. Instead we can make this mandatory for everyone. Your explained method is nearly impossible to implement for medium to large scale networks.
- ori_b 7y agoWhy? I can't imagine it'd make most flow inspecting firewalls and middleboxes break a sweat. If you want extra confirmation before banning, you can fire off a DNS query before killing the connection. Hell, you can go even more trivial with barely any effort: for every new https connection to an unknown server, send a DNS query. If you get a response, block the IP. HTTP adds nothing but complexity.
- bureaucrat 7y agoOh no no no, it does add security. Think DNS over TLS. Okay. You think $ip:$port is a dns connection. You send query with DoT protocol. You get answers. Bingo! It’s DNS. If it’s DNS over HTTPS, you can’t tell. What domain(dns.quad9.net or cloudflare-dns.com or dns.google or whatever you can imagine) is it? What endpoint and method(/dns-query?url= or whatever you can imagine) is it? You can’t tell. HTTP adds complexity. Complexity adds security.
- ori_b 7y agoIf I can't tell, neither can the legitimate users. This makes queries that would out of the box rather hard. And you still have the traffic patterns that will give you the information with sufficient confidence.
- bureaucrat 7y agoWhy should legit users need to check whether a packet is to a dns server or not? And blocking https packets with mere confidence is impossible.
- ori_b 7y agoWell, it's hard to get a DNS response when you aren't talking to a DNS server... So, yeah, I can serve up DOH on my own server with a custom endpoint, custom client configuration, and generate cover traffic. But that's not exactly easy. And http doesn't help: I can do that without http, something like https://github.com/yrutschle/sslh https://github.com/yrutschle/sslh, or using SNI (which, as of TLS 1.3, is encrypted). And merely saying something is impossible doesn't make it so. It doesn't even make it hard.
- deleted 7y ago[deleted]
- katzeilla 7y agoIt's called TLS upstream. (I guess DNS over https and DNS over TLS is the same thing.) > tls-upstream: <yes or no> > Enabled or disable whether the upstream queries use TLS only for transport. BTW, you can also use it on Linux. https://www.dnsknowledge.com/unbound/configure-unbound-dns-over-tls-on-linux/ https://www.dnsknowledge.com/unbound/configure-unbound-dns-o...