ZeroTier показывает участника как OK, сеть подключена, а адреса для ping всё равно нет. Такое сочетание кажется ошибкой и обычно означает разделённую конфигурацию: одобрение участника — один переключатель, а выдача ему адреса — другой. Сеть может принять устройство и так и не назначить ему ничего, потому что пул адресов или режим назначения не был настроен.

Прочитайте обе стороны, прежде чем менять любую из них. Ответ виден в двух местах, и только одно из них находится на контроллере.

Авторизация и назначение — разные переключатели

Авторизация отвечает, может ли этот узел участвовать в сети. Назначение адреса отвечает, что сеть даёт ему после участия, и этот ответ складывается из пула адресов и режима назначения. Ни одна настройка не подразумевает другую. Одна — разрешение, другая — распределение.

Конфигурация контроллера обычно содержит управляемый маршрут, диапазон адресов и режим, определяющий, используется ли автоматическое назначение. Копирование идентификатора сети из другого окружения приносит членство и ничего из этой конфигурации.

Поэтому устройство может выглядеть здоровым в списке участников, а столбец назначенного адреса остаётся пустым. Контроллер его принял и ему нечего дать. Оба утверждения верны одновременно.

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

Чтение фактического состояния участника

Спросите клиент, что он действительно получил, а не что задумывал контроллер. Обычный список показывает столбцы состояния и адреса, а форма JSON показывает конфигурацию сети, применённую клиентом, включая управляемые адреса и маршруты.

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

Сравнивайте два вывода для одного и того же идентификатора сети, а не для физических адаптеров, которые видны в собственном списке операционной системы. Строка, сообщающая OK с пустым набором адресов, подтверждает пробел в назначении, а не сбой связи. Чтение не той строки — вторая половина этой ошибки.

Состояние ACCESS_DENIED указывает обратно на авторизацию, и это другой ремонт. Если команда вообще не может прочитать локальный токен аутентификации, проблема в локальных правах, а не в отказе контроллера, и исправление выполняется на машине, за которой вы сидите.

Когда клиент игнорирует то, что присылает контроллер

У клиента есть собственные настройки, решающие, применяется ли управляемая конфигурация. Профиль, отключающий управляемые адреса, управляемые маршруты или обработку маршрута по умолчанию, отбросит то, что присылает сеть, а список участников со стороны контроллера всё равно будет выглядеть правильным.

Эти флаги влияют только на локальный узел. Их изменение не меняет того, что получают другие участники, и не исправляет пул, который никогда не был задан.

Итак, у диагностики две ветви: либо у контроллера нет адреса, чтобы его выдать, либо клиент отказался от выданного. Они ведут к разным ремонтам на разных машинах. Вывод JSON их различает, потому что адрес либо отсутствует в конфигурации сети, либо присутствует и отсутствует в применённом состоянии клиента.

Что исправить вместо того, чтобы придумывать адрес

Ввод произвольного статического адреса — соблазнительный третий вариант и худший. Случайный адрес может войти в конфликт с другим узлом, оказаться вне маршрутов, которые распространяет сеть, или попасть в диапазон, который правила брандмауэра обрабатывают иначе. Он также скрывает отсутствующий пул от всех, кто посмотрит на сеть потом. Исправьте вместо этого назначение и дайте контроллеру и клиенту договориться о результате.

Спросите администратора, что сеть должна выдавать, затем проверьте, что пул покрывает нужный диапазон и режим назначения включён. Переподключитесь после изменения, а не ждите, что клиент сам сразу перейдёт на новую конфигурацию.

Как только адрес появится, проверьте то, что вам действительно было нужно: пира, сервис или подсеть за шлюзом. Доступ к LAN за участником требует маршрутизации и пересылки сверх членства, а общий доступ в интернет требует выходного узла, поэтому работающий адрес — это начало такой проверки, а не её конец.

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