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 зад член изисква маршрутизация и препращане отвъд членството, а общият достъп до интернет изисква изходен възел, така че работещ адрес е началото на този тест, а не неговият край.

Подобни статии