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 и адрес есть, но узлы не отвечают, проблема переместилась в маршрутизацию или в политику самого узла. Уберите текст статуса из этого разговора, потому что он уже сделал свою работу. Запись членства и путь — отдельные темы, и чем раньше их разделить, тем короче будет расследование.

Похожие статьи