Unbound als zentraler DNS-Server und Adblocker

© Chavalit Kamolthamanon, 123RF

Gut gefiltert

Mit Unbound sorgen Sie für blitzschnelle Antworten auf DNS-Anfragen – und sperren bei Bedarf lästige Web-Werbung aus.

Das Domain Name System fungiert quasi als Telefonbuch des Internets. Mit Unbound [1] auf einem Raspberry Pi optimieren Sie den Einsatz des Protokolls für die Geräte im LAN. So sorgen Sie für kürzere Antwortzeiten, mehr Privatsphäre und schützen die Clients vor unerwünschter Werbung. Dabei steht der Dienst zentral für alle Geräte bereit.

Bei der Einwahl ins Internet schicken Provider in der Regel die Einträge für DNS-Server mit, die die Router automatisch übernehmen. Das genügt normalen Anwendern, die lediglich mit dem Browser unterwegs sind.

Wer jedoch die Grenzen des Möglichen austesten will, stößt schnell auf Probleme – etwa wenn die DNS-Server der Telekom für einen nicht existierenden Namen auf ihre Suchseite umleiten, anstatt die korrekte Fehlermeldung (NX_NODOMAIN) zu liefern. Was für einen surfenden Anwender praktisch erscheint, ist für einen automatischen Dienst nicht unbedingt erwünscht.

Solche Probleme lassen sich umgehen, indem Sie einfach die entsprechenden Einträge im Router ersetzen. Trotzdem müssen Sie weiterhin für jede Anfrage eine Verbindung zum externen DNS-Server aufbauen – obwohl vielleicht ein anderer Rechner im LAN dieselbe Abfrage zuvor bereits gestellt hat.

Hier hilft Unbound als DNS-Server mit eigenem Cache dabei, das Auflösen der Namen auf Trab zu bringen. Die Möglichkeit, beliebig viele Upstream-Server zu konfigurieren, bietet dabei mehr Sicherheit gegen Ausfälle.

Darüber hinaus dient das dem Schutz der Privatsphäre: Da die konfigurierten Server im Round-Robin-Verfahren zum Einsatz kommen, streuen Sie so die Abfragen über verschiedene Anbieter. Auf diese Weise erhält niemand einen vollständigen Überblick über abgefragten Adressen. Verwenden Sie ausschließlich DNSSEC-fähige Upstream-Server, sind Sie außerdem gut geschützt gegen gefälschte Antworten.

In Ausgabe 03-04/2017 haben wir mit Pi-hole bereits ein ähnliches Projekt vorgestellt, dessen Fokus auf dem Blockieren von Werbung auf Webseiten liegt [2]. Diesen Teil deckt Unbound ebenfalls mit ab; eine entsprechende Liste mit zu blockierenden Einträgen aktualisieren Sie bei Bedarf sogar automatisch.

Im Vergleich zu Pi-hole kommt Unbound jedoch wesentlich schlanker daher: Es gibt keine grafische Oberfläche, die Konfiguration findet mit dem Editor statt. Die Abhängigkeiten fallen daher deutlich geringer aus.

Installation

Da sich Unbound in den Raspbian-Repos findet, gelingt die Installation mit einem einfachen apt-get install unbound in einem Terminal. Fehlende Abhängigkeiten installiert das Paketmanagement dabei automatisch mit.

Im Verzeichnis /etc/unbound finden Sie die Konfiguration. Für dynamische und modulare Bestandteile lädt die Software alle Dateien aus dem Verzeichnis /etc/unbound/unbound.conf.d automatisch nach, was Sie sich im Folgenden zunutze machen.

Um das Programm als einfachen, puffernden DNS-Server nutzen zu können, bedarf es lediglich einer simplen Konfiguration, wie sie Listing 1 zeigt. Über interface: 0.0.0.0 weisen Sie die Software an, auf allen Schnittstellen zu lauschen, also sowohl Anfragen an localhost beziehungsweise 127.0.0.1 als auch von anderen Rechnern im Netz anzunehmen (Zeile 5).

Listing 1

 

## Simple recursive caching DNS
## unbound.conf -- https://calomel.org
#
server:
  interface: 0.0.0.0
    access-control: 10.0.0.0/16 allow
    access-control: 127.0.0.0/8 allow
    access-control: 192.168.0.0/16 allow
    verbosity: 1
