ZeroTier показує ONLINE, але ACCESS_DENIED: де це виправляти?
ONLINE описує зв’язок із кореневою інфраструктурою; ACCESS_DENIED описує членство в одній мережі. Виправляти потрібно на боці контролера.
ZeroTier повідомляє ONLINE на рівні сервісу й ACCESS_DENIED на рівні мережі, і ця пара не є суперечністю. Перше — твердження про шлях між вашим клієнтом та інфраструктурою координації. Друге — твердження про список учасників однієї мережі. Читайте їх окремо, і комбінація точно скаже, де шукати.
Що вимірює ONLINE
Команда статусу повідомляє, чи має локальний сервіс робочий шлях до кореневих серверів, які координують виявлення вузлів. Про окрему мережу вона не каже нічого, як і про те, чи контролер схвалив цей пристрій. Тому свіжа інсталяція на робочому з’єднанні одразу повідомляє ONLINE, ще до того, як хтось десь її авторизував.
Сприймайте ONLINE як твердження про внутрішні шляхи, а статус кожної мережі — як твердження про членство. Пояснення одного іншим — саме звідси починається більшість цієї плутанини.
Що вимагає ACCESS_DENIED
У приватній мережі контролер веде список учасників. Вузол, якого немає в цьому списку або який є в ньому, але не авторизований, отримує ACCESS_DENIED і жодної конфігурації, крім базового рукостискання. Виправлення — на боці контролера, і йому потрібна адреса вузла, а не ім’я машини, тому порівняйте адресу з виводу клієнта із записом учасника й авторизуйте цей запис.
Перевстановлення клієнта — неправильний перший крок, бо нова інсталяція приносить нову ідентичність, і стара авторизація до неї більше не застосовується. Якщо мережа публічна, той самий статус указує на іншу умову, тож перш ніж просити схвалення, запитайте власника контролера, чи мережа приватна. Це єдине питання вирішує решту розмови.
Текст статусу — це гілка, а не вирок
Кожен статус звужує наступну перевірку, і саме читання їх як одного повідомлення про помилку перетворює двохвилинне виправлення на цілий день перевстановлень. NOT_FOUND означає, що введений вами ідентифікатор на цьому контролері не існує, тому питання про членство ще не досягнуто. REQUESTING_CONFIGURATION означає, що вузол дістався контролера й чекає на конфігурацію, яка не надходить, а це вказує на шлях, а не на авторизацію. OK означає, що членство й конфігурація на місці, тому наступне питання — призначена адреса а потім і сам сервіс.
Дві команди розділяють усе це, і обидві читають той самий клієнт. Довідник CLI ZeroTier перелічує рядки статусу для кожної мережі, які вони повертають. Перша команда — це погляд на сервіс, друга — по мережах:
zerotier-cli status
zerotier-cli listnetworks
Зберігайте текст статусу, коли просите адміністратора про допомогу. Локальна команда join, що надрукувала підтвердження, доводить лише те, що запит прийнято локально, а це інший факт, ніж допуск у мережу.
Членство належить ідентичності
Контролер розпізнає саме файли ідентичності клієнта, тож копіювання конфігурації на іншу машину або очищення ідентичності під час перевстановлення створює учасника, якого контролер ніколи не бачив. Саме тому видалення запису учасника відрізняється від відкликання його авторизації. Авторизований вузол, що досі працює, продовжує намагатися, а запис, видалений, а не відкликаний, може повернутися як новий запит з тієї самої адреси.
Коли виводите пристрій з експлуатації, спершу відкличте авторизацію й переконайтеся, що запис відображає цей стан, перш ніж будь-що видаляти. Порядок — це різниця між чистим видаленням і загадковим повторним входом.
Перевірте після зміни
Перечитайте запис мережі, а не команду, що внесла зміну. Результат охоплюють чотири питання, і будь-яке з них може бути хибним, поки інші виглядають правильними:
zerotier-cli listnetworks
ip -br addr show
ping -c 2 10.147.20.5
ip route get 10.147.20.5
Перша друкує членство й призначену адресу для кожної мережі, а друга показує, чи справді інтерфейс отримав цю адресу. Останні дві доводять, що вузол у мережі відповідає і який інтерфейс несе трафік. Запишіть, яка команда відповіла на яке питання, щоб наступна людина починала з доказів, а не з пам’яті.
Якщо членство OK і адреса є, але вузли не відповідають, проблема перемістилася в маршрутизацію або в політику самого вузла. Приберіть текст статусу з цієї розмови, бо він уже зробив свою роботу. Запис членства й шлях — окремі теми, і що раніше їх розділити, то коротшим буде розслідування.