Pi-Hole – Eigener DNS-Resolver + DNSSEC

Wer bereits Pi-Hole installiert hat, kann nun mit nur wenigen Schritten seinen eigenen DNS-Resolver inkl. DNSSEC anstelle von bsp. Google oder Cloudflare nutzen. Hinzu kommt, dass wir uns die erste Anfrage an die DNS-Rootserver durch eine Zonenliste sparen.

Punkt 1: Wir installieren PowerDNS Recursor

Zuerst fügen wir das passende Repository hinzu. in diesem Beispiel gehe ich auf Debian 9 ein, weitere Repos unter https://repo.powerdns.com/.

Wir pinnen das ganze.

Nun kann der APT Key geladen und das Paket installiert werden.

Punkt 2: PowerDNS Recursor konfigurieren

In der Konfiguration setzen wir folgende Werte, der Rest kann so bleiben.

Punkt 3: DNS-Rootserver Zone herunterladen

Wir laden einmalig die named.root Zonendatei herunter.

Ein wöchentlicher Cronjob sorgt für den aktuellsten Stand.

Wir starten den Recursor Dienst neu.

Punkt 4: DNS-Resolver in Pi-Hole eintragen und DNSSEC aktivieren

  1. Wir gehen in das Pi-Hole Admin Interface auf Settings > DNS, entfernen alle Haken bei den Upstream DNS Servers.
  2. Nun fügen wir unseren Upstream DNS Server Custom 1 (IPv4) hinzu: 127.0.0.1#5353 und aktivieren diesen.
  3. Zuletzt aktivieren wir Use DNSSEC und drücken Save.

Punkt 5: Testen

Wir prüfen ob DNSSEC aktiviert ist am einfachsten auf der Webseite http://dnssec.vs.uni-due.de/.

Alternativ über die Linux Konsole.

 

UnterstützenDas Betreiben der Dienste, Webseite und Server machen wir gerne, kostet aber leider auch Geld.
Unterstütze unsere Arbeit mit einer Spende.
11

dominion

Linux Systemadministrator

Das könnte dich auch interessieren …

