PiHole Teil 2: Verschlüsselung mit DNSCrypt

PiHole Teil 2: Verschlüsselung mit DNSCrypt

Dieser Beitrag ist Teil 2 von 3 in der Artikelreihe Pihole

In zweiten Teil meiner Artikelreihe zeige ich dir wie du DNSCrypt zur Verschlüsselung deiner DNS-Anfragen in Verbindung mit dem PiHole verwenden kannst.

Was ist DNSCrypt?

Mit DNSCrypt werden DNS-Anfragen und -Antworten zur Namensauflösung verschlüsselt zwischen dem Proxy und dem DNS-Server ausgetauscht. Damit können Nutzer ihre Verbindung zum DNS-Server also verschlüsseln. Dadurch wird sichergestellt, dass Außenstehende keine Möglichkeit haben den aufgerufenen Inhalt nachzuvollziehen. Auf diese Weise wird die Manipulation der DNS-Namensauflösung und damit sogenannte Man-In-The-Middle Angriffe erschwert. Bitte beachte jedoch, DNSCrypt bietet keine Ende-zu-Ende Verschlüsselung.

DNSCrypt installieren

Die DNSCrypt Proxydateien sollten im Ordner /opt installiert werden. Wechsle daher in dieses Verzeichnis mittels.

cd /opt

Download und Entpacken von DNSCrypt. Ersetze dabei gegebenenfalls die Versionsnummer durch eine aktuellere.

sudo wget https://github.com/jedisct1/dnscrypt-proxy/releases/download/2.0.31/dnscrypt-proxy-linux_arm-2.0.31.tar.gz
sudo tar -xf dnscrypt-proxy-linux_arm-2.0.31.tar.gz

Benenne das extrahierte Verzeichnis um und wechsle wieder in das Rootverzeichnis.

sudo mv linux-arm dnscrypt-proxy
cd ..

Konfiguration

Port einstellen

Erstelle eine Konfigurationsdatei basierend auf der Standarddatei. Kopiere dazu die vorhandene Konfigurationsdatei und öffne sie in einem Editor, z. B. nano:

sudo cp /opt/dnscrypt-proxy/example-dnscrypt-proxy.toml /opt/dnscrypt-proxy/dnscrypt-proxy.toml
sudo nano /opt/dnscrypt-proxy/dnscrypt-proxy.toml

Such die folgende Zeile in der Datei und ändere hier den Port von 53 auf einen beliebigen anderen Port wie z. B. 54. Port 53 wird bereits von PiHole selbst verwendet und kann daher hier nicht genutzt werden. Die erste Adresse ist für IPv4-Anfragen, die zweite entsprechend für IPv6. Merke dir den verwendeten Port, da dieser später in PiHole eingetragen werden muss.

Falls du dich über die IP-Adressen wunderst: Dies sind die Schreibweisen der lokalen IPs des Betriebssystems. Dies bedeutet DNSCrypt erwartet Anfragen von einem lokalen Dienst (wie z. B. von der PiHole-Software). Wir müssen diese Adressen also als Ziel in PiHole angeben (siehe unten).

listen_addresses = ['127.0.0.1:54','[::1]:54'].

Zusätzlich sollte noch folgende Einstellung vorgenommen werden, um ausschließlich DNS-Server zu verwenden, die DNSSEC verwenden. Diese Option hast du auch bereits in der Oberfläche von PiHole weiter oben eingestellt.

require_dnssec = true.
Hinweis
DNSSEC steht für Domain Name System Security Extensions und beinhaltet einige Internetstandards, die das DNS weiter absichern und die Authentizität und Integrität der gesendeten Daten sicherstellt. Ein DNS-Teilnehmer kann damit verifizieren, dass die erhaltenen Zeitzonendaten auch tatsächlich identisch sind mit denen, die der Ersteller der Zone autorisiert hat. Stelle dafür unbedingt sicher, dass das Datum und die Uhrzeit deines Raspberry Pi richtig eingestellt sind. Andernfalls werden DNS-Anfragen nicht akzeptiert. Weitere Informationen dazu findest du auf Wikipedia zusammengefasst.