forward-zone:
  name: "."
  # definitely censor free & log free with DNSSEC Support:
  forward-addr: 84.200.69.80   # DNS Watch
  forward-addr: 84.200.70.40   # DNS Watch
  forward-addr: 77.109.148.136 # Xiala.net
  forward-addr: 77.109.148.137 # Xiala.net
  forward-addr: 91.239.100.100 # censurfridns.dk
  forward-addr: 89.233.43.71   # censurfridns.dk

Mit access-control legen Sie fest, wer den Dienst benutzen darf. Je nachdem, welcher Adressbereich in Ihrem Netz zum Einsatz kommt, passen Sie hier die Daten an (Zeilen 6 bis 8).

Im Abschnitt forward-zone definieren Sie mit name: "." die Upstream-Server (Zeile 11ff.). Alle hier festgelegten Rechner kommen im Round-Robin-Verfahren zum Einsatz. Die drei Dienste im Beispiel (DNS Watch, Xiala.net, Censurfridns.dk) erfüllen wichtige Kriterien: Sie unterstützen DNSSEC, speichern keine Logs und zensieren keine Abfragen.

Mit dieser Konfiguration wären, abgesehen vom Blockieren der Werbung, alle eingangs genannten Kriterien abgedeckt. Um DNSSEC zu aktivieren und Unbound als verantwortlichen Server für das LAN zu nutzen, sind jedoch noch weitere Schritte notwendig. Zuerst einmal konfigurieren Sie Unbound mit den zentralen Root-Servern des DNS:

$ curl -o /etc/unbound/root.hints https://www.internic.net/domain/named.cache

Außerdem benötigt die Software den Schlüssel für den Root-Server, den sie laut /etc/unbound/unbound.conf.d/root-auto-trust-anchor-file.conf in der Datei /var/lib/unbound/root.key erwartet. Existiert diese Datei noch nicht oder bleibt sie leer, sollte sie initial den Inhalt aus Listing 2 erhalten.

Listing 2

 

    . IN DS 19036 8 2 49AAC11D7B6F6446702E54A1607371607A1A41855200FD2CE1CDDE32F24E8FB5

Sie verifizieren diesen Eintrag über die Webseite der Internet Assigned Numbers Authority (IANA) [3]. Außerdem fügen Sie noch ein, wo sich die root.hints befinden (Listing 3, Zeile 14). Die Konfigurationsdatei fällt nun ein wenig komplexer aus (Listing 3).

Listing 3

 

server:
  verbosity: 1
  interface: 0.0.0.0
  port: 53
  do-ip4: yes
  do-ip6: no
  do-udp: yes
  do-tcp: yes
  access-control: 10.0.0.0/16 allow
  access-control: 127.0.0.0/8 allow
  access-control: 192.168.0.0/16 allow
  root-hints: "/etc/unbound/root.hints"
  hide-identity: yes
  hide-version: yes
  harden-glue: yes
  harden-dnssec-stripped: yes
  use-caps-for-id: yes
  cache-min-ttl: 300
  cache-max-ttl: 86400
  prefetch: yes
  num-threads: 2
  forward-zone:
    name: "."
    # definitely censor free & log free with DNSSEC Support:
    forward-addr: 84.200.69.80   # DNS Watch
    forward-addr: 84.200.70.40   # DNS Watch
    forward-addr: 77.109.148.136 # Xiala.net
    forward-addr: 77.109.148.137 # Xiala.net
    forward-addr: 91.239.100.100 # censurfridns.dk
    forward-addr: 89.233.43.71   # censurfridns.dk

Jetzt lässt sich Unbound als zentrale Verwaltungsstelle für Geräte im lokalen Netz einsetzen, indem Sie den Inhalt von Listing 4 in die Konfiguration integrieren.

Listing 4

 

server:
  local-zone: "home.lan." static
  local-data: "firewall.home.lan.  IN A 10.0.0.1"
  local-data: "laptop.home.lan.    IN A 10.0.0.2"
  local-data: "xboxone.home.lan.   IN A 10.0.0.3"
  local-data: "ps4.home.lan.       IN A 10.0.0.4"
  local-data-ptr: "10.0.0.1  firewall.home.lan"
  local-data-ptr: "10.0.0.2  laptop.home.lan"
  local-data-ptr: "10.0.0.3  xboxone.home.lan"
  local-data-ptr: "10.0.0.4  ps4.home.lan"

