Sie löschen das Mitglied, schließen die Seite, und einen Tag später ist dasselbe Gerät wieder da. Das ist kein Fehler in der Konsole. Es passiert, wenn ein Eintrag gelöscht wird, während das Gerät noch online ist und noch um Beitritt bittet.

Zwei Vorgänge liegen nebeneinander und erledigen unterschiedliche Aufgaben. Der eine entscheidet über den Zugang, der andere räumt nur die Liste auf.

Beginnen Sie beim wiederkehrenden Eintrag

Öffnen Sie das Netzwerk und sehen Sie sich den Eintrag an, der zurückgekommen ist. Notieren Sie seine node ID, seine letzte Adresse und den Zeitpunkt, an dem er wieder auftauchte. Vergleichen Sie das mit dem Gerät, das Sie außer Betrieb nehmen wollten. Ein Anzeigename ist das, was jemand eingetippt hat, und die Adresse kann sich beim nächsten Beitritt ändern.

Die node ID ist die stabile Kennung. Eine Netzwerk-ID benennt das Netzwerk, sie sagt Ihnen also, welche Liste Sie lesen, und nichts darüber, welches Gerät darin ist. Notieren Sie beides und gleichen Sie dann die node ID mit der Maschine ab, die Sie außer Betrieb nehmen wollten.

Vergleichen Sie falsch, entfernen Sie eine funktionierende Maschine, während das unerwünschte Gerät weiter fragt. Die Liste sieht dann einen Tag lang korrekt aus. Das ist lange genug, dass es niemand bemerkt, und genau das ist das Problem.

Autorisierung zurückziehen, bevor Sie löschen

Ändern Sie zuerst den Autorisierungsstatus über den Arbeitsablauf, den der Controller unterstützt. Ab diesem Punkt erscheint ein Beitrittsversuch als nicht autorisiert, statt den Zugang stillschweigend wiederherzustellen, und die Anfrage ist sichtbar statt unsichtbar.

Das Löschen kommt danach, niemals stattdessen. Wer den Eintrag eines autorisierten Mitglieds entfernt, hat nichts mehr, was sich zurückziehen ließe. Das Gerät fragt erneut, und der Controller behandelt es als neu.

Bei einer Maschine, die Sie noch kontrollieren, ist das Verlassen des Netzwerks ein sinnvoller Teil der Außerbetriebnahme. Es ersetzt nicht die Entscheidung des Administrators über ein verlorenes Gerät. Ein Client, den Sie nicht mehr kontrollieren, kann ignorieren, was ihm gesagt wurde.

Wo die beiden Vorgänge liegen

Bei einem gehosteten Controller bietet die Mitgliederliste beide Aktionen an und beschriftet sie klar genug, um sie zu unterscheiden. Bei einem selbst gehosteten Controller erscheint derselbe Unterschied in der API und in der lokalen Konfiguration, und dort beginnt die Verwirrung meistens.

# list members with authorization state
curl -s -H "X-ZT1-Auth: $TOKEN" \
  "http://127.0.0.1:9993/controller/network/$NETWORK_ID/member" | jq 'to_entries[] | {id: .key, authorized: .value.authorized}'

# deauthorize one member by node id, then confirm
curl -s -X POST -H "X-ZT1-Auth: $TOKEN" -d '{"authorized": false}' \
  "http://127.0.0.1:9993/controller/network/$NETWORK_ID/member/$NODE_ID"

Diese beiden Aufrufe genügen, um zu zeigen, ob das Mitglied jemals wirklich nicht autorisiert war. Ein Eintrag, der immer wieder mit authorized: true zurückkommt, wurde nie zurückgezogen; er wurde nur gelöscht.

Prüfen Sie an der Ressource, nicht an der Liste

Eine aufgeräumte Mitgliederliste ist keine Zugangsprüfung. Versuchen Sie die Ressource, die das Gerät vorher nutzte, von diesem Gerät oder von einer Maschine mit seiner alten Adresse aus, und bestätigen Sie, dass die Verbindung scheitert. Bestätigen Sie dann, dass ein genehmigter Ersatz noch funktioniert.

Beziehen Sie Routen und Dienstberechtigungen in diesen Test ein. ZeroTier kann ein Mitglied autorisieren und ihm trotzdem den Zugriff auf eine verwaltete Route verwehren. Eine Anwendungsberechtigung kann auf dieselbe Weise scheitern. Von der Mitgliederliste aus sehen beide gleich aus.

zerotier-cli listnetworks
ip route show | grep zt
ping -c 3 10.144.0.5

Halten Sie bei einem selbst gehosteten Controller eine konsistente Sicherung seiner Identität und Konfiguration. Eine Wiederherstellung, die auf einen früheren Stand zurückrollt, kann eine alte Autorisierung mitbringen, und die Mitgliederliste sieht dann genau so aus wie vor der Außerbetriebnahme.

Die Außerbetriebnahme ist abgeschlossen, wenn die alte Identität nichts mehr erreichen kann und der Eintrag verschwunden ist. Tun Sie das in dieser Reihenfolge, und das Mitglied kommt nicht mehr zurück.

Ähnliche Artikel