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 прямо каже, що з цього налаштовує помічник, а що належить протоколу.

Схожі статті