ZeroTier pokazuje członka jako OK, sieć jest dołączona, a mimo to nie ma adresu do pingowania. Ta kombinacja wygląda jak błąd i zwykle jest rozdzieloną konfiguracją: zatwierdzenie członka to jeden przełącznik, a przydzielenie mu adresu to drugi. Sieć może przyjąć urządzenie i nigdy nic mu nie przydzielić, ponieważ pula adresów albo tryb przydziału nigdy nie zostały ustawione.

Przeczytaj obie strony, zanim zmienisz którąkolwiek. Odpowiedź jest widoczna w dwóch miejscach i tylko jedno z nich jest na kontrolerze.

Autoryzacja i przydział to różne przełączniki

Autoryzacja odpowiada, czy ten węzeł może uczestniczyć w sieci. Przydział adresu odpowiada, co sieć mu daje, gdy już uczestniczy, a odpowiedź pochodzi z puli adresów i trybu przydziału. Żadne ustawienie nie implikuje drugiego. Jedno jest zgodą, a drugie alokacją.

Konfiguracja kontrolera zwykle zawiera zarządzaną trasę, zakres adresów i tryb decydujący o tym, czy używany jest przydział automatyczny. Skopiowanie identyfikatora sieci z innego środowiska przynosi członkostwo i nic z tej konfiguracji.

Dlatego urządzenie może wyglądać zdrowo na liście członków, podczas gdy jego kolumna przydzielonego adresu pozostaje pusta. Kontroler je zaakceptował i nie ma nic do dania. Oba stwierdzenia są prawdziwe jednocześnie.

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

Odczyt rzeczywistego stanu członka

Zapytaj klienta, co faktycznie otrzymał, a nie co zamierzał kontroler. Zwykła lista pokazuje kolumny stanu i adresu, a forma JSON pokazuje konfigurację sieci zastosowaną przez klienta, w tym adresy i trasy zarządzane.

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

Porównaj oba wyjścia dla tego samego identyfikatora sieci, a nie dla fizycznych adapterów widocznych na własnej liście systemu operacyjnego. Wiersz, który zgłasza OK z pustym zbiorem adresów, potwierdza lukę w przydziale, a nie awarię łączności. Odczytanie niewłaściwego wiersza to druga połowa tego błędu.

Stan ACCESS_DENIED wskazuje z powrotem na autoryzację, a to inna naprawa. Jeśli polecenie w ogóle nie potrafi odczytać lokalnego tokenu uwierzytelniania, problemem są lokalne uprawnienia, a nie odmowa kontrolera, a poprawka jest na maszynie, przy której siedzisz.

Gdy klient ignoruje to, co wysyła kontroler

Klient ma własne ustawienia decydujące o tym, czy konfiguracja zarządzana jest stosowana. Profil, który wyłącza adresy zarządzane, trasy zarządzane lub obsługę trasy domyślnej, odrzuci to, co wysyła sieć, a lista członków nadal będzie wyglądać poprawnie z punktu widzenia kontrolera.

Te flagi dotyczą tylko lokalnego węzła. Ich zmiana nie zmienia tego, co otrzymują inni członkowie, i nie naprawia puli, która nigdy nie została zdefiniowana.

Diagnoza ma więc dwie gałęzie: albo kontroler nie ma adresu do dania, albo klient odrzucił ten, który otrzymał. Prowadzą one do różnych napraw na różnych maszynach. Wyjście JSON je rozróżnia, ponieważ adres albo nie występuje w konfiguracji sieci, albo jest obecny i brakuje go w zastosowanym stanie klienta.

Co naprawić zamiast wymyślać adres

Wpisanie dowolnego statycznego adresu to kusząca trzecia opcja i najgorsza. Przypadkowy adres może kolidować z innym węzłem, leżeć poza trasami rozgłaszanymi przez sieć albo trafić w zakres, który reguły firewalla traktują inaczej. Ukrywa też brakującą pulę przed każdym, kto następnie spojrzy na sieć. Napraw raczej przydział i pozwól kontrolerowi oraz klientowi uzgodnić wynik.

Zapytaj administratora, co sieć powinna przydzielać, a następnie sprawdź, czy pula obejmuje zamierzony zakres i czy tryb przydziału jest włączony. Dołącz ponownie po zmianie, zamiast oczekiwać, że klient sam od razu dotrze do nowej konfiguracji.

Gdy pojawi się adres, przetestuj to, czego naprawdę potrzebowałeś: peera, usługę albo podsieć za bramą. Dotarcie do LAN za członkiem wymaga routingu i przekazywania poza członkostwem, a ogólny dostęp do internetu wymaga węzła wyjściowego, więc działający adres jest początkiem tego testu, a nie jego końcem.

Powiązane artykuły