DNS-Server erweitern

Die verwendeten DNS-Server können noch um weitere Einträge erweitert werden. Suche dazu nach server_names. Entferne „#“ am Anfang der Zeile, da die Server sonst nicht genutzt werden können. Andernfalls verwendet DNSCrypt die Google-DNS-Server (8.8.8.8 und 8.8.4.4), was datenschutztechnisch bedenklich ist. Ich habe die folgenden Server eingetragen. Achte in jedem Fall auf seriöse Anbieter, die keine Daten sammeln. Dazu sind europäische Server empfehlenswert, da sie der europäischen Datenschutzverordnung unterstehen. Die voreingestellten Server sind jedoch bereits völlig ausreichend. Eine Liste vertrauenswürdiger Server findest du unter diesem [Link].

server_names = ['dnscrypt.nl-ns0','dns2.digitalcourage.de','dns.digitale-gesellschaft.ch']

Speichere und schließe die Datei anschließend mit [STRG+X], bestätige mit [Y] und dann mit [Enter].
Installiere anschließend noch den DNSCrypt Proxy-Service und starte ihn.

sudo /opt/dnscrypt-proxy -service install
sudo /opt/dnscrypt-proxy -service start

Einstellungen testen

Mit folgendem Befehl erhältst du die im Bild gezeigte Ausgabe und kannst so überprüfen, ob die Einstellungen von DNSCrypt erfolgreich waren:

sudo systemctl status dnscrypt-proxy

Die letzten drei Zeilen zeigen dir, welche DNS-Server verwendet werden und die dazugehörigen Latenzen. Die letzte Zeile zeigt dir außerdem an wie viele DNS-Server aktuell genutzt werden.

PiHole Einstellungen anpassen

Nun muss PiHole noch für die Nutzung von DNSCrypt angepasst werden. Dazu rufst du wieder die Benutzeroberfläche im Browser auf und wechselst links zu Settings. Dort wählst du den Reiter DNS aus und trägst rechts einen manuellen Upstream DNS Server ein. Dieser wird nach dem Schema host#port eingetragen. Trage hier nun den zuvor gewählten Port manuell ein. Achte darauf, dass du sowohl den IPv4 als auch den IPv6 Port einträgst, damit PiHole für beide Protokolle verwendet werden kann. Auf der linken Seite sind die DNS-Server ausgewählt, die du während der Installation ausgewählt hast. Achte darauf, dass du alle voreingestellten DNS-Server auf der linken Seite deaktivierst, da Pihole ansonsten diese dauerhaft verwendet und DNSCrypt wirkungslos ist.

DNSCrypt testen

Mit folgendem Befehl prüfst du, ob die Einrichtung erfolgreich war. der Befehl liefert eine Ausgabe, die dir anzeigt, ob die Namensauflösung funktioniert.

sudo /opt/dnscrypt-proxy/dnscrypt-proxy -resolve creativeturtle.de

Die folgenden Testseiten zeigen dir, welchen DNS-Server dein PiHole aktuell verwendet. Diese sollten den unter server_names eingetragenen Anbietern entsprechen. Nutze den zweiten Link für eine schnelle Überprüfung:

Testseite1 | Testseite2

Der Ablauf der DNS-Anfrage ist nach dieser Konfiguration wie nachfolgend dargestellt. Der Router steht in Klammern, da dieser bei Variante 3 der DNS-Einrichtung im Router übersprungen wird und daher nur bei Variante 1 und 2 an der Weiterleitung beteiligt ist (siehe Einrichtung des DNS-Servers in der Fritz!Box in Teil 1 dieser Artikelreihe).

Endgerät (PC, Smartphone etc.) > (Router) > PiHole > DNS-Crypt > DNS-Server

