Anleitung: Eigene Domain als DDNS-Eintrag benutzen

Die meisten Cloud-Dienstleistungen haben eins gemeinsam: Sie sind unter einer „schönen“ Domain erreichbar, die man auch an Bekannte weitergeben würde. Wer sein Smart Home selbst hostet, will an irgendeinem Punkt ebenfalls über das Internet auf sein Heim zugreifen. Wie ihr dafür eure eigene Domain mit DDNS nutzen könnt, beschreibt der folgende Artikel.

Die Ausgangssituation

Um per Internet auf den eigenen Smart Home Server, wie zum Beispiel Home Assistant, zugreifen zu können, muss die öffentliche IP eures Internetanschluss bekannt sein. Wer die Home Assistant Companion App nutzt, benötigt zwingend eine öffentliche Domain für den Zugriff. Zwar ist die 24-h-Zwangstrennung aus ADSL-Zeiten mit VDSL Geschichte, doch auch VDSL- (und auch Kabel-Internet-) Anschlüssen wird bei einer Wiedereinwahl – aus welchen Gründen auch immer diese geschieht – eine neue öffentliche IP-Adresse zugewiesen.

Diese kann man nur kennen, wenn man sich innerhalb des lokalen Netzwerks befindet und Zugriff auf den Router (z.B. eine FRITZ!Box*) hat. An dieser Stelle hilft eine so genannte dynamische DNS Adresse (DDNS).

DNS steht für Domain Name System. Es ist ein Verbund aus vielen öffentlichen DNS-Servern, der dafür sorgt, dass Websites und Dienste im Internet unter schönen, lesbaren Namen, wie google.com oder yahoo.de erreichbar sind. Ohne das Domain Name System müssten wir uns IP-Adressen der einzelnen Dienste merken, um auf die Website des Anbieters zu gelangen.

DNS sorgt also dafür, dass eine domain (z.B. justiot.de) auf die IP-Adresse des Servers weitergeleitet wird, der den Webserver für die Website bereitstellt.

Im Vergleich zu einem normalen DNS-Eintrag, der den DNS A-Record von „domain.de“ auf die fixen Server-IP-Adresse „212.32.56.32“ linkt, passt ein DDNS sich bei Änderungen der öffentlichen IP-Adresse eures Internetanschlusses immer an, sodass das Zuhause jederzeit unter „domain.de“ erreichbar ist.

Das hat natürlich den immensen Vorteil, dass man sich nicht seine veränderbare öffentliche IP-Adresse merken muss, sondern ab sofort unabhängig von der aktuellen öffentlichen IP-Adresse des eigenen Internetzugangs über eine fixe Domain auf das eigene Netzwerk bzw. lokal gehostete Dienste und Server zugreifen kann.

DDNS einrichten

Damit DDNS funktioniert, haben die meisten Geräte heute einen DDNS-Client mit an Bord. Wer als Router eine FRITZ!Box 7590* verwendet oder als NAS ein QNAP oder Synology Gerät* einsetzt, kann direkt eine Verbindung zu seinem DDNS-Anbieter einrichten. Das Gerät im lokalen Netzwerk (Router oder NAS) überprüft dann in regelmäßigen Abständen, ob sich die öffentliche IP geändert hat und schickt im Falle einer Änderungen die aktualisierte IP-Adresse an den DDNS-Dienst, der dann den Eintrag so ändert, dass die neue IP wieder auf „domain.de“ zeigt.

Aus der obigen Beschreibung geht als hervor, dass zwei Dingen nötig sind, um DDNS zum Laufen zu bekommen:

  1. DDNS-fähiges Gerät im lokalen Netzwerk
  2. DDNS-Anbieter

Kommen wir zu Punkt 2, dem DDNS-Anbieter. Der bekanntest Dienst ist hier sicherlich dyndns.com, welcher neben vielen zahlungspflichtigen Produkten auch einen kostenlosen Account anbietet. Aber auch AVM (fritz!Box Hersteller) und QNAP bringen kostenlose DDNS-Dienste zu ihren Geräten mit.

Alle Gratisdienste haben aber meistens ein Problem: der zugeteilte Domainname ist immer eine Sub-Domain und auch der Host (also der Teil vor dem .ddnsdomain.com) ist teilweise nicht wählbar. Typische DDNS-Domains sind „beispiel.dyndns.com“, „testdomain.myqnapcloud.com“ oder „vd5cw23hcfmas78sdgdfd.myfritz.net“. Alles nicht wirklich schön, oder?

