So, dank der echt wahnsinnigen Unterstützung von blurrrr hab ich das Problem nun endlich gelöst bekommen. Ich bin daher nun in der Lage meinen speziellen Use Case (Kommunikation zwischen einem hier lokal gehosteten Home Assistant mit einer Amazon Web Services Lambda Funktion um Home Assistant per Alexa steuern zu können) umzusetzen.
Ich möchte daher hier einen kurzen Aufschrieb der ganzen Problematik machen, in der Hoffnung, dass das anderen Usern mit dem selben Problem irgendwann auch mal Hilft.
Was wollte ich tun:
Home Assistant ist eine Smart Home Zentrale die man sich selbst, zB auf einem Raspberry Pi, hosten kann. Damit kann man Geräte aller möglichen Hersteller und mit allen möglichen Schnittstellen, zB Wlan, Zigbee, Bluetooth, Matter, etc. über eine gemeinsame Zentrale managen.
Um Home Assistant per Alexa sprachsteuerbar zu machen, ist jedoch ein Abo für 75€ pro Jahr fällig. Stattdessen kann man sich auch selbst eine Lösung bauen, indem man im Kern einen eigenen Alexa Skill baut.
Die Details dazu sind hier zu finden:
https://www.home-assistant.io/integrations/alexa.smart_home
Warum funktionierte das bei mir nicht:
Das Grundproblem war, dass AWS allen Experimenten und Forenposts nach nicht mit einem reinen IPv6 Anschluss umgehen kann. Andere User haben ähnliche Erfahrungen gemacht. Meine Versuche die DynDNS meines HA (bzw. meines vorgeschalteten Reverse Proxy) direkt bei AWS zu hinterlegen, liefen ins Leere und produzierte nur wenig aussagekräftige Fehlermeldungen.
Der Zugriff von außen, von IPv6 tauglichen Geräten, war zu jeder Zeit möglich.
Ein kurzes Experiment mit dem Dienst feste-ip.net war ebenfalls nicht erfolgreich. Man bekommt dort zwar eine öffentliche IPv4, diese scheint aber den Port 443 nicht durchzurouten, was für AWS wieder ein Problem war.
blurrrr hat dann kurzerhand einen DualStack Testserver aufgesetzt, der nichts anderes macht als die Anfragen von AWS (auf IPv4) entgegen zu nehmen und an meine IPv6 Adresse weiterzuleiten-> und das hat tatsächlich funktioniert.
Meine finale Lösung des Problems ist daher:
1. Ich hab mir den kleinsten verfügbaren vServer bei Ionos für 1€ pro Monat gemietet.
2. Diesem vServer habe ich sowohl eine IPv4 als auch eine IPv6 verpasst, damit er einerseits per IPv4 mit AWS und andererseits per IPv6 mit mir reden kann.
3. Auf dem Server läuft das Tool 6tunnel, welches mit zwei einfachen Zeilen konfiguriert ist und nun alle Anfragen an den Server auf Port 80 und 443 an meinen Reverse Proxy weiterleitet.
Code:
6tunnel 80 host.domain.tld 80
6tunnel 443 host.domain.tld 443
4. Bei AWS ist die öffentliche IPv4 des Servers hinterlegt.
Entgegen der Anleitungen im Netz ist es in diesem Fall nicht mal nötig HA von seinem eigentlichen Port 8123 auf Port 443 umzustellen, da nginx die Übersetzung der eingehenden Anfragen an Port 8123 übernimmt.
Die gesamte Kette sieht nun also so aus:
Code:
Bei AWS habe ich eine Subdomain meiner Strato Hauptdomain eingetragen:
-> AWS.meinedomain.de
Meine Strato Subdomain zeigt per A Record auf die IPv4 des Ionos Servers:
-> AWS.meinedomain.de ->A-> 111.222.333.444
Dieser leitet alle Anfragen an Port 80 und 443 per 6tunnel an die DynDNS IPv6 meines Reverse Proxy weiter:
-> 111.222.333.444:443 -> nginx.meinedyndns.de:443
Dieser erkennt eingehende Anfragen von AWS.meinedomain.de und leitet diese an die lokale IPv4 der Home Assistant Installation unter Port 8123 weiter.
Nochmal unendlich viel Dank an blurrrr der sich echt alle Zeit genommen hat um mir hier einerseits zu helfen und mir andererseits die Grundlagen verständlich zu machen.