In Teil 3 dieser Artikelserie zeige ich dir, wie du mit Unbound deine DNS-Anfragen selber beantworten kannst. Dadurch ersparst du dir die Anfrage an einen DNS-Server im Internet und erhöhst deine digitale Privatsphäre.

Artikelreihen Navigation< PiHole Teil 1: PiHole auf dem Raspberry Pi einrichtenPiHole Teil 3: Unbound >

themaster

Verwandte Beiträge

Android: Apps löschen

Android: Apps löschen

Android: Apps deaktivieren

Android: Apps deaktivieren

Raspberry Pi: Universeller Audio-Empfänger für Musikanlagen

Raspberry Pi: Universeller Audio-Empfänger für Musikanlagen

Raspberry Pi: SenseHat

Raspberry Pi: SenseHat

13 Comments

  1. Hallo, Philipp,
    ich habe pihole über docker/portainer installiert und es läuft. Ich habe weiterhin dnscrypt-proxy installiert, und es läuft. Allerdings zeigt es mir nach systemctl status dnscrypt-proxy keinen der eingestellten server an. Der test sudo /opt/dnscrypt-proxy/dnscrypt-proxy -resolve creativeturtle.de ergibt als Resolver IP 82.145.9.134 (dns03fr.versatel-sued.de.). Das – denke ich mal – ist nicht die erwünschte lösung. Wo könnte ich denn nach einer lösung für dieses problem suchen?
    Danke!
    Mit besten grüßen
    Joachim Köstler

    • Hi
      Hast du mal versucht die beiden verlinkten Testseiten aufzurufen? Dort müsste angezeigt werden, ob es geklappt hat.
      Grüße

  2. Danke für die tollen Hilfestellungen in Sachen Raspberry. Konnte schon einiges davon erfolgreich umsetzen.
    Ist es nicht möglich die anfrage über Unbound zu starten und dann über DNSCrypt verschlüsselt weiter zu leiten?
    Oder denke ich da eventuell falsch?

    Mit freundlichen Grüßen ?

    • Hallo
      Ich denke nicht, dass das möglich ist. Bei DNSCrypt konfigurierst du nur bestimmte Einstellungen in der gezeigten Config Datei. Dadurch leitet DNSCrypt die Anfragen zu den eingetragenen DNS-Servern weiter. Um jetzt die Anfrage an einen Rootserver zu leiten wie bei Unbound, müsstest du DNSCrypt umprogrammieren. Außerdem glaube ich (da bin ich mir gerade nicht ganz sicher), dass auch die Gegenstelle, sprich der Rootserver, die Verschlüsselung unterstützen muss und das tun diese soweit ich weiß nicht.

  3. Danke fürs Tutorial, bis zu dem Punkts: udo /opt/dnscrypt-proxy -service install klappte alle, aber es kommt folgender Fehler: sudo: /opt/dnscrypt-proxy: command not found

    Tipp?

    Thx

    • Also wenn der den Befehl nicht findet, dann ist DNSCrypt nicht ordnungsgemäß installiert. Dann muss schon bei der Installation etwas schief gelaufen sein. Oder passt vielleicht nur der Pfad, den du übergibst nicht? Hast du DNSCrypt vielleicht woanders hinkopiert als ich es getan habe? Wenn ja, musst du deinen Pfad mitgeben anstatt /opt/dnscrypt-proxy.

    • Bin auch daran verzweifelt, bis mir eingefallen ist, dass hier was fehlt. Das Verzeichnis heist so wie die Datei. Der richtige Befehl ist:
      sudo /opt/dnscrypt-proxy/dnscrypt-proxy -service install
      sudo /opt/dnscrypt-proxy/dnscrypt-proxy -service start

  4. Hallo Philipp,
    Asche auf mein Haupt…..Copy&Paste Fehler von DNSCrypt Config in den Eintrag von PiHole….also so wie Du geschrieben hast. Ich habe die local IP mit „:“ anstatt mit „#“ eingegeben und dies auch immer wieder in Deiner Beschreibung überlesen!!
    Vielen Dank für den Hinweis.
    Gruß
    Stefan

  5. Hallo Philipp,
    danke für das Tutorial für DNSCrypt mit PiHole.
    Alles soweit wie möglich danach eingerichtet. PiHole habe ich schon länger laufen und wollte jetzt noch um DNSCrypt erweitern. Jedoch lässt sich in PiHole der local DNS nicht unter IP4 übernehmen. Obwohl systemctl anzeigt, dass DNSCrypt auf dieser IP (127.0.0.1:54) läuft.
    PiHole läuft in der Version 5.6 und DNSCrypt in der 2.1.1
    Hast Du noch eine Idee warum es dabei Probleme gibt?
    Vielen Dank schonmal.

    • Hallo Stefan
      Wie genau äußert sich das denn? Funktioniert der PiHole nicht mehr, wenn du die lokale IP von DNSCrypt einträgst? Beachte, dass du die IP folgendermaßen angeben musst: 127.0.0.1#54 (also mit dem Rautezeichen und nicht mit Doppelpunkt). Achte außerdem darauf, dass in PiHole selber links neben der angegebenen IP kein DNS-Server ausgewählt ist, da PiHole sonst die eigenen DNS-Server nutzt und eben nicht DNSCrypt.

      Gruß
      Philipp

  6. Danke für deine Arbeit. Allerdings komme ich nicht weiter. Nachdem ich die Datei linux-arm in dnscrypt-proxy umbenannt habe und mittels cd im Rootverzeichnis lande, funktioniert das weitere Vorgehen nicht mehr weil example-dnscrypt-proxy.toml dort nicht vorhanden ist und der Befehl im Guide dann natürlich nicht funktioniert. Gibts eine Möglichkeit den Artikel zu aktualisieren? Vielen Dank.

    • Da ist wohl noch ein kleiner Fehler. Danke dir. Du kannst dem copy Befehl einfach den Pfad mitgeben. Also in etwa so :

      sudo cp /opt/dnscrypt-proxy/example-dnscrypt-proxy.toml /opt/dnscrypt-proxy/dnscrypt-proxy.toml

