HTTPS, SSL, Port 443, via IPv4 und das alles an einem Vodafone IPv6 Anschluss

Das hat damit zu tun, dass Alexa Skills bestimmte Funktionen nur unterstützen wenn man bestimmte locations auswählt, siehe unten. Da ich den Skill auf deutsch bedienen will, muss als location Ireland ausgewählt werden.

  • IMPORTANT - Alexa Skills are only supported in certain AWS regions Your current server location will be displayed on the top right corner (for example, Ohio), make sure you select the server closest to your location / region based on your Amazon account’s country, whilst also ensuring that it is within one of the supported regions for Alexa Skills otherwise this will not work!
    • US East (N.Virginia) region for English (US) or English (CA) skills
    • EU (Ireland) region for English (UK), English (IN), German (DE), Spanish (ES) or French (FR) skills
    • US West (Oregon) region for Japanese and English (AU) skills.
 
Na von mir aus, das ändert aber erstmal nichts an dem IPv4/IPv6-Sachverhalt:

lambda.eu-west-1.amazonaws.com -> v4
lambda.eu-west-1.api.aws -> v4+v6

Also einfach mal den zweiten ausprobieren :)
 
Mal blöd gefragt: Wenn ich zB per dnschecker.org meine Strato URL abfrage, sollte dort dann nicht nur ein CNAME Eintrag drin sein? Ich sehe hier nämlich immer einen AAAA UND einen CNAME Eintrag. Nicht, dass Strato hier was versaut.
 
Ne, das ist eher die Auflösungsreihenfolge... domain.tld = dyn6-adresse = IP. Ich würde es wie gesagt einfach mal mit dem api.aws-Endpunkt probieren.
 
Ich hab ehrlichgesagt keine Ahnung wo und wie ich das in meinem konkreten Fall ändern kann. Ich kann keine Einstellung finden wo man den Endpoint spezifizieren kann und mehr als Irland (eu-west-1) kann ich nicht auswählen.

