Handshake WireGuardu proběhne, ale odpověď se nevrací
Nedávný handshake dokazuje, že klíče fungují. Sledujte jednu vnitřní adresu a přečtěte si přenosové počítadla, než obviníte tunel, firmware nebo klíče.
Nedávné handshaky jsou dobrá zpráva a mnohem menší tvrzení než věta, kterou lidé chtějí napsat. Protistrany si vyměnily autentizované zprávy handshaku. Paket aplikace se však stále musí dostat na své vnitřní cílové místo a vrátit se.
Tato propast mezi zdravou řídicí rovinou a tichou datovou rovinou je celé téma tohoto článku. Dvě odečtení stejných počítadel vám řeknou, na které straně stojíte.
Handshake dokazuje klíče, ne doručení
Handshake WireGuardu je dohoda o klíčích s autentizací. Podaří se, jakmile na sebe protistrany dosáhnou a mají platné klíče. Směrování, pravidla firewallu i samotné cílové místo jsou otázky, které handshake nikdy nepoloží.
Tunel tedy může být dokonale navázán, zatímco každý paket uvnitř se zahazuje. Špatně směrovaný vnitřní paket a odpověď, která se vydá jinou cestou, vypadají z pohledu klienta stejně.
Jedna vnitřní adresa je celý test
Vyberte jedno cílové místo a zůstaňte u něj. Vlastní adresa tunelu protistrany je nejjednodušší případ a host za protistranou přidá právě jeden skok. Přepínání mezi nimi bez poznámky o změně dává výsledky, které nikdo nedokáže porovnat.
Pak se podívejte na trasu, kterou klient volí. Konkrétnější místní trasa může paket poslat jinam dřív, než se WireGuard vůbec zeptá, což se stává vždy, když se domácí LAN překrývá se vzdáleným rozsahem.
ip route get 10.30.8.10
ip -4 addr show wg0
ip route show table all | grep -w wg0
Adresa, která se přeloží na fyzické rozhraní, už na otázku odpověděla. Tunel nic nezahazuje. Paket do něj nikdy nevstoupil.
Počítadla jsou důkaz, ne verdikt
wg show hlásí odeslané a přijaté bajty pro každou protistranu a ta dvě čísla se pohybují nezávisle. Odečtěte hodnoty, proveďte jeden povolený požadavek a pak do stejné minuty odečtěte znovu.
wg show wg0 transfer
wg show wg0 latest-handshakes
ping -c 4 10.30.8.10
wg show wg0 transfer
Rostoucí odesílání při plochém přijímání je podpis neopovězeného požadavku. Neříká, zda byl požadavek filtrován, zda bylo cílové místo mimo provoz nebo zda odpověď odešla jinou trasou. To jsou tři vyšetřování se stejným příznakem. Oddělte je, než změníte jakoukoli konfiguraci.
Ani pevný počet bajtů není prahem úspěchu. Hodnoty počítadel sledují provoz a braní jednoho čísla jako důkazu zdraví dává sebevědomý nesmysl.
Protistrana si vracející se paket kontroluje sama
Vzdálená protistrana přijme vnitřní paket jen tehdy, když zdroj padne do jejího allowedips. Trasa, která existuje u odesílatele, nestačí. Chybějící záznam zdroje u příjemce tiše zahodí zpětný provoz.
Firewally hostitele stojí za touto kontrolou. Pravidlo přesměrování, které povolí rozhraní tunelu, ale ne vnitřní podsíť, handshake přijme a paket odmítne. Z pohledu klienta to vypadá přesně jako mrtvá protistrana. Host se dvěma rozhraními může také odpovědět ze špatného zdroje a protistrana pak zahodí odpověď, kterou nikdy nečekala.
Udržte experiment poctivý
Testování profilu vzdáleného přístupu ze stejné domácí sítě, kterou má dosáhnout, procvičuje jinou cestu, než byla zamýšlena. Přesuňte se na externí síť a poznamenejte její místní prefix, aby se oba běhy daly porovnat.
Malá úspěšná výměna také nevylučuje všechny problémy s cestou. Větší pakety mohou selhat tam, kde malé projdou, a filtr, který odpovídá velikosti nebo protokolu, se pod zátěží může chovat jinak.
Nechte handshake jako známou funkční fázi a postupujte od ní dál. Dalším užitečným důkazem je, kde se jeden vnitřní požadavek zastaví, ne nová sada klíčů a další kolo hádání.