Die eigene Domain verwenden

Wer stattdessen lieber seine eigene registrierte .de- oder .com-Domain (oder eine Subdomain) nutzen möchte, kann das mit einem kleinen Trick tun. Dafür muss einfach ein sogenannte Canonical Name Record in den DNS-Einstellung eures Domain-Anbieters angelegt werden, der auf die Domain eures DDNS-Anbieters zeigt.

Ein Beispiel: Wir wollen, dass unser Smart Home ab sofort unter „home.justiot.de“ erreichbar ist. Also werfen wir einen Blick in die DNS-Einstellungen der Domain „justiot.de“. Hier legen wir einen neuen CNAME Record an, der die Subdomain „home“ auf „vd5cw23hcfmas78sdgdfd.myfritz.net“ zeigen lässt. Sobald der Eintrag gespeichert und im DNS-Netzwerk propagiert wurde – das kann bis zu 48 Stunden dauern – ist eure öffentliche IP eures Internetanschlusses direkt via „home.justiot.de“ erreichbar.

CNAME DNS Eintrag erstellen

Beispiel aus der DNS-Verwaltung von Lansol.de

Es bildet sich also eine Art Kette: Anfrage an „home.justiot.de“ -> zeigt auf „vd5cw23hcfmas78sdgdfd.myfritz.net“ -> wurde per DDNS Client im lokalen Netzwerk auf IP „212.32.56.32“ gesetzt.

CNAME genehmigen

Was einem bei einem CNAME bewusst sein muss: Der CNAME-Eintrag ist KEINE Weiterleitung. Er „überschreibt“ in diesem Falle die Domain auf die er zeigt. Ihr bekommt also fortan in der Browserleiste nur noch „home.justiot.de“ anstatt „vd5cw23hcfmas78sdgdfd.myfritz.net“ angezeigt. Das ist auch genau das, was wir erreichen wollten und hat den Vorteil, dass sich ohne Probleme auch ein SSL-Zertifikat für die eigene Domain oder Sub-Domain besorgen lässt.

Es kann nur zu einem Problem kommen: Das lokale Gerät (z.B. NAS) über das ihr aus dem Internet über den CNAME Record zugreifen wollt, überwacht die Hostnamen, die es als „sicher“ erachtet. Es prüft also, ob der Hostname über den die Anfrage hereinkommt, auf einer Whitelist steht. Beispiel hierfür ist z.B. die NextCloud (eine Art selbst gehostete DropBox). In diesem Fall müsst ihr dem Gerät / Server beibringen, dass „home.justiot.de“ ab sofort ein sicherer Hostname ist und Anfragen ganz normal beantwortet werden dürfen.

Gleiches gilt auch für Home Assistant. Hier gibt es bei Verwendung einer SSL verschlüsselten Verbindung immer nur genau einen Hostnamen mit dem ihr auf euer Smart Home zugreifen könnt. In Falle von Home Assistant wird dieser Hostname direkt in der configuration.yaml festgelegt und muss dann auch bei Zugriff aus dem lokalen Netzwerk verwendet werden. Ein direkter Zugriff über die IP-Adresse des Home Assistant Hubs wird dann ebenfalls abgeblockt.

CNAME mit einem SSL-Zertifikat schützen

Natürlich sollte jeglicher Zugriff auf Dienste in eurem Smart Home, die von außerhalb über das Internet erfolgen und über das http-Protokoll abgehandelt werden, verschlüsselt sein. Dafür wird bekanntermaßen ein SSL-Zertifikat eingesetzt.

Um die Subdomain, die ihr für euren CNAME verwendet habt mit SSL zu verschlüsseln, müsst ihr ein entsprechendes SSL-Zertifikat erwerben oder beispielsweise über den kostenlosen Dienst Let’s Encrypt generieren. Beides hat seine Vor- und Nachteile. Bei Letzterem müsst ihr einen kleinen Server einrichten, der das Zertifikat alle 30 Tage erneuert. Das Problem daran ist: Ihr müsst die generierten Zertifikatsdateien dann noch für jeden einzelnen Dienst installieren der per SSL über den CNAME erreichbar sein soll.

