DNS geht am VPN vorbei

Krik

Fleet Admiral
Registriert
Juni 2005
Beiträge
15.196
Edit: Problem ist gelöst. Termux arbeitet standardmäßig mit fest eingestellten DNS-Adressen, die nicht mit denen vom System übereinstimmen müssen.

---

Moin zusammen,

ich habe hier ein Xiaomi Redmi 12C mit Android 12 liegen. Ich habe einen Wireguard-VPN-Tunnel eingerichtet, der auch so weit funktioniert.

Es geht aber nicht, dass die DNS-Abfragen auch über das VPN laufen, denn die werden immer von Google (8.8.8.8) statt vom Pi-Hole im LAN hinter dem VPN beantwortet. Getestet habe ich das mit der Termux App und dig direkt auf dem Smartphone.

Ich habe gesehen, dass man in den Android-Einstellungen einen Private-DNS-Modus auswählen kann (Aus/Automatisch/Hostname Private-DNS-Anbieter). Stelle ich den auf Hostname und tippe die IP vom Pi-Hole im LAN ein (der via VPN ja erreichbar ist - getestet), erlaubt mir das Telefon nicht, diese Adresse zu "speichern". Der Knopf ist ausgegraut.

Woran liegt das?
Ist das es generell nicht mehr "vorgesehen", dass DNS-Abfragen auch über das VPN gehen? Das wäre bescheiden.

Gruß,
Krik
 
Zuletzt bearbeitet:
Krik schrieb:
und tippe die IP vom Pi-Hole im LAN ein
Hostname, nicht IP. Also z.B.: wie folgt;
dns.adguard-dns.com

Gruß Fred.
 
Wie hast du den WG auf dem Smartphone eingerichtet?
Ich nutze die App von Wireguard und dort ist direkt der passende (und auch vorgesehene DNS) durch die Client Config hinterlegt worden.
 
Krik schrieb:
Ich habe gesehen, dass man in den Android-Einstellungen einen Private-DNS-Modus auswählen kann (Aus/Automatisch/Hostname Private-DNS-Anbieter).
Wenn hier "Aus" gewählt wird, werden DNS-Anfragen nicht an einen anderen Anbieter als per DHCP/Wireguard-Client(?) eingestellt geleitet.

"Custom" benötigt auch einen "sicheren" DNS-Server, also DoH oder DoT, deswegen vermutlich nur per Hostname, nicht per IP. Hab ich noch nie getestet, bei mir hat "Aus" (mit lokalem Adguard per DHCP) immer funktioniert. Das sollte auch mit Wireguard funktionieren.
 
madmax2010 schrieb:
ist DoH / DoT an?
War nicht. Ich habe jetzt in unbound DoT aktiviert und die Software neugestartet. Dann habe ich am Handy die VPN-Verbindung neu aufgebaut. Keine Änderung. Es läuft weiter über Google.

FR3DI schrieb:
Hostname, nicht IP. Also z.B.: wie folgt;
dns.adguard-dns.com
Den Adguard-DNS akzeptiert er. Den Hostnamen von meinem Pi-Hole akzeptiert er auch, aber sagt dann, dass der DNS nicht erreichbar wäre.

PERKELE schrieb:
Wie hast du den WG auf dem Smartphone eingerichtet?
Ich habe die WG Tunnel App aus dem F-Droid-Store installiert. Sie optisch der offiziellen WG-App sehr ähnlich. Der dort eingetragene DNS-Server hat eine IP im 172.31.bla.bla-Netz, das von WG nur für die VPN-Clients verwendet wird.
Ich habe im NAS mit PiVPN einen WG-Server aufgesetzt und einen QR-Code fürs Handy generieren lassen. Den habe ich mit der App eingescannt und es lief - bis auf die DNS-Abfragen.

SirKhan schrieb:
Wenn hier "Aus" gewählt wird, werden DNS-Anfragen nicht an einen anderen Anbieter als per DHCP/Wireguard-Client(?) eingestellt geleitet.
Die Einstellung macht offenbar keinen Unterschied. Termux zeigt mir immer 8.8.8.8 an. Ich kann in Pihole auch keine aktuellen Abfragen vom Handy sehen. Da ist was von vor 2 Stunden drin, aber keine Ahnung, wie die zustande kommen.
 
  • Gefällt mir
Reaktionen: FR3DI
Termux ist nicht so gut zum testen weil DNS-Auflösung unter Android anders läuft als unter normalen Linux.

