WireGuard může mít čerstvý handshake a zároveň žádnou adresu a tento stav je soudržný, ne protikladný. Handshake je událost protějšku, adresa patří rozhraní a trasa rozhoduje, kterým směrem paket odchází. Tři vrstvy, tři vlastníci a každá může selhat, zatímco ostatní dvě vypadají zdravě.

Číst je jako jeden stav je to, co z dvouminutové diagnózy udělá celé odpoledne restartování služeb.

Handshake je událost protějšku, ne událost adresování

Handshake WireGuardu dokazuje, že nakonfigurovaný protějšek odpověděl platným klíčem a že klíče relace jsou aktuální. O lokální adrese rozhraní neříká nic a nic o tom, zda tam nějaká trasa vede. Adresu přiděluje pomocník nebo správce sítě, zatímco konfigurace protokolu pouze pojmenovává protějšky a klíče. Záměna těchto dvou věcí je důvod, proč se zdravý handshake čte jako fungující tunel.

Proto wg show může hlásit handshake starý několik sekund na rozhraní, které nepřijme jediný paket z aplikace.

Správce, který rozhraní znovu vytvoří, může adresu zahodit, aniž by se dotkl konfigurace protějšku, a další handshake okamžitě uspěje, protože klíče se nikdy nezměnily. Řádek v logu o úspěšném handshake je přesný a k poruše irelevantní.

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

Adresa rozhraní má svého vlastního vlastníka

Adresa na tunelovém zařízení může pocházet z řádku Address pomocníka, z DHCP klienta běžícího na rozhraní nebo z démona správy, který ji vytvoří při připojení. Ať je to kdokoli, tato komponenta adresu vlastní a podle své logiky ji obnoví, nebo ne. Čtení adresy bez pojmenování jejího vlastníka vám nedá vysvětlení, proč zmizela.

Dva vlastníci na jednom rozhraní jsou klasická porucha. Spuštění pomocníka a desktopového správce sítě nad stejným zařízením vytváří závod, ve kterém jeden odstraní to, co druhý právě nastavil, a protějšek po celou dobu odpovídá.

Vyberte jednoho vlastníka a nechte druhý nástroj spíš pozorovat než spravovat. To rozhodnutí stojí za zapsání, protože symptom se objeví až po týdnech a vypadá jako náhodná ztráta adresy.

Trasa volí směr, rozhraní ne

Vnitřní trasa ukazující na wg0 rozhoduje, že provoz vstoupí do tunelu. Samostatné rozhodnutí posílá šifrované vnější pakety k protějšku a na hostiteli s několika směry přichází toto rozhodnutí z předávací tabulky a pravidel zásad. Wi-Fi roaming může změnit vnější cestu, aniž by se dotkl vnitřní adresy.

Fungující tunel a nedostupný protějšek jsou tedy slučitelné stavy, stejně jako správný protějšek a rozbitá vnitřní trasa. Všechna tři pozorování je třeba vzít společně, ve stejný okamžik, jinak je srovnání bezvýznamné.

Porovnejte tři stavy v jednom průchodu

Tři příkazy jen pro čtení odpovídají na tři otázky v pořadí, které poruchu izoluje nejrychleji. Spusťte je, aniž byste mezi nimi něco měnili.

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

První ukazuje, zda rozhraní vůbec má adresu, a druhý, které zařízení by konkrétní cíl použil právě teď. Třetí hlásí čas posledního handshake a počítadla bajtů a je jediný ze tří, který popisuje protějšek, ne místního hostitele.

Čtěte počítadla i časové razítko. Handshake, který se stále obnovuje, zatímco přenos stojí, znamená, že protějšek odpovídá, ale nic užitečného neprochází, což ukazuje na směrování nebo ACL, ne na klíče. Časové razítko, které se přestane posouvat při existující adrese, ukazuje výš. Oba údaje pocházejí ze stejného řádku výstupu a ani jeden není vidět, pokud jen kontrolujete, zda handshake existuje.

Opravte konkrétní stav, který je špatně, a pak znovu otestujte aplikaci, ne tunel. Čerstvý handshake je důkaz o protějšku a důkaz o protějšku není důkaz, že další požadavek z vašeho prohlížeče najde adresu, trasu a fungující směr. manuál wg-quick výslovně uvádí, které z toho pomocník nastavuje a které patří protokolu.

Související články