Mit local-zone legen Sie fest, für welche Domain der Block gilt. Im Beispiel kommt home.lan für ein lokales Netzwerk zum Einsatz. Für jeden Host legen Sie anschließend mittels local-data einen Eintrag für den Forward Lookup an, also das Auflösen eines Namens in eine IP-Adresse. Mittels local-data-ptr ergänzen Sie einen Eintrag für den Reverse Lookup, also das Auflösen einer IP-Adresse in einen Namen [4].

Adblocker

Den geforderten Adblocker rüsten Sie nun recht einfach nach. Dazu laden Sie zunächst eine entsprechende Liste von Hosts herunter (Listing 5). Anschließend binden Sie diese Datei über einen entsprechenden Eintrag in der Konfiguration ein (Listing 6). Jetzt noch ein beherztes service unbound restart getippt, und die Arbeit ist getan.

Listing 5

 

$ curl -sS -L --compressed "http://pgl.yoyo.org/adservers/serverlist.php?hostformat=unbound&showintro=0&mimetype=plaintext" > /etc/unbound/unbound.conf.d/unbound_ad_servers

Listing 6

 

include: "/etc/unbound/unbound.conf.d/unbound_ad_servers"

Diesen Artikel als PDF kaufen

Express-Kauf als PDF

Umfang: 5 Heftseiten

Preis € 0,99
(inkl. 19% MwSt.)

Raspberry Pi Geek kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

Aktuelle Ausgabe

08/2019
Smarte Hacks

Diese Ausgabe als PDF kaufen

Preis € 9,99
(inkl. 19% MwSt.)

Stellenmarkt

Neuigkeiten

  • Immer der Reihe nach

    Mit einer einfachen Schaltung testen Sie Bausteine, die über den SPI-Bus miteinander kommunizieren.

  • Einzigartig

    Eine MAC-Adresse ermöglicht die Kommunikation im Netzwerk. Der 24AA02E48 liefert sie für Setups, die aus grundlegenden Komponenten bestehen.

  • Steinkuchen

    Der Raspberry Pi hat viele Fans, doch nicht ohne Grund sehnen sich viele Anwender nach einem RasPi 4. Der Rock Pi 4 übertrumpft den RasPi 3 in Sachen Leistung um Längen und schlägt sich auch in der Praxis gut.

  • Kerngeschäft

    Der Einstieg in die Welt der Mikrocontroller fällt nicht ganz leicht. Mit dem Nucleo F401RE haben Sie jedoch ein Entwicklerboard samt abgestimmter Entwicklungsumgebung an der Hand.

  • Himbeer-Geräte

    Mit Maus und Tastatur im weiß-roten Raspberry-Look macht die Raspberry Pi Foundation das eigene Angebot an Peripheriegeräten für den Mini-Rechner komplett.

  • Unter Kontrolle

    PiCockpit ist eine speziell auf den RasPi zugeschnittene Online-Monitoring-Lösung. Wir werfen einen ersten Blick auf den brandneuen und in Ausbau befindlichen kostenlosen Dienst.

  • Ins rechte Licht gesetzt

    Selbst ohne eigenen Garten holen Sie sich Pflanzen mithilfe von LEDs in jeden Raum und sehen ihnen mit dem RasPi beim Wachsen zu.

  • Helligkeit nach Maß

    Wer bei wechselnden Lichtverhältnissen nicht ständig die Beleuchtung manuell nachregeln möchte, der spannt dafür einen PiXtend ein.

  • Geschrumpft

    Kleine Bildschirme gibt es zwar viele, aber der Support von Raspbian ist überraschend schlecht. Mit ein paar Tricks erzielen Sie trotzdem ein optimales Ergebnis.

  • Brüllwürfel

    Kompakt-Stereoanlagen mit CD-Spieler und Kassettendeck sind inzwischen oft ein Fall für den Recyclinghof – oder für die digitale Wiederbelebung mit einem RasPi und etwas Geschick.