Universelles Home-DNS

Universelles Home-DNS

Ich habe viele Netzwerkgeräte zu Hause und möchte, dass diese über das Netzwerk auf benutzerfreundliche Weise zugänglich sind. Ich möchte nicht, dass die Geräte direkt über das Internet erreichbar sind.

Meine Bedürfnisse:

  1. Das Gerät kann mehrere „Aliase“ haben- zB. sollte es entweder unter backupoder dockerunter nasdem Namen erreichbar sein
    • Weil ich mehrere Dienste auf einem Gerät betreibe und sie gerne unterscheide, mit der Möglichkeit, sie auf ein anderes Gerät zu verschieben
  2. Das Gerät sollte über ein zu Hause gehostetes VPN von der Ferne aus zugänglich sein.
    • Weil ich auf mein NAS zugreifen und Backups von einem entfernten Standort aus durchführen möchte
  3. Das Gerät muss von der Heim-Workstation aus erreichbar sein, die mit dem VPN der Arbeit verbunden ist.
    • Weil ich manchmal von zu Hause aus arbeite und trotzdem auf mein lokales Netzwerk zugreifen möchte

Im Laufe der Jahre habe ich die folgenden Lösungen ausprobiert. Keine davon erfüllt jedoch alle meine Anforderungen ohne Kompromisse.

Verwenden vonmDNS

Dies war meine Erstkonfiguration. Auf die Geräte kann zugegriffen werden unterhostname.local

❓ Gerät kann mehrere „Aliase“ haben

Es ist möglich, mehrere mDNS-Namen pro Gerät zu haben, ich habe dies jedoch aufgrund des folgenden Problems nie näher untersucht

❌ Das Gerät sollte über ein zu Hause gehostetes VPN von der Ferne aus zugänglich sein.

Es wird ein mDNSProtokoll verwendet broadcast, das nicht über die VPN-Verbindung weitergeleitet wird. Die mDNSAntworten der Geräte können den VPN-Client nicht erreichen.

✅ Das Gerät muss von einem Heimarbeitsplatz aus erreichbar sein, der mit dem VPN der Arbeit verbunden ist

Dies funktioniert einwandfrei, da das mDNSVPN „umgangen“ wird und auf das lokale Netzwerk zugegriffen wird.

Verwendung mDNSüber den DNSHeimserver

Ich hoste meinen eigenen DNSServer zu Hause. Die Idee ist, dass dies meine ersten beiden Bedürfnisse lösen sollte. Es ist jedoch nicht empfehlenswert *.local, Datensätze auf DNSdem Server zu haben. Beispielsweise digwird eine Warnung ausgegeben

$ dig docker.local
...
;; WARNING: .local is reserved for Multicast DNS
;; You are currently testing what happens when an mDNS query is leaked to DNS
...
✅ Gerät kann mehrere „Aliase“ haben

Obwohl es nicht empfohlen wird, werden die Namen korrekt aufgelöst.

✅ Das Gerät sollte über ein zu Hause gehostetes VPN von der Ferne aus zugänglich sein

Der Zugriff auf den DNSServer erfolgt im einfachen Anfrage-Antwort-Verfahren und ist daher vollständig VPN-kompatibel.

❌ Das Gerät sollte von der Heim-Workstation aus erreichbar sein, die mit dem VPN der Arbeit verbunden ist

Dies funktioniert nicht, da die Arbeitsstation den Arbeits-DNS innerhalb des VPN verwendet, der (offensichtlich) keine Einträge für mich hat docker.local.

Verwenden eines Heimservers DNSmit einer benutzerdefinierten Nur-Heim-Domäne

Dies sollte der richtige Weg sein. Ich habe beispielsweise meine eigene Home-Domäne erstellt myplace(um zwielichtige Verhaltensweisen zu vermeiden *.home) und den DHCP-Server diese Domäne für alle Geräte festlegen lassen. Die Idee war, den DNSServer richtig zu verwenden.

✅ Gerät kann mehrere „Aliase“ haben

Danke an DNSden Server.

✅ Das Gerät sollte über ein zu Hause gehostetes VPN von der Ferne aus zugänglich sein

Der Zugriff auf den DNSServer erfolgt im einfachen Anfrage-Antwort-Verfahren und ist daher vollständig VPN-kompatibel.

❌ Das Gerät sollte von der Heim-Workstation aus erreichbar sein, die mit dem VPN der Arbeit verbunden ist

Dies funktioniert nicht, da die Arbeitsstation den Arbeits-DNS innerhalb des VPN verwendet, der (offensichtlich) keine Einträge für mich hat docker.myplace.

