Юнитът е червен, интерфейсът съществува, а тунелът до голяма степен работи — това е най-объркващата възможна комбинация. Настройката е последователност: първо се създава интерфейсът, после следват адреси, маршрути, настройки на резолвера и всякакви hook команди. Провал на четвъртата стъпка оставя първите три на място, така че името на интерфейса е доказателство, че стартирането е започнало, а не че е завършило. Един допълнителен факт щеше да спести объркването: стъпката, на която е имало провал.

Частичното състояние е нормалният провал

Това поведение заслужава да се очаква, вместо да се приема за повреда. Интерфейсът е най-евтината част от настройката и най-лесната за изоставяне, а освен това е частта, която кара машината да изглежда полуработеща.

Това, което още не съществува, е всичко след провалената стъпка. Ако провалът е бил на етапа на резолвера, адресите и маршрутите ги има, а DNS няма. Ако е бил маршрут, тунелът има адрес и никакъв път през него.

Резултатът е машина, която отговаря на едни тестове и се проваля на други, затова хората заключават, че услугата трепти, а тя никога не е стартирала успешно. Услуга, която никога не е завършила, не може да трепти. Тя може само да се проваля повторно по същата причина.

Намерете първата провалена стъпка

Четете журнала на юнита, а не само текущия статус, и го четете от началото на неуспешното стартиране. Последният ред ви дава кода на изход; първата грешка ви казва какво да поправите.

Тези команди показват състоянието на юнита, журнала за зареждане на този юнит и живото състояние на тунела:

systemctl status wg-quick@wg0
journalctl -u wg-quick@wg0 -b --no-pager | tail -40
wg show
ip -4 addr show dev wg0

Грешка на резолвера, вече съществуващ маршрут, hook, приключил с ненулев код, и провал при разчитане на конфигурацията — всички се появяват в този прозорец и всяко назовава своя компонент. Да гадаете само по състоянието на интерфейса означава да пренебрегнете цялата тази информация.

Три условия, които решават поправката

Решете дали чистите, дали поправяте на място или махате юнита от пътя за зареждане, и го решете, преди да напишете каквото и да е.

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

Тези три случая покриват повечето от това, което изглежда загадъчен червен юнит. Разграничаващият въпрос е дали същият провал би се случил на машина с чисто състояние, а отговорът обикновено идва от първия ред с грешка.

Изчистете, преди да опитате отново

Повторен опит върху съществуващо състояние може да се провали по нова причина и да скрие първоначалната. Свалете интерфейса със същия инструмент, който го е създал, и после потвърдете, че не е останало нищо.

Не изтривайте несвързани интерфейси и не нулирайте мрежовия стек на хоста. И двете са големи действия за оправяне на малък обект и превръщат един провален тунел в машина, на която другите връзки трябва да се установят наново. Правилният обхват е един интерфейс и юнитът, който го притежава. Всичко по-широко изисква записана причина, преди да се случи.

Докажете тунела, не юнита

Зеленият юнит означава, че последователността на стартиране е излязла с нула. Това не означава, че пакет е стигнал до другата страна, и не означава, че резолверът е настроен както сте искали.

Изпратете заявка през тунела и прочетете състоянието, което я е произвело:

systemctl is-active wg-quick@wg0
wg show wg0 latest-handshakes
ping -c 3 10.63.0.1
resolvectl query internal.example.net

Ръкостискане без отговор все пак ви казва, че тунелът се е образувал и далечната страна мълчи, което е различен проблем от юнит, който никога не е стартирал. Пазете състоянието на юнита, ръкостискането и резултата от заявката в един запис, защото те се провалят независимо и само комбинацията описва системата.

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