[Yeti DNS Discuss] A public Yeti DNS resolver (but with TLS)

Stephane Bortzmeyer bortzmeyer at nic.fr
Wed Dec 21 20:11:06 UTC 2016


Yeti does not have a public DNS resolver
<http://lists.yeti-dns.org/pipermail/discuss/2016-November/000736.html>. And
there are few public DNS-over-TLS (RFC 7858) resolvers
<https://portal.sinodun.com/wiki/display/TDNS/DNS-over-TLS+test+servers>,
which is sad, since DNS privacy is a big not-yet-solved problem
<https://www.internetsociety.org/events/ndss-symposium/ndss-symposium-2017/dns-privacy-workshop-2017-call-papers>

So, I installed an *experimental* public DNS-overs-TLS Yeti resolver
on dns-resolver.bortzmeyer.org (IPv6 only, which makes sense for
Yeti). Two warnings: it is best effort only, and since it sends
requests to the Yeti root, the user's data is captured and
analyzed. So, it is to test technically privacy-enhancing technqiues,
not to provide actual privacy.

The certificate was issued by CAcert <https://www.cacert.org/> I
wonder if it's possible to get a Let's Encrypt certificate for a DNS
server (you need to set up a callback server)?

If you don't know DNS-over-TLS clients, you can find some in
<https://portal.sinodun.com/wiki/display/TDNS/DNS-over-TLS+clients>

Another way to use it is a forwarder for a local resolver. Unbound
can do that:

server:
  ...
  auto-trust-anchor-file: "autokey/yeti-key.key"
  ssl-upstream: yes

forward-zone:
  name: "."
  #forward-host: "dns-resolver.bortzmeyer.org" forward-host does not work, unknown reason
  forward-addr: 2001:4b98:dc2:43:216:3eff:fea9:41a at 853
  forward-first: no

The public resolver itself is implemented with Unbound. Here is its
configuration:

server:
  use-syslog: yes
  username: "unbound"
  directory: "/etc/unbound"
  root-hints: "yeti-hints"
  auto-trust-anchor-file: autokey/yeti-key.key
  # Do NOT listen on public addresses (except with
  # DNS-over-TLS-over-TCP, port 853) because we accept queries from
  # everyone.
  interface: ::1
  interface: 127.0.0.1
  interface: 2001:4b98:dc2:43:216:3eff:fea9:41a at 853
  qname-minimisation: yes
  harden-below-nxdomain: yes
  harden-referral-path: yes
  harden-glue: yes
  ssl-service-key: "/etc/unbound/tls-server.key"
  ssl-service-pem: "/etc/unbound/tls-server.pem"
  ssl-port: 853
  # Be careful: this turn us into an open resolver. This is safe only
  # because we do not listen to any interface except with DNS-over-TLS
  # (port 853). May be using the new "views" feature of Unbound >=
  # 1.6?
  access-control: ::0/0 allow
  # Slow but useful to debug the public resolver
  log-queries: yes

The requests are logged locally (see above the warning about privacy):

% sudo journalctl -n  -f -t unbound
...
Dec 21 17:20:12 dahu1 unbound[25626]: [25626:0] info: 2001:db8:1:2:6c65:ec27:7a25:8aa www.eu.org. AAAA IN
Dec 21 17:20:12 dahu1 unbound[25626]: [25626:0] info: 2001:db8:1:2:6c65:ec27:7a25:8aa www.eu.org. A IN

And the certificate is:

%  openssl s_client -showcerts -connect dns-resolver.bortzmeyer.org:853 | openssl x509 -text
depth=2 O = Root CA, OU = http://www.cacert.org, CN = CA Cert Signing Authority, emailAddress = support at cacert.org
verify return:1
depth=1 O = CAcert Inc., OU = http://www.CAcert.org, CN = CAcert Class 3 Root
verify return:1
depth=0 CN = dns-resolver.bortzmeyer.org
verify return:1
Certificate:
    Data:
        Version: 3 (0x2)
        Serial Number: 172663 (0x2a277)
    Signature Algorithm: sha256WithRSAEncryption
        Issuer: O = CAcert Inc., OU = http://www.CAcert.org, CN = CAcert Class 3 Root
        Validity
            Not Before: Dec 21 16:42:26 2016 GMT
            Not After : Dec 21 16:42:26 2018 GMT
        Subject: CN = dns-resolver.bortzmeyer.org
        Subject Public Key Info:
            Public Key Algorithm: rsaEncryption
                Public-Key: (2048 bit)
...
    X509v3 extensions:
            X509v3 Basic Constraints: critical
                CA:FALSE
            X509v3 Key Usage: critical
                Digital Signature, Key Encipherment, Key Agreement
            X509v3 Extended Key Usage: 
                TLS Web Client Authentication, TLS Web Server Authentication, Netscape Server Gated Crypto, Microsoft Server Gated Crypto
            Authority Information Access: 
                OCSP - URI:http://ocsp.cacert.org/

            X509v3 CRL Distribution Points: 

                Full Name:
                  URI:http://crl.cacert.org/class3-revoke.crl

            X509v3 Subject Alternative Name: 
                DNS:dns-resolver.bortzmeyer.org, othername:<unsupported>




More information about the discuss mailing list