Nutzung öffentlicher DNSServer mit öffentlicher Domain (bisher nur theoretisch)

Ich bezahle auch für die öffentliche Domain, also lass es so sein example.com. Die Idee ist, das dritte Bedürfnis aus der vorherigen Lösung zu erfüllen, indem man z. B. docker.example.com = 192.168.0.17Aufzeichnungen in der Öffentlichkeit hat DNS.

✅ Gerät kann mehrere „Aliase“ haben

Danke an DNSden Server.

✅ Das Gerät sollte über ein zu Hause gehostetes VPN von der Ferne aus zugänglich sein

Der Zugriff auf den DNSServer erfolgt im einfachen Anfrage-Antwort-Verfahren und ist daher vollständig VPN-kompatibel.

✅ Das Gerät muss von einem Heimarbeitsplatz aus erreichbar sein, der mit dem VPN der Arbeit verbunden ist

DNSDa die öffentliche Domäne auf einem öffentlichen Server gehostet wird, docker.example.comsollte sie (wie die Domäne) von überall auflösbar sein superuser.com.

⚠️ Allerdings ist das hier unsicher:

  1. Ich würde alle meine Gerätenamen und ihre (privaten) IP-Adressen im Internet preisgeben
  2. Beim Zugriff docker.example.comvon außerhalb des Heimnetzwerks (bei der Arbeit, im Café usw.) würde ich mich 192.168.0.17mitihrelokales Netzwerk. Dies kann auf verschiedene Weise enden
    • Adresse existiert nicht - Verbindung schlägt einfach fehl
    • Adresse existiert - ich würde mich mit dem Gerät einer anderen Person verbinden, was sehr gefährlich sein könnte (z. B. bei unsicheren Verbindungen)

Hat jemand eine bessere Idee, wie das geht?

Antwort1

Dies funktioniert nicht, da die Arbeitsstation den Arbeits-DNS innerhalb des VPN verwendet, der (offensichtlich) keine Einträge für mein Docker.myplace hat.

Internes Home-DNS würde funktionieren, wenn Ihr Betriebssystem Split-DNS unterstützen würde. Beispielsweise gibt es bei systemd-aufgelöstem Linux mehrere Sätze von <Domänen, DNS-Servern> (einen pro Netzwerkschnittstelle), sodass Sie VPN-DNS-Server für Arbeitsdomänen, aber Home-DNS für alles andere haben können – oder umgekehrt, Home-DNS für „.home.arpa“, aber VPN-DNS für alles andere. Vor systemd war es auch möglich, dnsmasq oder Unbound einzurichten, um dasselbe zu erreichen.

(Nicht zu verwechseln mit „Split-Brain“- oder „Split-View“-DNS, was eine serverseitige Sache ist.)

Windows scheint dies in seiner DNS-Serversoftware als "bedingte Weiterleitung" zu bezeichnen, undkönnteunterstützen es für den integrierten VPN-Client (IKEv2), obwohl Unternehmens-VPNs es wahrscheinlich nicht zulassen werden.

Ich würde alle meine Gerätenamen und ihre (privaten) IP-Adressen im Internet preisgeben

Ist dasGenau genommenaber ein Problem? Gerätenamen sind, nun ja, Namen – sie kommen mir nicht als von Natur aus private Sache vor (obwohl ich vielleicht eine etwas altmodische Sicht darauf habe, aus der Zeit, als dies in Heimnetzwerken noch recht üblich war); und die IP-Adressen haben außerhalb Ihres Heim-LAN sowieso keine Bedeutung.

Sie können jedoch immer eine Mischung aus beidem verwenden: Verwenden Sie öffentliche DNS-Namen (vielleicht generische Namen wie docker) für die ausgewählten Geräte, auf die Sie von der Arbeitsstation aus zugreifen müssen, aber verwenden Sie für alles andere interne DNS. Auf den meisten PCs ist es möglich, mehr als ein Domänensuffix zu konfigurieren (und sogar eine Liste über DHCP bereitzustellen).

Wenn ich von außerhalb des Heimnetzwerks (bei der Arbeit, im Café usw.) auf docker.example.com zugreife, verbinde ich mich mit 192.168.0.17 in ihrem lokalen Netzwerk. Dies kann auf verschiedene Weise enden

IPv6 wäre hierfür die übliche „Lösung“; ein zufällig generiertes privates IPv6-Präfix hätte etwa 56 eindeutige Bits, was normalerweise mehr als ausreichend ist, um Kollisionen zu vermeiden.

verwandte Informationen