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

Четенето им като един статус е това, което превръща двуминутната диагностика в цял следобед от рестартиране на услуги.

Ръкостискането е събитие на партньора, а не събитие на адресиране

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

Затова wg show може да отчете ръкостискане на секунди на интерфейс, който не може да приеме нито един пакет от приложение.

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

ObservationWhich layer it belongs toWrong conclusion it invites
Handshake a few seconds oldPeer and keysThe tunnel is usable for application traffic
Address present on wg0Interface configurationTraffic actually egresses through it
Route points at wg0Forwarding tableThe outer packet uses the intended uplink

Адресът на интерфейса има свой собствен собственик

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

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

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

Маршрутът избира канал, интерфейсът не

Вътрешен маршрут, сочещ към wg0, решава, че трафикът влиза в тунела. Отделно решение изпраща шифрованите външни пакети към партньора и на хост с няколко канала това решение идва от таблицата за препращане и правилата за политика. Wi-Fi роумингът може да смени външния път, без да пипа вътрешния адрес.

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

Сравнете трите състояния за един проход

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

ip address show dev wg0
ip route get 10.80.0.1
wg show wg0 latest-handshakes transfer

Първата показва дали интерфейсът изобщо има адрес, а втората — кое устройство би използвала конкретна дестинация точно сега. Третата отчита времето на последното ръкостискане и броячите на байтове и тя е единствената от трите, която описва партньора, а не локалния хост.

Четете броячите, както и времевата отметка. Ръкостискане, което се обновява постоянно, докато трансферът стои на едно място, означава, че партньорът отговаря, но нищо полезно не преминава, което сочи към маршрутизация или ACL, а не към ключове. Времева отметка, която спира да напредва при наличен адрес, сочи нагоре по веригата. И двете четения идват от един и същ ред от изхода и нито едно не се вижда, ако проверявате само, че ръкостискане съществува.

Коригирайте конкретното състояние, което е грешно, после тествайте отново приложението, а не тунела. Скорошното ръкостискане е доказателство за партньора, а доказателството за партньора не е доказателство, че следващата заявка от браузъра ви ще намери адрес, маршрут и работещ канал. Ръководството за wg-quick е изрично кое от тях настройва помощникът и кое принадлежи на протокола.

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