Pi-Hole – DNS-over-TLS (DoT) mit nginx

Seit Android 9 unterstützen Smartphones die eingabe von eigenen DNS-Servern. Hierbei nutzt Android aber nur DNS-over-TLS statt eine normale DNS-Abfrage oder DNS-over-HTTPS.
Auch mit dem PC lässt sich DNS-over-TLS nutzen, soweit man die Browser dazu zwingt.
Vorteile von Pi-Hole und DNS-over-TLS sind:
– Abfragen werden verschlüsselt übertragen
– Werbung wird in Android-Apps besser geblockt
– Keine weiteren Apps mehr für Verbindungsaufbau zum DNS-Anbieter ab Android 9 mehr notwendig

Unser Ziel:

DNS-Abfragen werden via DoT an unser Pi-Hole übermittelt, um Werbung effizienter zu blocken und DNS-Abfragen zu verschlüsseln.
Hierbei nutzen wir nginx als DoT-Proxy

Diese Anleitung beschreibt aber nur die Installation des DNS-over-TLS-Supports. Sie baut auf schon bisheriges auf!

Was brauchen wir?

nginx als Webserver
Eine laufende Pi-Hole-Installation
– Eine Domain (auch Sub-Domain möglich)
– Let‘s Encrypt
– Am besten eine statische IP
– Port 853
– Vollen Zugriff auf den nginx-Server

Los gehts!

1. Installiert nginx als Webserver für das Pi-Hole.
Wie das funktioniert, habe ich HIER schon einmal niedergeschrieben.

2. Legt ein neuen Ordner für die Konfiguration bei nginx an:

# mkdir /etc/nginx/streams/

3. Erstellt ein Zertifikat für eure Domain mit dem Certbot

certbot certonly -d deine.domain.de

4. Legt eine neue Konfigurationsdatei in dem gerade erstellten Ordner an:

# nano /etc/nginx/streams/dns-over-tls

5. Diese befüllen wir mit folgendem Inhalt:

    upstream dns-servers {
<strong>server    127.0.0.1:53</strong>;
}
server {
listen 853 ssl; # managed by Certbot
ssl_certificate /etc/letsencrypt/live/DEINE.DOMAIN.DE/fullchain.pem; # managed by Certbot
ssl_certificate_key /etc/letsencrypt/live/DEINE.DOMAIN.DE/privkey.pem; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
ssl_protocols        TLSv1.2 TLSv1.3;
ssl_ciphers          HIGH:!aNULL:!MD5;

ssl_handshake_timeout 10s;
ssl_session_cache shared:SSL:20m;
ssl_session_timeout 4h;
proxy_pass dns-servers;
}

Ändert die fett markierten Werte ab.
server = Tragt hier die IP inkl. Port eures Pi-Holes ein.
Solltet ihr mehrere Pi-Holes nutzen, könnt ihr diese einfach darunter einfügen, indem ihr den Eintrag kopiert.
ssl_certificate = Tragt hier den Pfad zu den SSL-Zertifikaten ein (es reicht eigentlich, wenn ihr nur die Domain abändert, soweit ihr den Speicherort nicht geändert habt)

6. Bindet die neue Konfiguration in der nginx.conf nun ein.
Am einfachsten ganz unten hinzufügen.

nano /etc/nginx/nginx.conf
stream {
include /etc/nginx/streams/*;
}

7. Testen die Config und startet dann nginx neu

# nginx -t
# systemctl restart nginx

Es dürfte kein Fehler beim Neustarten auftreten, soweit ihr alles richtig gemacht habt.

Nun können DoT-Anfragen an euer Server senden.
Tragt hierzu z.B. bei Android in den DNS-Einstellungen eure.Doiman.de ein und drückt auf OK.
Schon laufen alle DNS-Anfragen über DoT an euer Pi-Hole!


Zu faul DoT einzurichten oder keine eigene Domain / Server im Internet?
Nutze doch einfach mein Pi-Hole inkl. DNS-over-TLS-Support!
Alle weiteren Infos zum Pi-Hole gibts HIER.
Garantiert kein Logging und keine Werbung!

3 Kommentare

  1. Hallo,
    könntest du auch noch eine Anleitung für Einrichtung von DoH DNS-over-HTTPS bereitstellen? FireFox z.B. bietet nur die Möglichkeit über DoH an (DoT wird da nicht unterstützt).

  2. Pingback:Pi-Hole – DNS über HTTPS (DoH) mit nignx - Hoerli.NET

Kommentar verfassen