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).