Lokaler https (duckdns) Zugriff auch bei Internetausfall

Hallo alle zusammen,

folgendes Problem: ich habe Home Assistant auf einen Raspberry Pi 4 eingerichtet und habe durch DuckDNS verschlüsselten Zugriff auf die Weboberfläche.
Grundsätzlich funktioniert das ja auch soweit, nur habe ich des öfteren das Problem, dass ich beim Zugriff auf die Weboberfläche ab und an mal recht lange im ‘Ladebildschirm’ fest hänge und einloggen sich manchmal etwas ziehen kann.
Das mag unterwegs noch akzeptabel sein, da ich da seltener etwas steuere sondern nur nachschauen will.
Allerdings nervt mich das schon, wenn ich Zuhause bin - außerdem ist das größte Problem, dass dadurch kein Zugriff auf die Weboberfläche möglich ist, wenn das Internet gerade gestört ist.
Jetzt ist natürlich das Problem, dass durch DuckDNS und der Verschlüsselung nur meine DuckDNS-Subdomain zertifiziert ist. Wenn ich die lokale IP meines Raspberrys aufrufe, kann ich zwar am PC mit dem Browser den Sicherheishinweis wegen dem Zertifikat ignorieren/überspringen, aber in der Home Assistant App mit dem Smartphone geht das natürlich nicht.
Also habe ich mich mal ein wenig umgeschaut und anscheinend soll ein Reverse Proxy die Lösung sein und habe mich an NGINX Home Assistant SSL proxy versucht, doch bringt mich das so langsam an den Rand des Wahnsinns. Denn nichts will funktionieren.

Ich bin schon zig Tutorials durchgegangen, auch simons (youtube.com/watch?v=UZozmfh8QY8) doch jeder macht das irgendwie anders, die meisten sind auch veraltet.
Was ich bisher gemacht habe:

  1. NGINX Home Assistant SSL proxy installiert, in der Konfiguration in der Zeile “Domain” meine DuckDNS-Subdomain ohne https und port eingegeben (z.b. blabla.duckdns.org).
  2. Ich musste in der untersten Zeile den Port HTTPS (SSL) Port ändern (z.B. auf 8124), da die Fritzbox irgendwie verhindert, den Port 443 für etwas anderes freizugeben, als für die Fritz!Box eigene Weboberfläche.
    Internet → MyFritz!-Konto ist deaktiviert.
    Internet → Freigaben → Portfreigaben hier ist bisher ausschließlich nur eine einzige Portfreigabe und das ist die 8123 (alte Freigabe für DuckDNS ohne NGINX) für Home Assistant und keine für die Fritzbox.
    Internet → Freigaben → FRITZ!Box-Dienste sind alle deaktiviert.
    Trotzdem ist bei Diagnose → Sicherheit der Port 443 für “Zugriff auf die FRITZ!Box Oberfläche (HTTPS)” gelistet. Ich bekomme das einfach nicht weg und lande bei der Eingabe meiner DuckDNS-Subdomain:443 immer wieder auf der Weboberfläche der Fritz!Box.
  3. Home Assistant → System → Netzwerk → Home Assistant URL → Internet: https://[meine subdomain].duckdns.org:8124
    Lokales Netzwerk: Automatisch
  4. Da ich für die ursprüngliche Einrichtung von DuckDNS folgende Zeilen in der configuration.yaml benötigte, habe ich diese von
http:
  ssl_certificate: /ssl/fullchain.pem
  ssl_key: /ssl/privkey.pem
  ip_ban_enabled: true
  login_attempts_threshold: 5

zu

http:
  #ssl_certificate: /ssl/fullchain.pem
  #ssl_key: /ssl/privkey.pem
  ip_ban_enabled: true
  login_attempts_threshold: 5
  use_x_forwarded_for: true
  trusted_proxies:
    - 172.30.33.0/24

abgeändert (habe die ersten zwei Zeilen auskommentiert und sollten damit keine Funktion mehr haben).