Hier (https://aws.amazon.com/de/about-aws/whats-new/2021/12/aws-lambda-ipv6-endpoints-inbound-connections/) steht zwar im Grunde genau das was du sagst ("nimm den .api.aws endpoint") aber ich versteh halt schlicht nicht wie, da ich mich mit AWS kein Bisschen auskenne und an der Stelle wirklich nur stumpf der Anleitung folge.
 
Tja... und ich hab keine Ahnung von HomeAssistant, Alexa und Lambda/AWS 😅

Ich kann keine Einstellung finden wo man den Endpoint spezifizieren kann und mehr als Irland (eu-west-1) kann ich nicht auswählen.
Wo genau machst Du das denn? Innerhalb von HomeAssistant? Wenn das alles konfiguriert ist, müsste doch irgendwo auch ggf. YAML-technisch irgendwas zu finden sein, evtl. in der configuration.yaml, oder so? Hier ist zumindestens etwas in diese Richtung zu finden:

https://www.home-assistant.io/integ...e/#alexa-smart-home-integration-configuration

Hab nur keine Ahnung, ob das mit dem Endpoint so stimmt, das sieht doch schon irgendwie "sehr" anders aus... :unsure:

EDIT: Schalt vielleicht mal das erweiterte Logging ein, vielleicht verrät einem das ja noch ein bisschen mehr:
https://www.home-assistant.io/integrations/alexa.smart_home/#debugging

Btw... ich poste hier die ganze Zeit "alexa.smart_home"-Links, ich das ist auch genau das, was Du benutzt und wir reden hier nicht aneinander vorbei? 😄
 
Ja, genau das ist das. Quasi das einrichten eines custom Alexa Skills an den Home Assistant die angeschlossenen Geräte melden kann, damit diese Geräte am Ende per Alexa steuerbar werden. Damit spart man sich die HA Cloud, welche knapp 100€ im Jahr kostet.

Die Einrichtung findet größtenteils in AWS statt, die Einrichtung in HA sind lediglich zwei Zeilen Code in der configuration.yaml, welche dafür sorgen, dass HA seine bekannten Geräte an Alexa meldet.

Wo ich stecken bleibe ist dieser Punkt hier:
1706628022416.png

Anstatt einer sinnvollen Antwort bekomme ich hier nur:
1706628110043.png
 
Kannst Du denn bei Dir "https://ha.domain.tld/api/alexa/smart_home" aufrufen und es kommt auch etwas?

EDIT: https://github.com/home-assistant/core/blob/dev/homeassistant/components/alexa/smart_home.py
SMART_HOME_HTTP_ENDPOINT = "/api/alexa/smart_home"
"""Activate Smart Home functionality of Alexa component.

This is optional, triggered by having a `smart_home:` sub-section in the
alexa configuration.
vgl. https://www.home-assistant.io/integ...e/#alexa-smart-home-integration-configuration

So hast das Du das auch bei Dir? (locale halt de-DE und ansonsten auf Deine Gegebenheiten angepasst)
 
Zuletzt bearbeitet:
Wenn ich das aufrufe, bekomme ich sowohl intern als auch extern "405: Method Not Allowed" was eigentlich ein gutes Zeichen sein sollte.

1706653979313.png

Meine configuration sieht noch etwas mager aus, aber ich sollte alle Punkte haben die zu diesem Zeitpunkt notwendig sind:

alexa:
smart_home:
locale: de-DE

Alle anderen Punkte, zB auch der endpoint, werden eigentlich erst nach dem erfolgreichen Test benötigt. Da ich so weit noch nicht gekommen bin, hab ich mich darum auch noch nicht gekümmert.
 
Alle anderen Punkte, zB auch der endpoint, werden eigentlich erst nach dem erfolgreichen Test benötigt.
Hm ok, so tief bin ich da nicht in der Materie, aber wenn Du das so sagst, wird das schon stimmen. Das Ding ist halt:
name or service not known
Das ist zwar etwas schwammig, aber läuft halt schon darauf hinaus, dass etwas gewünschtes nicht gefunden wird bzw. erkannt wird. In erster Instanz wäre es halt die Geschichte mit dem DNS, aber das ist ja - soweit möglich (v6-only) - alles sauber soweit und dürfte dann ja ungefähr so aussehen:

FQDN (ha.domain.tld > CNAME > Dyn6-FQDN) -> Router (dyn. v6) -> Nginx-Reverse-Proxy -> HA

Da hast Du ggf. noch die Möglichkeit - k.A. was Reverse-Proxy und HA so an Möglichkeiten bieten - mal die Logs zu verfolgen. So rein "theoretisch" sollte es evtl. unter NPM entweder im Webinterface Logs geben, oder - falls ersteres nicht der Fall sein sollte - evtl. direkt im Container. Da wird "evtl." irgendwo eine "access.log" und "error.log" rumschwirren. Da könnte man ggf. mal schauen, ob da überhaupt irgendwas von Amazon ankommt. Wenn beim RP schon nix von extern zu sehen ist, läuft da schon extern irgendwas mächtig schief - falls doch, müsste man ggf. mal etwas genauer in die HA-Logs schauen (debug), ob da entsprechende Anfragen seitens Amazon ankommen.

Wenn das alles nicht will, "könnte" ggf. auch noch was an der IPv4/6-Thematik etwas dran sein, aber das kann ich mir eigentlich kaum vorstellen. Ist ja nicht die KFZ-Werkstatt um die Ecke, wir reden von "Amazon" 😅

Das wäre soweit die "eine" Interpretation der Fehlermeldung. Die andere würde ich dann in Richtung AWS-Konfiguration / HA-Konfiguration deuten. Es wird versucht eine Definition aufzurufen (definierter Name / Dienst), den es aber - dort wo angefragt wird - einfach nicht gibt (daher auch die Frage in #28"). Denn zumindestens in Richtung HomeAssistant, scheint mir das ja erstmal das einzige zu sein, was entsprechend konfiguriert sein muss, damit eine Verbindung zustande kommen kann. Als Gegenpart gibt es dann natürlich noch das ganze AWS-Zeugs, vielleicht nochmal alles überprüfen, ggf. löschen und einmal neu machen?

Auch da ggf. nochmal Logs schauen (wenn es dort sowas gibt) und alles mitnehmen was geht. Was auch gern übersehen wird: Irgendwas rattert ewig durch, am Ende steht ein Fehler. Sowas "kann" auch einfach ein "Folgefehler" sein. Irgendwo mitten drin ist irgendwas schief gelaufen und am Ende steht dann einfach nur noch "geht nicht". Dann steht aber auch irgendwo "mitten drin" vermutlich noch der eigentliche Fehler, könnte z.B. so aussehen:

Zeile 1
.....
Zeile 287: could not resolve ha.domain.tld (IPv4)
.....
Zeile 736: name or service not known
Sowas kann schon mal ziemlich untergehen, von daher sei das auch nur mal am Rande erwähnt.

Wenn das alles nicht fruchtet, sind meine Ideen dann allerdings auch so langsam am Ende... bzw. bleibt es dann bei den ganz initialen Dingen: Provider nach IPv4 (bzw. Dualstack) fragen, sich selbst irgendwie IPv4 besorgen (z.B. über Dienste wie feste-ip.net), oder sich einfach einen eigenen kleinen vServer anmieten, welcher dann - wie auch immer (RP/6tunnel/etc.) - als initiale Anlaufstelle dient und im Hintergrund mit Deinem RP/HA spricht.
 
Bin dir wie immer wahnsinnig dankbar für die ganzen Anregungen. Ich hab mich jetzt mal in das nginx log gegraben (was erst mal ein riesen Drama war, da die logs bei mir nicht dort liegen wo sie liegen sollten, bla bla bla) aber am Ende hatte ich es aber so weit, dass ich via tail live mitlesen konnte.

Ergebnis: Egal ob ich per PC/Handy, LAN/mobil auf die ha.xxx.yyy Domain zugreife, taucht es im log auf. Lasse ich hingegen den Test im AWS laufen, passiert rein garnichts. Er kommt also nicht am nginx an sondern prallt schon vorher irgendwo ab.

1706706882551.png

Der geblurrte client ist in dem Fall die IPv6 meines Desktop PC und die "sent to" IPv4 mein Home Assistant. Sieht also tiptop aus.

Das würde sich ja so ein bisschen damit decken was der User hier geschrieben hat:

1706706681289.png

Was ich an seinem Post eben sehr interessant finde ist die Aussage "man BRAUCHT einen IPv4 -> IPv6 Proxy" und "Seiten wie festeip.de gehen nicht, weil die Anfragen an Port 443 nicht durchlassen".
 
Na das ist ja, was ich schon mehrfach gesagt habe, aber da gibt es mehrere Möglichkeiten.
"Seiten wie festeip.de gehen nicht, weil die Anfragen an Port 443 nicht durchlassen".
Hm, keine Ahnung, irgendwann mal konnte man sich da über einen VPN-Tunnel einfach öffentliche IPv4-Adressen besorgen. Alternativ bieten die aber auch diesen HTTPS-Proxy an. Mögliche Szenarien hatte ich Dir ja schon genannt.
 
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.
 
Ich bin auch grade dabei nochmal eine Anleitung für die Hauptseite zu schreiben (aber nur generell in Bezug auf 6tunnel) :)
 
Zuletzt bearbeitet:
Man sollte vielleicht auch noch hinzufügen, dass ich genau so gut den Reverse Proxy auf dem vServer hätte hosten können. Der wäre dann von außen per IPv4 ansprechbar und würde dann die Anfragen an meine IPv6 weiterleiten. Ich wollte meinen Reverse Proxy aber gerne hier bei mir behalten (da er auch noch andere Aufgaben übernimmt, die mit AWS nichts zu tun haben) und den vServer so einfach wie möglich halten.
 
Alles gut, alles richtig. So bleibt auch alles brav in den heimischen 4 Wänden und man nutzt quasi nur die IPv4/6-Adressen des vServers, welcher die Pakete an die angegebenen Ports stumpf weiterleitet. Davon ab, hat man dann - wie zuvor auch - seine "Baustellen" Zuhause. Spätestens man da noch mit Docker und internen Netzwerken bzgl. anderweitiger Container rumspielt, dürfte der "externe" Reverse-Proxy sowieso ein bisschen problematisch werden, insofern ist das schon die bequemste und einfachste Lösung :)
 
Aber ist schon komisch... wenn ich mal so anmerken darf. AWS berechnet IPv4-Adressen bei seinen Kunden extra; aber selbst können sie keinen IPv6-only Service aufrufen. Ist schon schwer konsistent. (nicht) :D
 
Jo, hätte ich auch nie so erwartet, wobei ich die unterschiedlichen API-URLs schon merkwürdig fand (IPv4 vs. IPv4+IPv6), aber wat willste machen... "isso"... 😄
 
Hallo zusammen.

Besten Dank für die Anleitung! Dadurch bin ich auf das Forum gekommen und schließlich auch auf die Lösung meines Problems.

Ich habe einen neuen GF Anschluss von Deutsche Glasfaser mit CGNAT IPv4. Mein Mobilnetz (Sipgate über O2) spricht leider (immer noch) kein IPv6, sondern ausschließlich IPv4. Meine Hausautomation (Loxone Gen1) spricht auch nur IPv4 und war somit nicht mehr von unterwegs erreichbar. Ich wollte daher unbedingt Wireguard in der Fritzbox (wieder) zum Laufen kriegen, um auf mein 192er Netz und die IPv4 only Devices zugreifen zu können.

Leider überträgt 6tunnel aber nur TCP und Wireguard läuft mit UDP. Man kann statt 6tunnel auch socat verwenden, da dieses u.a. auch UDP Pakete von IPv4 nach IPv6 weiterleiten kann. So konnte ich am Ende Wireguard in meiner Fritzbox über eine IPv4 Adresse trotz CGNAT wieder von aussen erreichbar machen.

Die Weiterleitung mit socat läuft auf einem virt. Server mit fester IPv4 von Ionos. Kostenpunkt 1€/Monat. Falls jemand Interesse hat kann ich das evtl näher beschreiben, die Anleitung ist jedoch bereits sehr gut. Ich starte socat auf dem vServer so -->
Code:
sudo socat UDP4-LISTEN:<Port Wireguard>,fork,su=nobody,reuseaddr UDP6:[<IPv6 Fritzbox>]:<Port Wireguard>

Der Port in der Firewall des virt. Servers muss entsprechend konfiguriert sein, und als Protokoll UDP ausgewählt werden. Als Endpoint trägt man nun in der Wireguardsoftware des Handys die IPv4 Adresse des virt. Servers ein, dann sollte Wireguard auch schon wieder laufen.

Ich hoffe das hilft jemandem
schönen Gruß
 

Zurzeit aktive Besucher

Letzte Anleitungen

Statistik des Forums

Themen
5.907
Beiträge
57.689
Mitglieder
5.860
Neuestes Mitglied
Michael_Dee
Zurück
Oben