ZeroTier meldet ONLINE, aber ACCESS_DENIED: Wo behebt man das?
ONLINE beschreibt den Kontakt zur Wurzelinfrastruktur; ACCESS_DENIED beschreibt die Mitgliedschaft in einem Netzwerk. Die Behebung gehört auf die Controllerseite.
ZeroTier meldet ONLINE auf Dienstebene und ACCESS_DENIED auf Netzwerkebene, und das Paar ist kein Widerspruch. Das erste ist eine Aussage über den Pfad zwischen Ihrem Client und der Koordinationsinfrastruktur. Das zweite ist eine Aussage über die Mitgliederliste eines Netzwerks. Lesen Sie beides getrennt, und die Kombination zeigt Ihnen genau, wo Sie nachsehen müssen.
Was ONLINE misst
Der Statusbefehl meldet, ob der lokale Dienst einen funktionierenden Pfad zu den Root-Servern hat, die die Peer-Erkennung koordinieren. Über ein einzelnes Netzwerk sagt er nichts, und nichts darüber, ob ein Controller dieses Gerät freigegeben hat. Eine frische Installation auf einer funktionierenden Verbindung meldet daher sofort ONLINE, bevor irgendjemand sie irgendwo autorisiert hat.
Behandeln Sie ONLINE als Aussage über die Leitungen und den Status je Netzwerk als Aussage über die Mitgliedschaft. Das eine zur Erklärung des anderen zu verwenden, ist der Punkt, an dem der größte Teil dieser Verwirrung beginnt.
Was ACCESS_DENIED von Ihnen verlangt
In einem privaten Netzwerk führt der Controller eine Mitgliederliste. Ein Knoten, der auf dieser Liste fehlt oder darauf steht, aber nicht autorisiert ist, erhält ACCESS_DENIED ohne jede Konfiguration über den grundlegenden Handshake hinaus. Die Behebung liegt auf der Controllerseite und braucht die Knotenadresse statt des Rechnernamens, also gleichen Sie die Adresse in der Client-Ausgabe mit dem Mitgliedseintrag ab und autorisieren Sie diesen Eintrag.
Den Client neu zu installieren ist der falsche erste Schritt, weil eine neue Installation eine neue Identität mitbringt und die alte Autorisierung dafür nicht mehr gilt. Ist das Netzwerk öffentlich, deutet derselbe Status auf eine andere Bedingung hin, fragen Sie also den Controller-Eigentümer, ob das Netzwerk privat ist, bevor Sie eine Freigabe anfordern. Diese eine Frage entscheidet den Rest des Gesprächs.
Statustext ist eine Verzweigung, kein Urteil
Jeder Status verengt die nächste Prüfung, und genau das Lesen als eine einzige Fehlermeldung macht aus einer Behebung von zwei Minuten einen ganzen Nachmittag voller Neuinstallationen. NOT_FOUND bedeutet, dass die eingegebene Kennung bei diesem Controller nicht existiert, die Frage nach der Mitgliedschaft also noch nicht erreicht ist. REQUESTING_CONFIGURATION bedeutet, dass der Knoten den Controller erreicht hat und auf eine Konfiguration wartet, die nicht ankommt, was auf den Pfad und nicht auf die Autorisierung deutet. OK bedeutet, dass Mitgliedschaft und Konfiguration vorhanden sind, also ist die nächste Frage die zugewiesene Adresse und danach der Dienst selbst.
Zwei Befehle trennen all das, und beide lesen denselben Client. ZeroTier-CLI-Referenz listet die Statuszeichenfolgen je Netzwerk auf, die sie zurückgeben. Der erste Befehl ist die Dienstansicht und der zweite ist je Netzwerk:
zerotier-cli status
zerotier-cli listnetworks
Behalten Sie den Statustext, wenn Sie den Administrator um Hilfe bitten. Ein lokaler Beitrittsbefehl, der eine Bestätigung ausgegeben hat, beweist nur, dass die Anfrage lokal angenommen wurde, was eine andere Tatsache ist als aufgenommen zu werden.
Mitgliedschaft gehört zu einer Identität
Der Controller erkennt die Identitätsdateien des Clients, deshalb erzeugt das Kopieren einer Konfiguration auf einen anderen Rechner oder das Löschen der Identität bei einer Neuinstallation ein Mitglied, das der Controller nie gesehen hat. Deshalb unterscheidet sich auch das Löschen eines Mitgliedseintrags vom Entziehen seiner Autorisierung. Ein autorisierter Knoten, der noch läuft, versucht es weiter, und ein Eintrag, der gelöscht statt widerrufen wurde, kann als neue Anfrage von derselben Adresse zurückkommen.
Wenn Sie ein Gerät außer Betrieb nehmen, widerrufen Sie es zuerst und bestätigen Sie, dass der Eintrag diesen Zustand widerspiegelt, bevor Sie etwas entfernen. Die Reihenfolge ist der Unterschied zwischen einer sauberen Entfernung und einem mysteriösen Wiedereintritt.
Nach der Änderung prüfen
Lesen Sie den Netzwerkeintrag neu, statt den Befehl, der die Änderung bewirkt hat. Vier Fragen decken das Ergebnis ab, und jede davon kann falsch sein, während die anderen richtig aussehen:
zerotier-cli listnetworks
ip -br addr show
ping -c 2 10.147.20.5
ip route get 10.147.20.5
Der erste gibt Mitgliedschaft und die zugewiesene Adresse für jedes Netzwerk aus, und der zweite zeigt, ob eine Schnittstelle diese Adresse tatsächlich erhalten hat. Die letzten beiden beweisen, dass ein Peer im Netzwerk antwortet und welche Schnittstelle den Verkehr trägt. Notieren Sie, welcher Befehl welche Frage beantwortet hat, damit die nächste Person von Belegen statt von Erinnerung ausgeht.
Ist die Mitgliedschaft OK und die Adresse vorhanden, aber Peers antworten nicht, ist das Problem zum Routing oder zur eigenen Richtlinie des Peers gewandert. Nehmen Sie den Statustext aus diesem Gespräch, denn er hat seine Aufgabe bereits erfüllt. Der Mitgliedseintrag und der Pfad sind getrennte Themen, und je früher sie getrennt werden, desto kürzer wird die Untersuchung.