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:
- Das Gerät kann mehrere „Aliase“ haben- zB. sollte es entweder unter
backup
oderdocker
unternas
dem 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
- 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
- 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 mDNS
Protokoll verwendet broadcast
, das nicht über die VPN-Verbindung weitergeleitet wird. Die mDNS
Antworten 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 mDNS
VPN „umgangen“ wird und auf das lokale Netzwerk zugegriffen wird.
Verwendung mDNS
über den DNS
Heimserver
Ich hoste meinen eigenen DNS
Server zu Hause. Die Idee ist, dass dies meine ersten beiden Bedürfnisse lösen sollte. Es ist jedoch nicht empfehlenswert *.local
, Datensätze auf DNS
dem Server zu haben. Beispielsweise dig
wird 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 DNS
Server 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 DNS
mit 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 DNS
Server richtig zu verwenden.
✅ Gerät kann mehrere „Aliase“ haben
Danke an DNS
den Server.
✅ Das Gerät sollte über ein zu Hause gehostetes VPN von der Ferne aus zugänglich sein
Der Zugriff auf den DNS
Server 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 DNS
Server 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.17
Aufzeichnungen in der Öffentlichkeit hat DNS
.
✅ Gerät kann mehrere „Aliase“ haben
Danke an DNS
den Server.
✅ Das Gerät sollte über ein zu Hause gehostetes VPN von der Ferne aus zugänglich sein
Der Zugriff auf den DNS
Server 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
DNS
Da die öffentliche Domäne auf einem öffentlichen Server gehostet wird, docker.example.com
sollte sie (wie die Domäne) von überall auflösbar sein superuser.com
.
⚠️ Allerdings ist das hier unsicher:
- Ich würde alle meine Gerätenamen und ihre (privaten) IP-Adressen im Internet preisgeben
- Beim Zugriff
docker.example.com
von außerhalb des Heimnetzwerks (bei der Arbeit, im Café usw.) würde ich mich192.168.0.17
mitihrelokales 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.