Lokalen Resolver für DNS-over-TLS einrichten


Von Roman (romanf auf trash.net)


Dieser Artikel beschreibt grob, wie man einen lokalen DNS Resolver auf einem Linux einrichtet, konfiguriert und mit gängigen Clients verwendet.

Als Einstieg empfehlen wir den c't Artikel Selbstauskunft - Namensauflösung inklusive Datenschutz fürs Heimnetz (Ausgabe 12/2017). Der Artikel beschreibt, wie man einen lokalen DNS Resolver installiert und grund-konfiguriert.

Wenn der lokale DNS Resolver mal soweit läuft, dann kann man sich an die Verwendung von DNS-over-TLS machen.

Anpassungen der unbound Konfiguration

Die folgenden Settings wurden von Thomas Bader ermittelt und befinden sich meistens /etc/unbound/unbound.conf und müssen ggf. auskommentiert oder geändert werden. Mit diesen Settings wird unbound sowohl für DNS-over-TLS eingerichtet, als auch auf möglichst grosse Datensparsamkeit getrimmt:

# Enable or disable whether TCP queries are answered or issued.
do-tcp: yes

# Enable  or disable whether the upstream queries use TCP only for
# transport.  Useful in tunneling scenarios.
tcp-upstream: yes

# If enabled id.server and hostname.bind queries are refused.
hide-identity: yes

# If enabled version.server and version.bind queries are refused.
hide-version: yes

# If yes, Unbound doesn't insert authority/additional sections
# into response messages when those sections are not required.
minimal-responses: yes

# If yes, message cache elements are prefetched before they expire
# to keep the cache up to date.
prefetch: yes

# Send minimum amount of information to  upstream servers to
# enhance privacy.
qname-minimisation: yes

# Enabled or disable whether the upstream queries use SSL only for
# transport.
ssl-upstream: yes

# Use 0x20-encoded random bits in the query to foil spoof
# attempts.
use-caps-for-id: yes

Die folgenden Settings leiten alle DNS Anfragen an die offenen DNS Resolver von trash.net weiter (nur für Mitglieder zugänglich!). Die Settings sind entweder im gleichen Konfig-File oder in /etc/unbound/conf.d/01_CacheForwarder.conf, wenn das Beispiel aus der c't übernommen wurde.

 
# forward all queries to resolv1.trash.net / resolv2.trash.net
name: "."
forward-addr: 213.144.137.170@853
forward-addr: 2001:1620:2001:ffff::170@853
forward-addr: 213.144.137.171@853
forward-addr: 2001:1620:2001:ffff::171@853

Hinweis zu IPv6: Wenn du kein IPv6 verwendest, dann können die beiden "forward-addr: 2001..." auskommentiert werden.

Konfiguration der Clients

Am Einfachsten wird der nun eingerichtete DNS Resolver (natürlich nach intensiven Tests) im DHCP Server als DNS-Server eingetragen und so an die Clients verteilt.

Risiken und Nebenwirkungen

Ohne DNS kommt man heute im Internet nicht weit (oder kennst du die IP-Adresse deiner Hausbank?). Wenn der lokale DNS Resolver mal streikt / nicht verfügbar ist, können alle Clients keine DNS Namen mehr auflösen. Das sieht dann aus, wie ein totaler Internet-Ausfall. Um die Abhängigkeit von nur einem DNS Resolver zu verhindern, kannst du in der DHCP Konfiguration noch weitere DNS Server eintragen (z.B. die Offenen Resolver von trash.net).