21 Antworten

  1. Eulalia sagt:

    Klappt wunderbar, danke!

  2. Pat sagt:

    Danke dir, sieht nun besser aus!
    Sieht das gut aus: ?

    root@PiHole:~# dig sigok.verteiltesysteme.net @127.0.0.1

    ; <> DiG 9.10.3-P4-Debian <> sigok.verteiltesysteme.net @127.0.0.1
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 15957
    ;; flags: qr rd ra ad; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 512
    ;; QUESTION SECTION:
    ;sigok.verteiltesysteme.net. IN A

    ;; ANSWER SECTION:
    sigok.verteiltesysteme.net. 60 IN A 134.91.78.139

    ;; Query time: 162 msec
    ;; SERVER: 127.0.0.1#53(127.0.0.1)
    ;; WHEN: Sun Apr 14 16:48:08 CEST 2019
    ;; MSG SIZE rcvd: 71

    root@PiHole:~# dig sigfail.verteiltesysteme.net @127.0.0.1

    ; <> DiG 9.10.3-P4-Debian <> sigfail.verteiltesysteme.net @127.0.0.1
    ;; global options: +cmd
    ;; Got answer:
    ;; ->>HEADER<<- opcode: QUERY, status: SERVFAIL, id: 43357
    ;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 0, ADDITIONAL: 1

    ;; OPT PSEUDOSECTION:
    ; EDNS: version: 0, flags:; udp: 512
    ;; QUESTION SECTION:
    ;sigfail.verteiltesysteme.net. IN A

    ;; Query time: 69 msec
    ;; SERVER: 127.0.0.1#53(127.0.0.1)
    ;; WHEN: Sun Apr 14 16:49:27 CEST 2019
    ;; MSG SIZE rcvd: 57

  3. pat sagt:

    In „Query Log“, I don’t see any DNSSEC column? Normal?

  4. Bastian sagt:

    Hey, habe es auf meinen Raspi (3B+) versucht.
    Natürlich die entsprechende Repo (raspbian stretch-rec-master main) genommen. Leider bekomme ich diesed Fehler:
    @raspberrypi:~ $ sudo systemctl restart pdns-recursor.service
    Job for pdns-recursor.service failed because the control process exited with error code.
    See „systemctl status pdns-recursor.service“ and „journalctl -xe“ for details.

    Ich habe auch einen Neustart des Raspi versucht; keine Besserung.
    Bitte um Hilfe, Danke

  5. Bastian sagt:

    Ergänzend die Ausgabe vom „systemctl status pdns-recursor.service“:
    ● pdns-recursor.service – PowerDNS Recursor
    Loaded: loaded (/lib/systemd/system/pdns-recursor.service; enabled; vendor preset: enabled)
    Active: activating (auto-restart) (Result: exit-code) since Wed 2019-04-17 13:33:22 CEST; 97ms ago
    Docs: man:pdns_recursor(1)
    man:rec_control(1)
    https://doc.powerdns.com
    Process: 7580 ExecStart=/usr/sbin/pdns_recursor –daemon=no –write-pid=no –disable-syslog –log-timestamp=no (code=exited, status=1/FAILURE)
    Main PID: 7580 (code=exited, status=1/FAILURE)
    ~

  6. Tom sagt:

    Hallo, ich bin auf den gleichen Fehler gestoßen wie Bastian.
    Gibt es mittlerweile eine Lösung dafür?

  7. Tom sagt:

    Hallo, danke Dominion, das war tatsächlich die Lösung des Problems.

  8. Patrick sagt:

    Guten Abend, vielen Dank für den Beitrag. Er hat mir sehr geholfen. Ich nutze auf meinem vServer auch einen Pi-Hole, eben dank dir jetzt mit DNSSEC. Zwei Fragen sind jetzt offen geblieben.
    – Die Anfragen werden trotzallem weiterhin an einen DNS Server weiter gegeben. Wo in der recursor.conf kann ich einstellen, welchen DNS ich verwenden möchte?
    – Im Status des Pi-Holes wird sehr oft INSECURE & BOGUS angezeigt. Ist das normal? (Link zum Screenshot: https://ibb.co/xMdgvMk)
    Ich möchte sicher gehen, dass mit der Installation alles geklappt hat.Ich habe als IPv4 127.0.0.1#5353 und als IPv6 ::1#53 eingetragen.
    Vielen Dank!

    • Dominion sagt:

      Hi,

      ja deine Anfragen gehen natürlich die Leiter hoch an die Root Server .. definiert hier: hint-file=/etc/powerdns/named.root
      Das im Status INSECURE und BOGUS steht ist normal, manche Seiten haben halt kein DNSSEC oder fehlerhaft eingerichtet.
      Mit den aufgeführten Tests kannst du prüfen ob alles geklappt hat: http://dnssec.vs.uni-due.de/

      • Patrick sagt:

        Hi, vielen Dank für die Antwort. Der DNS-Test erfolgte gestern bereits erfolgreich. Ich habe mir jetzt das File angeschaut. Für mich geht jetzt leider nicht hervor, welchen DNS-Server ich mit meinem PowerDNS jetzt anspreche. Ich sehe nur einträge A.ROOT-SERVERS.NET.bis M.ROOT-SERVERS.NET. Vielleicht bin ich auch einfach nur noch zu unerfahren um das zu verstehen. Der PowerDNS gibt die Anfragen ja weiter oder? Ich selbst bin ja kein echter DNS-Server mit einer riesen Datenbank. Ich habe mir vorgestellt, dass ich jetzt zb die IP von Cloudflare eintrage. Dann wüsste ich, dass die Anfrage dahin geleitet wird. Würdest du mir das anhand eines Beispiels zeigen wollen? Vielen Dank.

  9. Dominion sagt:

    TIPP: Falls zu viele BOGUS auftreten muss DNSSEC im Pihole deaktiviert und nur im PDNS Recursor aktiviert sein! https://discourse.pi-hole.net/t/bogus-domain-which-is-not-bogus/19558/5

  10. Matthias sagt:

    Hi,

    vielen Dank hierfür. Mit der Anpassung auf Port 5300 lief es auch bei mir.

  11. Matthias sagt:

    Nachtrag: Heute habe ich festgestellt, das der Raspi selbst (apt, ping) keine Namen mehr auflöst. Funktioniert nur, wenn ich temporär z.B. Cloudflare als DNS in Pi-Hole aktiviere. Somit sind automatische Updates nicht möglich. Wo ändere ich das ( /etc/resolv.conf wird immer wieder auf 127.0.0.1 überschrieben)?

Schreibe einen Kommentar

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