Unter Linux liest die libc die DNS-Server aus /etc/resolv.conf und fragt diese ab. Diagnosewerkzeuge nutzen aber nicht die libc-Funktionen für DNS-Abfragen weil die nicht alle Informationen bereitstellen die für eine Diagnose nützlich sind. Daher lesen sie die /etc/resolv.conf selber und bauen die DNS-Anfragen von Hand zusammen.

Unter Android gibt es keine zentrale /etc/resolv.conf, die libc geht da einen anderen Weg und die Apps kriegen die DNS-Server-Adressen gar nicht zu sehen. Für die Linux-Tools die über libc DNS Abfragen machen ist das egal, aber für die Werkzeuge die eine resolv.conf erwarten stellt Termux selber eine statische resolv.conf mit Google DNS (8.8.8.8) oder Cloudflare DNS (1.1.1.1) bereit, die du in ../usr/etc/resolv.conf findest. Diese Datei wird NICHT an deine aktuellen Android DNS-Einstellungen angepasst.

Edit: Zur Klarstellung; Das heißt Werkzeuge wie dig & Co. in Termux nutzen by-design nicht die selben DNS-Server wie z.B. curl und deine ganzen Android Apps. Unabhängig von deinen Android Netzwerk/VPN Einstellungen nutzt dig immer die DNS Server die in der ../usr/etc/resolv.conf stehen.

Siehe:
https://github.com/termux/termux-app/issues/130
https://github.com/termux/termux-packages/issues/1174

Die Anfragen sollten natürlich nicht am VPN vorbeigehen können. Aber woher weißt du dass sie das tun? Nur weil sie nicht bei deinem PiHole DNS ankommen heißt das nicht dass sie nicht durch den VPN gehen.

Android's Private DNS ist DNSoverTLS. Eine IP-Adresse macht also keinen Sinn, da muss ein Hostname rein. Dieser wird über den DHCP DNS zu den IP-Adressen der DNS-Server aufgelöst und gleichzeitig als Hostname zur Validierung des SSL-Zertifikats genutzt. Für Cloudflare ist die DoT-Adresse z.B. one.one.one.one. Um einen DNSoverTLS-Server selber betreiben zu können brauchst du eine öffentliche Domain und ein gültiges SSL-Zertifikat.
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: Krik und FR3DI
Zum testen würde ich mal im VPN eine Webserver Hello World aufsetzen damit man das ganze genau sehen kann

Hier als Beispiel meine config datei
INI:
[Interface]
PrivateKey = $irgendwas
Address = $irgendwas
DNS = 192.168.2.23

[Peer]
PublicKey = $irgendwas
PresharedKey = $irgendwas
Endpoint = $irgendwas
AllowedIPs = 0.0.0.0/0, ::0/0

Mit dieser config wird der ganze Traffic in meinen Tunnel und damit jede DNS Anfrage an meinen PiHole DNS weitergeleitet
 
Krik schrieb:
Den Hostnamen von meinem Pi-Hole akzeptiert er auch, aber sagt dann, dass der DNS nicht erreichbar wäre.
Sowieso mit der IP statt Hostname versuchen.
Und auf dem Smartphone mal prüfen, ob du den pihole aktuell überhaupt ansprechen kannst (z.B. mit Net Analyzer vom Smartphone)

Läuft pihole direkt auf nem raspi oder als Container?
Bei mir hatte ich anfangs Probleme im Container, da musste ich noch irgendwas umkonfigurieren, um pihole über das VPN-Netz erreichbar zu machen. Kann ich evtl. heute abend rausfinden.
 
Marco01_809 schrieb:
Die Anfragen sollten natürlich nicht am VPN vorbeigehen können. Aber woher weißt du dass sie das tun?
dig hatte immer 8.8.8.8 als antwortenden DNS-Server ausgegeben. Aber ja, die Verbindung an sich läuft dann über WG, auch die DNS-Abfrage, aber sie wird dann nicht vom lokalen DNS beantwortet, sondern geht dann stattdessen zu Google. Ok, jetzt habe ich verstanden, wie du das meinst.


Ahhh! Es geht! Ach man, ich habe mich von der Termux-App täuschen lassen. Der Pi-Hole zeigt jetzt die ganzen Abfragen an. Es hat etwas gedauert, bevor ich sie abrufen konnte.

Trotzdem vielen Dank an alle, die sich hier beteiligt haben! 💋


@kartoffelpü
Mach dir keine Umstände, aber danke für das Angebot. Pi-Hole läuft bei mir direkt auf einem MiniPC. Docker usw. sind nicht involviert.
 
Oh schau an, das war nicht eingestellt, es ging aber trotzdem. Danke!
 
Zurück
Oben