Layer 8Ehrlicher Tech-Support

Thread-Gerät per IPv6 nicht erreichbar: Adresse nur im Mesh

Die abgelesene IPv6-Adresse des Thread-Geräts antwortet nicht. Ein Thread-Knoten hat mehrere Adressen, und die meisten enden am Mesh.

Aufwand:
ca. 30 Min.

Das Symptom

In einer Diagnoseansicht steht endlich die IPv6-Adresse des Thread-Geräts. Man kopiert sie, ruft sie vom Rechner aus auf, und es kommt keine Antwort. Kein Fehler, kein Verbindungsabbruch, einfach eine Zeitüberschreitung.

Über die App reagiert dasselbe Gerät währenddessen sofort. Also liegt es weder am Funk noch an der Stromversorgung. Es liegt an der Adresse, und zwar daran, welche man erwischt hat.

Die „Layer 8“-Wahrheit

Ein Thread-Knoten hat nicht eine Adresse, sondern einen ganzen Satz davon, und jede beantwortet eine andere Frage. Eine Link-Local-Adresse, erkennbar am Anfang fe80, bezeichnet eine Schnittstelle, die mit einer einzigen Funkübertragung erreichbar ist, also den direkten Nachbarn. Eine Mesh-Local-Adresse, erkennbar am Anfang fd, gilt im Thread-Netz unabhängig von der Topologie, endet aber ebenso zuverlässig an dessen Grenze. Dazu kommen Locator-Adressen, die die Position im Netz abbilden und sich mit ihr ändern.

Wer von außerhalb des Thread-Netzes auf ein Gerät zugreifen will, braucht eine global gültige Adresse. Die entsteht nicht von selbst: Der Border Router stellt ein Präfix bereit, aus dem die Geräte sich eine solche Adresse bilden, und er sorgt dafür, dass der Rückweg in das Mesh im Heimnetz bekannt ist. Fällt eines von beidem aus, weil IPv6 im Heimnetz abgeschaltet ist oder Router-Ankündigungen unterdrückt werden, dann existiert die Adresse zwar, findet aber niemand.

Die abgelesene Adresse ist also selten falsch. Sie ist nur für eine andere Frage gedacht als die, die man ihr gerade stellt. Ein Ping ohne Antwort beweist in diesem Fall nichts über den Zustand des Geräts, sondern nur, dass man den falschen Zettel aus der Schublade gezogen hat.

Die echte, verifizierte Lösung

1000 % faktenbasiert. Jeder Befehl ist real, jeder Pfad existiert. Schritt für Schritt:

  1. 1.

    Die abgelesene Adresse einordnen

    Zuerst den Anfang der Adresse ansehen. fe80 bedeutet Link-Local und damit nur eine Funkstrecke weit, fd bedeutet eine private Adresse innerhalb des Mesh. Beide sind für einen Zugriff vom Rechner aus in der Regel die falsche Wahl.

  2. 2.

    Die richtige Adressart auswählen

    Für die Erreichbarkeit von außerhalb des Thread-Netzes ist eine global gültige Adresse nötig. Der Border Router stellt dafür ein Präfix bereit, aus dem die Geräte sich eine solche Adresse bilden. Fehlt dieses Präfix, hat kein Gerät im Mesh eine von außen brauchbare Adresse.

  3. 3.

    Prüfen, ob das Heimnetz IPv6 überhaupt zulässt

    Der Rückweg muss ebenfalls funktionieren. Ist IPv6 im Heimnetz abgeschaltet oder werden Router-Ankündigungen unterdrückt, weiß der Rechner nicht, dass es zum Thread-Präfix eine Route über den Border Router gibt. Der Aufruf läuft dann in die falsche Richtung.

  4. 4.

    Vom richtigen Netzsegment aus testen

    Ein Zugriff aus einem anderen VLAN oder über ein VPN nimmt einen Weg, auf dem der Border Router gar nicht liegt. Der erste Test gehört deshalb ins selbe Segment wie der Border Router selbst.

  5. 5.

    Nicht die Locator-Adresse als feste Adresse verwenden

    Ein Teil der Adressen eines Thread-Geräts hängt an seiner Position im Netz und ändert sich, wenn sich die Topologie ändert. Wer eine solche Adresse in eine Konfiguration einträgt, hat morgen einen Fehler, der wie ein Ausfall aussieht und keiner ist.

Häufige Fragen (FAQ)

?Warum hat ein Thread-Gerät mehrere IPv6-Adressen?

Weil jede eine andere Aufgabe hat. Die OpenThread-Dokumentation unterscheidet unter anderem eine Link-Local-Adresse, die mit fe80 beginnt, für den direkten Funknachbarn, eine Mesh-Local-Adresse, die mit fd beginnt, für das Thread-Netz unabhängig von der Topologie, dazu topologieabhängige Locator-Adressen und eine globale Adresse. Welche man erwischt, entscheidet darüber, ob überhaupt jemand antwortet.

?Woran erkenne ich, ob ich eine brauchbare Adresse vor mir habe?

Am Anfang der Adresse. Beginnt sie mit fe80, reicht sie nur bis zum unmittelbaren Funknachbarn. Beginnt sie mit fd, ist sie eine private Adresse aus dem Thread-Mesh und außerhalb davon wertlos. Für den Zugriff von außerhalb des Thread-Netzes braucht es eine global gültige Adresse, die das Gerät aus einem vom Border Router bereitgestellten Präfix bildet.

Belege

Diese Seite ist gegen die folgenden Primärquellen geprüft – Hersteller, Standard oder Gesetzestext. Wer es nicht glaubt, muss es nicht: Da steht, wo es nachzulesen ist.

  1. [1]
    OpenThread – IPv6 Addressing

    openthread.io · abgerufen am

Zuletzt geprüft am . Dokumentation altert – ein Datum daneben ist der einzige ehrliche Umgang damit.

Verwandte Fehler