Schon seit längerem unterstützt unbound DoT (DNS over TLS) und DoH (DNS over HTTPS) für eingehende Anfragen von Clients.

Die Konfiguration ist in der unbound Dokumentation gut beschrieben, aber es gibt ein paar Stolperfallen.

Um DoT und DoH zu aktiveren muss, laut Dokumentation, nur ein Schlüssel mit tls-service-key, ein dazu passendes Zertifikat mit tls-service-pem und eine interface Option mit passendem Port gesetzt werden. Der Standard Port für DoT ist 853 und für DoH 443. 

Kombiniert für alle IPv4 und IPv6 Adressen auf dem System, könnte die Konfiguration so aussehen:

server:
    interface: 0.0.0.0@853
    interface: ::0@853
    interface: 0.0.0.0@443
    interface: ::0@443
    tls-service-key: "/Pfad/zum/key.pem" 
    tls-service-pem: "/Pfad/zum/cert.pem"

Die Schlüssel/Zertifikat Kombination wird immer gemeinsam für DoH und DoT verwendet und die Dateien müssen im PEM Format vorliegen. Zertifikate im DER Format müssen vorher konvertiert werden.

Wenn auf dem gleichen System bereits ein Webserver läuft, ist der Port 443 ggf. belegt. Dann kann mit https-port ein anderer Port gewählt werden.

server:
    interface: 0.0.0.0@4343 
    interface: ::0@4343 
    https-port: 4343
    tls-service-key: "/Pfad/zum/key.pem"
    tls-service-pem: "/Pfad/zum/cert.pem"

Leider funktionierte bei meiner unbound Konfiguration diese Art über die interface Optionen nicht. Wenn interface-automatic verwendet wird, müssen mit interface-automatic-ports alle Ports angegeben werden.

Für DoT und DoH kann z.B. so aussehen:

server:    
    interface-automatic: yes
    interface-automatic-ports: "53 853 4343"

    https-port: 4343
    tls-service-key: "/Pfad/zum/key.pem"
    tls-service-pem: "/Pfad/zum/cert.pem"

Die interface Optionen müssen nicht mehr verwendet werden. Wenn für DoH ein anderer Port als 443 benutzt werden soll, muss es immer noch mit https-port definiert werden.

In Firefox  kann nun eine benutzerdefinierte DoH Adresse eingetragen werden. Firefox unterstützt von Port 443 abweichende benutzerdefinierte Ports.

Die URL für vom Standard abweichende Ports folgt diesem Muster:  https://example.org:4343/dns-query

Ein großer Nachteil von DoH und auch in Teilen von DoT ist die Geschwindigkeit. Wenn eine Adresse bereits im Cache von unbound ist, dauert eine Abfrage auf dem alten Weg per UDP in meinem lokalem Netzwerk im Durchschnitt etwa 2 ms. Mit DoH dauert es im Durchschnitt etwa 50 ms. Aus dem Internet heraus wird es etwas besser, da sich an den 50 ms für DoH nicht viel ändert, der Weg über unverschlüsseltes UDP aber auf etwa 25 ms  klettert.  Allerdings schwanken die Zugriffszeiten aus dem Internet stark und sind  sehr abhängig in welchen Netzen sich Server und Client gerade befinden.

DoT und DoH mit unbound