Wenn ich jetzt in der Fritz!Box den Internetzugriff für den Raspberry Pi ausschalte (um eine Störung vom Internet zu simulieren), kann nur über die https IP auf Home Assistant zugreifen, was natürlich mit dem Zertifikat Probleme gibt und somit ist eine Steuerung via App weiterhin nicht möglich.

Was denkt ihr, was das Problem sein könnte?
Eines möchte ich nur anmerken, ich bin kein Profi, ich versuche mir das Wissen durch Tutorials und co. anzueignen, ich wäre euch Dankbar, wenn ihr bei eurer Hilfestellung berücksichtig, dass ich kein tiefgreifendes Wissen habe.

Vielen Dank schon mal.

Die beste Lösung ist weg von DuckDNS. Das macht nur Probleme. Nimm ipv64.net oder noip, da wirst du nie Probleme haben.

Ansonsten stimmt dein Portforwarding nicht. Port 443 darf nicht auf die Oberfläche deiner Fritz führen. Schau mal unter Internet - Freigaben - Reiter Fritzbox Dienste - hier muss internetzugriff auf die Fritzbox per https deaktiviert werden

2 Dinge, das Zertifikat musst du im HA drin haben, da dein Internet nicht da ist kann die Validierung ja nicht bei duckdns laufen, und…dein Router muss das wissen das du dein HA via DuckDNS-Adresse aufrufen willst. Je nach Router kann du im Router selbst die DuckDNS-Adresse hinterlegen und die HA-IP bzw. den Hostnamen zuweisen, dann wird die DuckDNS Adresse intern aufgelöst.

Sieht bei OpenWRT zum Beispiel so aus

meine Nginx Config

image

und eine Kopie meines öffentlichen Zertifkats im SSL-Ordner von HA
image

und dann wuppt das auch ohne Internet

1 „Gefällt mir“

Danke für den Tipp mit ipv64.net das werde ich mir mal genauer anschauen und ausprobieren.

Wie bereits im Text oben geschrieben, sind die beiden Haken Dienste unter Internetzugriff (HTTPS aktiviert und FTP/FTPS aktiviert) entfernt und somit deaktiviert.

Meine Fritzbox sendet auf jeden fall die Updates an DuckDNS mit der aktuellen externen IP Adresse.
Ob und wie ich bei der Fritz!Box meine DuckDNS-Subdomain direkt auf die Lokale IP umleiten kann, muss ich erstmal schauen wie das geht.
Wenn ich das richtig verstanden habe, wird dadurch ja dann zu keiner Zeit ein Zugriff außerhalb des Lokalen Netzwerks benötig, so lange ich Zuhause bin, oder?

Die beiden Dateien fullchain.pem und privkey.pem sind bei mir bereits im SSL Ordner.

Zum Bild mit den 3 IP Adressen in der Configuration.yaml:
127.0.0.1 müsste ja bei jedem Gerät die eigene “interne” Adresse (oder so ähnlich).
172.30.33.0/24 Die IP scheint irgendwie sich auf NGINX zu beziehen, die hatte ich schon drin stehen und findet sich soweit eigentlich in jeder Anleitung.
Doch wie kommst du zur 192.168.166.0/23 ? Ist das die des Routers/Standardgateway?

127.0.0.1 ist immer das Gerät selbst.

192.168. und 172.30. sind beides private IP Adressbereiche, die nur im lokalen Netzwerk erreichbar sind.

Dein Problem bei den Zertifikaten ist, dass Du eben kein gültiges Zertifikat hast, wenn Du nicht über die zertifizierte URL aufrufst. Wenn es über eine andere erfolgt, soll ja eine Warnung kommen.

Das kann man entweder intern umbiegen oder sich für die private IP ebenfalls ein korrektes Zertifikat anlegen…

Intern umbiegen geht dann wie?

Wenn ich das richtig verstanden habe, benötige ich dann im Endeffekt 2 DuckDNS-Subdomains oder?

Die eine hat immer meine statische lokale IP des Raspberry Pi (somit nur innerhalb des Netzwerks erreichbar) und die andere Subdomain (für den Zugriff von außerhalb des Netzwerks) immer die externe IP?
Dann müsste ich wohl auch 2 Server in der App anlegen, vermute ich?