Ein Beispiel: Ihr habt einen Raspberry Pi Computer laufen, der für die Aktualisierung des Let’s Encrypt Zertifikates für die Domain „home.justiot.de“ sorgt. Damit ist das Zertifikat für die Domain dann zwar gültig und wird bei Zugriffen auch als solches angezeigt.

Damit aber ein Dienst mit einem gültigen SSL-Zertifikat angesprochen werden kann, z.B. Home Assistant, müsst ihr das SSL-Zertifikat natürlich auch für den konkreten Dienst installieren. Und zwar für jeden Dienst einzeln. Egal ob QNAP NAS*, Nextcloud oder einen anderen Server. Das Zertifikat hängt nämlich nicht direkt an der Domain sondern wird bei einem Aufruf eines Dienstes durch diesen zur Verfügung gestellt. Für die Gültigkeitsprüfung sorgt dann der Webbrowser, der die aufgerufene URL mit der Domain des Zertifikats vergleicht.

Jetzt wird schon klar, warum die Let’s Encrypt Lösung bei vielen verschiedenen gehosteten Diensten, die unter einem CNAM-DDNS-Eintrag erreichbar sein sollen schwierig wird. Jedes Mal wenn das Zertifikat erneuert wird, muss es auch auf allen Diensten die ihr laufen habt neu installiert werden. Das ist nervig und macht wenig Spaß.

Eine gute Alternativ ist für mich daher der Kauf eines Zertifikates für einen längeren Gültigkeitszeitraum. Drei Jahre sind zum Beispiel üblich. Das kostet dann knapp 10 Euro und ihr könnt das SSL-Zertifikat einmalig einrichten, euren privaten Schlüssel generieren und das Schlüsselpaar dann ganz gemütlich einmalig in allen Diensten einrichten. Statt nach 30 Tagen, kommt es dann erst in über 1000 Tagen zu einem notwendigen Austausch der Zertifikatsdateien. In jedem Fall das Datum des Ablaufs gut in den Kalender eintragen und rechtzeitig ein neues Zertifikat ordern. Sonst kann es passieren, dass euch der Zugriff auf die eigenen vier Wände verloren geht.

Eine weitere Möglichkeit ist natürlich, wo es geht, auf einen direkt Zugriff via https zu verzichten und den Dienst nur lokal im Netzwerk erreichbar zu machen. Für den Zugriff von außen über das Internet bietet sich in diesem Fall die Einrichtung eines VPN-Servers an. Das kann man mit der Fritz!Box* realisieren, aber auch QNAP hat für seine NAS-Modelle einen VPN-Server im Angebot. Wer, wie ich, mit pfsense unterwegs ist, hat natürlich ebenfalls mehr als genug Möglichkeiten.

Mit dem VPN-Server habt ihr außerdem eine verschlüsselte Verbindung, auch wenn ihr euch mit einer unverschlüsselten CNAME-Domain verbindet. Nach dem Aufbau der VPN-Verbindung stehen alle lokalen Dienste zur Verfügung, als wärt ihr mit eurem Endgerät gerade im eigenen Netzwerk via WLAN oder Ethernet verbunden. Zugegeben: In vielen Fällen ist VPN keine Option. Für Home Assistant und die Verwendung der Home Assistant Companion App führt kein Weg an einem SSL-Zertifikat für die CNAME-Domain vorbei. Leider.

Schlusswort

Die eigene Domain gibt es im Falle von .de Toplevel-Adressen schon für knapp 6 Euro im Jahr. Ein SSL-Zertifikat ist nicht viel teurer. Wer sein Smart Home Projekt also ernst nimmt, hat mit dem CNAME-Record in Verbindung mit DDNS eine tolle Möglichkeit, seine eigene Domain mit dem Smart Home Hub zu Hause zu verbinden.

Das Ganze sieht nicht nur professioneller aus, es sorgt auch dafür, dass man alle seine lokal gehorteten Dienste unter einer URL erreichen kann. Gerade wenn ihr gerne Fotos vom letzten Urlaub an Freunde auf eurem NAS teilen wollt, ist eine eigene Domain doch deutlich schöner und auf den ersten Blick auch vertrauenserweckender, als eine kryptische dynamische DNS-Domain. Aber vielleicht ist das auch nur Geschmacksache. 🙂

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.