Out of the box kann Pi-hole bisher kein DoH, aber ein Docker Container eilt zur Hilfe: crazymax/cloudflared
Diesen kann man zusammen mit Pi-Hole starten und via TUNNEL_DNS_UPSTREAM einen oder mehrere DoH Server mitgeben. Pi-Hole bekommt dann den Container als DNS Server und nutzt dann (in-) direkt DoH.
version: "2.1"
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
- "53:53/tcp"
- "53:53/udp"
- "8000:80/tcp"
- "8443:443/tcp"
environment:
TZ: Europe/Berlin
WEBPASSWORD: zaewooQu0kaequaZ
DNS1: 192.168.1.130#5053
DNS2: 192.168.1.105#5053
ServerIP: 192.168.1.105
VIRTUAL_HOST: pihole.fritz.box
volumes:
- './etc-pihole/:/etc/pihole/'
- './etc-dnsmasq.d/:/etc/dnsmasq.d/'
dns:
- 127.0.0.1
- 46.182.19.48
restart: unless-stopped
networks:
- pihole_net
depends_on:
- cloudflared
cloudflared:
image: crazymax/cloudflared:latest
container_name: cloudflared
ports:
- "5053:5053/udp"
- "49312:49312/tcp"
environment:
TZ: "Europe/Berlin"
TUNNEL_DNS_UPSTREAM: "https://anycast.uncensoreddns.org/dns-query,https://unicast.uncensoreddns.org/dns-query,https://dns.digitale-gesellschaft.ch/dns-query,https://dot.ffmuc.net/dns-query"
TUNNEL_DNS_PORT: 5053
restart: unless-stopped
networks:
- pihole_net
networks:
pihole_net:
enable_ipv6: true
driver: bridge
driver_opts:
com.docker.network.enable_ipv6: "true"
ipam:
driver: default
config:
- subnet: fc00::/64
Bei mir sind das dann 192.168.1.130#5053 und 192.168.1.105#5053. Redundanz muss sein. ? Und via Port 49312 gibt es noch ein paar Metriken im Prometheus Format.
DoT (DNS over TLS) wäre auch eine Alternative, habe ich bisher aber nicht ausprobiert. Vielleicht bekommt Pi-hole ja auch irgendwann einmal native DoH oder DoT Unterstützung, dann sind Bastellösungen wie diese überflüssig.
Abschließend: Braucht man das wirklich? Nein, kann man aber.
Kleines Update vom 04.02.2021: IPv6 Konfiguration hinzugefügt, damit Pi-Hole als auch Cloudflared via IPv6 erreichbar sind im LAN.