Ja, wenn du intern am Router die DuckDNS Adresse auflösen kannst, dann geht die Box nicht ins Internet um da nachzufragen.

Das 172er Netz sind sie Docker-Container und das 192er Netz ist mein privates Netz, damit der Aufruf via https und dem „externen“ Namen auch reingelassen wird.

Nein. Du hast doch ohnehin eine (IP-) Adresse für lokalen und eine für externen Zugriff, die Du in der Companion App konfigurieren kannst.

Meinst du dann den Punkt hier?:
Home Assistant → System → Netzwerk → Home Assistant URL
Internet: https://[meine-subdomain].duckdns.org:8123
Lokales Netzwerk: https://[lokale-ip-des-raspberry]:8123

Ja. Nur in dem Fall wirst Du Probleme bekommen, weil es für die lokale IP-Adresse kein gültiges Zertifikat gibt.

Daher die Überlegung, dass man eine zweite Domain auf eine lokale IP zeigen lässt und dafür ein zweites Zertifikat erhält.

@Thirteen37 hast Du in der Sache Erfolg gehabt und wenn ja, wie hast Du es gelöst? Ich stehe vor dem gleichen Problem wie Du.

Leider nicht. Da ich, wie gesagt, nicht vom Fach bin, wäre ich auf detaillierte Anleitungen angewiesen.
Da ich nichts finden konnte, habe ich das Ganze aufgegeben.

Lass hier doch bei lokales Netzwerk das http statt https. Bei mir bringt das keinen Fehler in der App…

Internet: https://[meine-subdomain].duckdns.org:8123
Lokales Netzwerk: http://[lokale-ip-des-raspberry]:8123

Das funktioniert nur mit Proxy. Ist ein Zertifikat in HA eingerichtet, wird die unverschlüsselte Verbindung deaktiviert.

Guten Morgen,

ich habe mein HA über ein Proxy und Split-DNS eingerichtet. Du brauchst neben deinem HA und einem Proxy einen DNS Server. Die FritzBox kann das nicht machen.
Ich benutze dafür ADGuard Home und dort werden die Namen per “DNS-Umschreibungen” auf eine IP Adresse aufgelöst.
Da HTTPS Zertifikate nichts mit der IP Adresse zu tun hat sondern nur mit der URL*.

  1. In meinem Nginx-Proxy habe ich die IP Adresse von HA eingetragen und für meine Domain “familienspitznamen.eu” ein Zertifikat erstellt. Die Domain wird von Strato gehostet weil die Dyndns können und ich die Domain billig im Sale bekommen habe*².
    In HA lasse ich nur Verbindungen intern zu also über die Private IP und lasse mein NGinx-Proxy als Proxy zu.

  2. In ADGuard schreibe ich alle anfragen an ha.familienspitzname.eu auf die Interne Proxy-Adresse um und der Proxy zwingt zwischen User und dem Proxy eine HTTPS-Verbindung auf. Aber zwischen HA und Proxy läuft alles unverschlüsselt. Ich schreibe gleich auch die Ports um so das ich den Standard HTTPS-Port auf 8123 “Umschreibe”, damit wird der Aufruf on HA deutlich einfacher.

  3. Die Fritzbox ist so eingestellt das die Ports 443 an mein Proxy Weitergleitet wird und das die DynDNS Updates an Strato gesendet wird.

Ich mache aber das ganze nicht nur für HA sondern auch für wichtige andere Dienste wie Wiki, Password-Manager, File-Server oder Medien-Server (dann nur ohne Zugriff aus dem Internet). Es läuft aber auch alles auf einem Server mit genug Kernen und RAM mit Proxmox. Ich würde es mir nicht antun und alles über den Pi Laufen lassen.

Grüße Cranus

(* Man kann das schon so machen aber das wäre dann hier zu viel und würde niemand helfen.
(*² Mein Zukunfts-Ich wird sich freuen wenn er das umbauen muss

Ja, aber er hat doch geschrieben, dass er nginx hat.