Ausgangslage: im WLAN nutzt das iphone den pihole im LAN und ist dadurch werbefrei. Im Mobilfunknetz nutzt es den von T-Mobile vorgegebenen Standard und zeigt deshalb Werbung an. Weil apple nicht einfach die Einstellung eines eigenen DNS-Servers erlaubt, war das bis jetzt nicht zu ändern.
Abhilfe
Auf dem root-Server pihole installieren, mit traefik dafür sorgen, dass er auf port 853 TLS-verschlüsselte DNS-over-TCP Requests entgegennimmt. Diesen Server in einen Profilgenerator eintragen und das Profil auf dem iphone laden und aktivieren. Wichtig: Wenn der Server nicht per verschlüsseltem DOT befragt wird, laufen die DNS-Abfragen im Klartext durchs Netz. Privatsphäre ade…
Sperren von Port 53 nach außen
crontab -e
#
@reboot ufw deny 53/udp ; ufw deny 53/tcp
Traefik-Einstellungen
ports:
# DNS over TCP
- "853:853" labels:
# DNS over TLS proto
# Source - https://stackoverflow.com/a/78160723
- "traefik.tls.option.default.alpnProtocols=http/1.1,h2,dot"
entryPoints:
# ...
dot:
address: ":853/tcp"
transport:
lifeCycle:
requestAcceptGraceTimeout: 0
respondingTimeouts:
readTimeout: 0
writeTimeout: 0
idleTimeout: 0pihole docker-compose labels
# --- TCP für DNS-over-TLS (DoT) ---
- "traefik.tcp.routers.${SERVICE}-dot.rule=HostSNI(`${HOST}`)"
- "traefik.tcp.routers.${SERVICE}-dot.entrypoints=dot"
- "traefik.tcp.routers.${SERVICE}-dot.tls=true"
- "traefik.tcp.routers.${SERVICE}-dot.tls.certresolver=cloudflare"
- "traefik.tcp.routers.${SERVICE}-dot.service=${SERVICE}-dot"
# Pi-hole hört auf Port 53 (TCP) für unverschlüsseltes DNS
- "traefik.tcp.services.${SERVICE}-dot.loadBalancer.server.port=53" Testen
auf dem Desktop-Rechner
kdig -d @89.xx.xx.xxx +tls-ca +tls-host=pi.meine.domäne heise.de
openssl s_client -connect pi.meine.domäne:853 -alpn dot -tls1_3