ZeroTier pokazuje ONLINE, ale ACCESS_DENIED: gdzie to naprawić?
ONLINE opisuje kontakt z infrastrukturą root; ACCESS_DENIED opisuje członkostwo w jednej sieci. Poprawka należy do strony kontrolera.
ZeroTier zgłasza ONLINE na poziomie usługi i ACCESS_DENIED na poziomie sieci, a ta para nie jest sprzecznością. Pierwsze to stwierdzenie o ścieżce między twoim klientem a infrastrukturą koordynacyjną. Drugie to stwierdzenie o liście członków jednej sieci. Czytaj je osobno, a połączenie powie ci dokładnie, gdzie szukać.
Co mierzy ONLINE
Polecenie statusu zgłasza, czy usługa lokalna ma działającą ścieżkę do serwerów root, które koordynują wykrywanie peerów. Nie mówi nic o pojedynczej sieci ani o tym, czy kontroler zatwierdził to urządzenie. Dlatego świeża instalacja na działającym połączeniu zgłasza ONLINE od razu, zanim ktokolwiek ją gdziekolwiek autoryzował.
Traktuj ONLINE jako stwierdzenie o instalacji, a status poszczególnych sieci jako stwierdzenie o członkostwie. Wyjaśnianie jednego drugim to miejsce, w którym zaczyna się większość tego zamieszania.
Czego żąda ACCESS_DENIED
W sieci prywatnej kontroler prowadzi listę członków. Węzeł, którego na tej liście nie ma albo który jest na niej, ale nieautoryzowany, otrzymuje ACCESS_DENIED wraz z brakiem konfiguracji poza podstawowym uściskiem dłoni. Poprawka jest po stronie kontrolera i wymaga adresu węzła, a nie nazwy maszyny, więc porównaj adres z wyniku klienta z wpisem członka i autoryzuj ten wpis.
Przeinstalowanie klienta to zły pierwszy krok, bo nowa instalacja przynosi nową tożsamość, a stara autoryzacja już jej nie dotyczy. Jeśli sieć jest publiczna, ten sam status wskazuje na inny warunek, więc przed prośbą o zatwierdzenie zapytaj właściciela kontrolera, czy sieć jest prywatna. To jedno pytanie rozstrzyga resztę rozmowy.
Tekst statusu to rozgałęzienie, nie wyrok
Każdy status zawęża następne sprawdzenie, i właśnie czytanie ich jako jednego komunikatu o błędzie zamienia dwuminutową poprawkę w całe popołudnie reinstalacji. NOT_FOUND oznacza, że identyfikator, który wpisałeś, nie istnieje na tym kontrolerze, więc pytanie o członkostwo nie zostało jeszcze osiągnięte. REQUESTING_CONFIGURATION oznacza, że węzeł dotarł do kontrolera i czeka na konfigurację, która nie nadchodzi, co wskazuje na ścieżkę, a nie na autoryzację. OK oznacza, że członkostwo i konfiguracja są na miejscu, więc następne pytanie to przydzielony adres a potem sama usługa.
Dwa polecenia rozdzielają to wszystko, i oba czytają tego samego klienta. Dokumentacja CLI ZeroTier wymienia ciągi statusu dla poszczególnych sieci, które zwracają. Pierwsze polecenie to widok usługi, a drugie jest dla poszczególnych sieci:
zerotier-cli status
zerotier-cli listnetworks
Zachowaj tekst statusu, gdy prosisz administratora o pomoc. Lokalne polecenie join, które wypisało potwierdzenie, dowodzi tylko, że żądanie zostało przyjęte lokalnie, co jest innym faktem niż dopuszczenie do sieci.
Członkostwo należy do tożsamości
Kontroler rozpoznaje właśnie pliki tożsamości klienta, więc skopiowanie konfiguracji na inną maszynę albo wyczyszczenie tożsamości podczas reinstalacji daje członka, którego kontroler nigdy nie widział. To także powód, dla którego usunięcie wpisu członka różni się od cofnięcia jego autoryzacji. Autoryzowany węzeł, który nadal działa, próbuje dalej, a wpis usunięty, a nie cofnięty, może wrócić jako nowe żądanie z tego samego adresu.
Gdy wycofujesz urządzenie, najpierw cofnij jego autoryzację i potwierdź, że wpis odzwierciedla ten stan, zanim cokolwiek usuniesz. Kolejność jest różnicą między czystym usunięciem a tajemniczym ponownym dołączeniem.
Sprawdź po zmianie
Przeczytaj ponownie wpis sieci, a nie polecenie, które wprowadziło zmianę. Cztery pytania obejmują wynik, a każde z nich może być błędne, podczas gdy pozostałe wyglądają dobrze:
zerotier-cli listnetworks
ip -br addr show
ping -c 2 10.147.20.5
ip route get 10.147.20.5
Pierwsze wypisuje członkostwo i przydzielony adres dla każdej sieci, a drugie pokazuje, czy interfejs naprawdę otrzymał ten adres. Ostatnie dwa dowodzą, że peer w sieci odpowiada i który interfejs przenosi ruch. Zanotuj, które polecenie odpowiedziało na które pytanie, żeby następna osoba zaczynała od dowodów, a nie od pamięci.
Jeśli członkostwo to OK i adres jest obecny, ale peery nie odpowiadają, problem przeniósł się do routingu albo do polityki samego peera. Wyjmij tekst statusu z tej rozmowy, bo wykonał już swoje zadanie. Wpis członkostwa i ścieżka to odrębne tematy, i im wcześniej zostaną rozdzielone, tym krótsze będzie dochodzenie.