ZeroTier toont het lid als OK, het netwerk is verbonden, en toch is er geen adres om te pingen. Die combinatie voelt als een bug en is meestal een gesplitste configuratie: een lid goedkeuren is één schakelaar, en het een adres geven is een andere. Een netwerk kan een apparaat accepteren en het nooit iets toewijzen, omdat de adrespool of de toewijzingsmodus nooit is ingesteld.

Lees beide kanten voordat je een van beide wijzigt. Het antwoord is op twee plaatsen zichtbaar, en slechts één daarvan staat op de controller.

Autorisatie en toewijzing zijn verschillende schakelaars

Autorisatie beantwoordt of dit knooppunt aan het netwerk mag deelnemen. Adrestoewijzing beantwoordt wat het netwerk het geeft zodra het deelneemt, en dat antwoord komt uit een adrespool plus een toewijzingsmodus. Geen van beide instellingen impliceert de andere. De ene is een toestemming en de andere een toewijzing.

Een controllerconfiguratie bevat meestal een beheerde route, een adresbereik en de modus die bepaalt of automatische toewijzing wordt gebruikt. Het kopiëren van een netwerk-ID uit een andere omgeving levert het lidmaatschap en niets van die configuratie.

Daarom kan een apparaat er gezond uitzien in de ledenlijst terwijl de kolom voor het toegewezen adres leeg blijft. De controller heeft het geaccepteerd en heeft niets te geven. Beide uitspraken zijn tegelijk waar.

LayerWhat it decidesWhere it is configured
MembershipWhether the node may joinMember authorization on the network
PoolWhich addresses exist to hand outNetwork address range
Assignment modeWhether they are handed out automaticallyNetwork v4/v6 assignment settings

De effectieve status van het lid lezen

Vraag de client wat hij werkelijk heeft ontvangen in plaats van wat de controller bedoelde. De gewone lijst toont status- en adreskolommen, en de JSON-vorm toont de netwerkconfiguratie die de client heeft toegepast, inclusief beheerde adressen en routes.

zerotier-cli listnetworks
zerotier-cli -j listnetworks | jq '.networks[] | {nwid, status, assignedAddresses}'

Vergelijk de twee uitvoer voor dezelfde netwerk-ID, niet voor de fysieke adapters die in de eigen lijst van het besturingssysteem verschijnen. Een regel die OK meldt met een lege adresset bevestigt de toewijzingskloof en niet een verbindingsfout. De verkeerde regel lezen is de andere helft van deze fout.

Een status van ACCESS_DENIED wijst terug naar autorisatie, en dat is een andere reparatie. Als de opdracht het lokale authenticatietoken helemaal niet kan lezen, ligt het probleem bij lokale rechten en niet bij een weigering van de controller, en de correctie is op de machine waar je zit.

Wanneer de client negeert wat de controller stuurt

De client heeft eigen instellingen die bepalen of de beheerde configuratie wordt toegepast. Een profiel dat beheerde adressen, beheerde routes of de afhandeling van de standaardroute uitschakelt, gooit weg wat het netwerk stuurt, en de ledenlijst blijft er vanaf de controller nog steeds correct uitzien.

Die vlaggen beïnvloeden alleen het lokale knooppunt. Ze wijzigen verandert niet wat andere leden ontvangen, en het repareert geen pool die nooit is gedefinieerd.

De diagnose heeft dus twee takken: of de controller heeft geen adres te geven, of de client heeft het gekregen adres geweigerd. Die leiden tot verschillende reparaties op verschillende machines. De JSON-uitvoer onderscheidt ze, omdat het adres ofwel ontbreekt in de configuratie van het netwerk ofwel aanwezig is en ontbreekt in de toegepaste status van de client.

Wat te repareren in plaats van een adres te verzinnen

Een willekeurig statisch adres intypen is de verleidelijke derde optie en de slechtste. Een toevallig adres kan botsen met een ander knooppunt, buiten de routes liggen die het netwerk verspreidt, of in een bereik vallen dat firewallregels anders behandelen. Het verbergt ook de ontbrekende pool voor iedereen die hierna naar het netwerk kijkt. Repareer in plaats daarvan de toewijzing, en laat de controller en de client het over het resultaat eens worden.

Vraag de beheerder wat het netwerk hoort te geven, en controleer dan dat de pool het bedoelde bereik dekt en de toewijzingsmodus is ingeschakeld. Sluit opnieuw aan na de wijziging in plaats van te verwachten dat de client zelf meteen een nieuwe configuratie vindt.

Zodra een adres verschijnt, test wat je echt nodig had: een peer, een dienst of een subnet achter een gateway. Een LAN achter een lid bereiken vereist routering en doorsturen buiten het lidmaatschap, en algemene internettoegang vereist een uitgangsknooppunt, dus een werkend adres is het begin van die test en niet het einde.

Gerelateerde artikelen