Schreibe einen Kommentar

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

6 − 4 =

TIPP: Jazz CD J’s SEVEN

Lust auf JAZZ? Dann hört in die CD von Komponist und Posaunist Jonathan Strieder rein. Jonathan hat mit seiner Band J’s Seven ein eigenes Album aufgenommen und veröffentlicht. Tongariro heißt es und es klingt ganz fantastisch.

Zur CD: [Link]

Besucht Jonathan Strieder auch gerne auf seiner Webseite.

Über Mich

Mein Name ist Philipp und ich beschäftige mich gerne mit Homeprojekten im Hardware- und Softwarebereich. Ich stelle dabei immer wieder fest, dass es im Internet viele unvollständige  Tutorials gibt. Daher bin ich dazu übergegangen, meine Projekte in eigenen Anleitungen festzuhalten. Diese werde ich hier möglichst verständlich und mit dem nötigen Hintergrundwissen aufbereiten. Vielleicht kann ich dabei den entscheidenden Hinweis liefern, der in vielen anderen Tutorials fehlt.

Mein Ziel ist es, dass jeder mit den Tutorials zurecht kommt und alle notwendigen Informationen erhält, um es nachmachen zu können.

Artikelreihen



Weitere Artikel dieser Reihe

Tutorials abonnieren


Unterstütze Uns

Wenn du uns unterstützen möchtest und genau wie wir einen werbefreien Blog bevorzugst, freuen wir uns über eine kleine Kaffee-Spende :).

IBAN: DE51 1203 0000 1067 7545 54
oder
PayPal Spendenlink: