Wie installiere ich meinen eigenen DNS-Resolver?

In diesem Beitrag möchte ich zeigen, wie Sie einen eigenen DNS-Resolver innerhalb von wenigen Minuten installieren und konfigurieren können.

Die Voraussetzungen hierbei sind ziemlich übersichtlich:

  • Ein System auf dem eine Linux-Distribution installiert werden kann
  • Eine IT-Infrastruktur die DNS-Anfragen vom DNS-Resolver an die DNS-Root-Server und
  • Anfragen von intern an den an den neuen DNS-Resolver erlaubt

In diesem Beispiel wurde das Open Source-Paket Unbound auf einem Debian Server installiert.

Grundsätzlich ist Unbound mit fast jeder Linux-Distribution kompatibel. Die einzelnen Befehle können jedoch abweichen.

Was ein Resolving Name Server / DNS-Resolver ist und wie eine DNS-Abfrage funktioniert, hat unser Kollege im Beitrag Was ist eigentlich DNS? beschrieben.

Installation und Tests

Als erstes benötigen Sie ein System, auf dem Sie den DNS-Resolver installieren möchten. Hierzu empfiehlt sich eine virtuelle Maschine oder eine kleine bzw. alte Hardware-Appliance mit einem Linux-Betriebssystem. Das System ist optimalerweise neu installiert und besitzt keine weiteren Dienste, die angeboten werden.

In diesem Beispiel wird ein Debian Server in einer virtuellen Maschine benutzt.

Für die meisten Befehle in dieser Anleitung werden administrative Rechte benötigt. Deswegen wird nach der Installation und dem erfolgreichen Start des Systems als erstes mit folgendem Befehl zum Benutzer „root“ gewechselt:

su

Nachfolgend wird Unbound, wie jedes andere Paket in Debian, mit folgendem Befehl installiert:

apt install unbound

Der DNS-Resolver ist bereits lokal auf dem soeben installierten System einsatzbereit. Dies kann mit folgendem Befehl getestet werden:

dig @127.0.0.1 to.com

Mit diesem Befehl wird eine DNS-Suchanfrage nach „to.com“ an localhost gesendet. Wenn die Antwort etwa so aussieht, war die Anfrage erfolgreich:

; <<>> DiG 9.11.3-1ubuntu1.3-Ubuntu <<>> @127.0.0.1 to.com
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60087
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 4, ADDITIONAL: 1

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx (good)
;; QUESTION SECTION:
;to.com.                                IN      A

;; ANSWER SECTION:
to.com.                 300     IN      A       195.34.188.30

;; AUTHORITY SECTION:
to.com.                 172799  IN      NS      b.ns14.net.
to.com.                 172799  IN      NS      d.ns14.net.
to.com.                 172799  IN      NS      a.ns14.net.
to.com.                 172799  IN      NS      c.ns14.net.

;; Query time: 2009 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Wed Feb 20 15:17:49 CET 2019
;; MSG SIZE  rcvd: 151

Unter dem Abschnitt „Answer Section“ kann man nun sehen, dass eine Antwort in Form einer IP-Adresse erfolgreich war.

Damit nun auch andere PCs und Server aus dem Netzwerk den DNS-Resolver benutzen können, muss noch etwas an der Konfiguration von Unbound geändert werden.

Als erstes benötigen wir die IP-Adresse, mit dem der DNS-Resolver mit dem Netzwerk verbunden ist bzw. die IP-Adresse des Interfaces, auf dem DNS-Anfragen in Zukunft beantwortet werden sollen. Die IP-Adressen werden mit folgendem Befehl angezeigt:

ip a

Nachdem Sie sich die IP-Adresse gemerkt oder notiert haben, öffnen Sie mit einem Texteditor Ihrer Wahl die Konfigurationsdatei von Unbound:

nano /etc/unbound/unbound.conf

Nun müssen folgende Zeilen hinzugefügt werden. Bitte passen Sie die fett markierten Werte vor dem Hinzufügen in die Konfigurationsdatei an Ihre IT-Infrastruktur an.

server:
       access-control: 192.168.0.0/24 allow
       interface: 192.168.0.136
       interface: 127.0.0.1

Mit dem Parameter „access-control“ werden die Netze bestimmt, von denen Unbound DNS-Anfragen beantworten wird. Mehrere Netze können mit einer zweiten „access-control“ Zeile bestimmt werden (siehe „interface“).

Mit dem Parameter „interface“ wird bestimmt, auf welchem Interface Unbound DNS-Anfragen beantwortet.

Damit die Änderungen gültig werden, muss der Unbound-Dienst neu gestartet werden:

service unbound restart

Falls auf dem Betriebssystem, auf dem Unbound betrieben wird, eine Firewall aktiv ist, ist nun der Zeitpunkt gekommen diese so anzupassen, dass DNS-Anfragen (Port 22) aus dem internen Netz angenommen werden und Unbound DNS-Anfragen an die DNS-Root-Server stellen darf.

Nun können auch andere PCs oder Server den DNS-Server benutzen.
Dies kann mit folgendem Befehl getestet werden:

dig @192.168.0.136 to.com

Der Test war erfolgreich, wenn die Antwort so wie im vorherigen Test aussieht. Damit ist die Installation des eigenen DNS-Resolvers erfolgreich abgeschlossen.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

CAPTCHA *