Юніт пазначаны чырвоным, інтэрфейс існуе, а тунэль пераважна працуе — гэта самая заблытаная з магчымых камбінацый. Наладка ўяўляе сабой паслядоўнасць: спачатку ствараецца інтэрфейс, потым ідуць адрасы, маршруты, налады рэзалвера і любыя каманды-«кручкі». Збой на чацвёртым кроку пакідае першыя тры на месцы, таму імя інтэрфейса сведчыць пра пачатак запуску, а не пра яго завяршэнне. Адна дадатковая дэталь пазбавіла б ад блытаніны: крок, які не ўдаўся.

Частковы стан — гэта звычайная няўдача

Такое паводзіны варта чакаць, а не лічыць пашкоджаннем. Інтэрфейс — самая танны частка наладкі і самая простая, каб яго пакінуць, і менавіта ён робіць машыну паўпрацаздольнай.

Чаго яшчэ няма — гэта ўсё, што ішло пасля кроку, на якім адбыўся збой. Калі збой адбыўся на этапе рэзалвера, адрасы і маршруты ёсць, а DNS няма. Калі ж збой быў на маршруце, у тунэля ёсць адрас, але няма шляху праз яго.

Вынік — машына, якая адказвае на адны праверкі і правальвае іншыя, менавіта таму людзі думаюць, што сэрвіс трапеча, хоць ён ніколі паспяхова не запускаўся. Сэрвіс, які ніколі не завяршыў запуск, трапятаць не можа. Ён можа толькі паўтараць збой па той жа прычыне.

Знайдзіце першы крок, які не ўдаўся

Чытайце журнал юніта, а не толькі бягучы стан, і чытайце яго з пачатку няўдалага запуску. Апошні радок паведаміць код выхаду; першая памылка паведаміць, што рамантаваць.

Гэтыя каманды друкуюць стан юніта, журнал загрузкі для гэтага юніта і жывы стан тунэля:

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

Памылка рэзалвера, ужо існуючы маршрут, «кручок», які завяршыўся з ненулявым кодам, і збой разбору канфігурацыі — усё гэта з'яўляецца ў тым акне, і кожнае называе свой кампанент. Здагадкі толькі па стане інтэрфейса ўсю гэтую інфармацыю ігнаруюць.

Тры ўмовы, якія вызначаюць рамант

Вырашыце, ці вы чысціце, рамантуеце на месцы або прыбіраеце юніт з шляху загрузкі, і вырашыце гэта да таго, як нешта ўводзіць.

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

Гэтыя тры выпадкі ахопліваюць большасць таго, што выглядае загадкавым чырвоным юнітам. Адрознівае пытанне: ці ўзнік бы той жа збой на машыне з чыстым станам, а адказ звычайна дае першы радок памылкі.

Прыбярыце за сабой перад паўторам

Паўтор над існуючым станам можа праваліцца з новай прычыны і схаваць першапачатковую. Апусціце інтэрфейс тым жа сродкам, які яго стварыў, а затым пераканайцеся, што нічога не засталося.

Не выдаляйце непатрэбныя інтэрфейсы і не скідвайце сеткавы стек хаста. І тое, і другое — буйныя дзеянні дзеля дробнага аб'екта, і яны ператвараюць адзін няўдалы тунэль у машыну, іншыя злучэнні якой трэба аднаўляць. Правільны абсяг — адзін інтэрфейс і юніт, які ім валодае. Усё шырэйшае патрабуе прычыны, запісанай да таго, як гэта адбудзецца.

Даказвайце тунэль, а не юніт

Зялёны юніт азначае, што паслядоўнасць запуску завяршылася з нулём. Гэта не азначае, што пакет дайшоў да іншага боку, і не азначае, што рэзалвер наладжаны так, як вы хацелі.

Адпраўце запыт праз тунэль і прачытайце стан, які яго спарадзіў:

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

Рукацісканне без адказу ўсё ж гаворыць, што тунэль утварыўся, а далёкі бок маўчыць; гэта іншая праблема, чым юніт, які так і не запусціўся. Трымайце стан юніта, рукацісканне і вынік запыту ў адным запісе, бо яны збываюць незалежна, і толькі іх спалучэнне апісвае сістэму.

Падобныя артыкулы