Rozhraní naskočí, konfigurace protějšku vypadá správně a žádné handshake se nikdy nedokončí. Přidání výchozí trasy tunelem je krok, který to často způsobuje: stejná směrovací tabulka nyní rozhoduje, kam mají jít vlastní šifrované pakety tunelu, a odpověď, kterou vydá, vede zpět do tunelu. Nic nemůže nést vnější paket, který by nesl vnitřní, takže spojení se zastaví dřív, než začne. Oprava je malá, ale má pořadí a ověření je důležitější než úprava.

Potvrďte smyčku, než změníte trasu

Přečtěte si aktuální adresu koncového bodu protějšku a poté se zeptejte směrovacího zásobníku, kam by paket na tuto adresu šel. Pokud odpověď uvádí rozhraní tunelu, smyčka je potvrzena a další diagnostika není potřeba. Uložte oba výstupy do záznamu o změně, než se čehokoli dotknete, protože srovnání po opravě jsou stejné dva příkazy. Smyčka není nenápadná, jakmile ji uvidíte; obtíž je v tom, že rozhraní vypadá zdravě, zatímco se to děje.

sudo wg show wg1 endpoints
ip route get 198.51.100.20
ip rule show

Zahrňte do toho záznamu i pravidla zásad. Výchozí trasa, která vypadá v hlavní tabulce správně, může stále prohrát s pravidlem, které vybírá jinou tabulku pro označený nebo neoznačený provoz, a smyčka se znovu objeví s tabulkou tras, která vypadá v pořádku.

Čtěte cestu ke koncovému bodu, ne cestu tunelu

Cesta ke koncovému bodu je trasa, kterou šifrované datagramy jdou k veřejné adrese protějšku, a musí zůstat mimo tunel, dokud tunel existuje. Cesta tunelu je vše, co smí protějšek nést. Tyto dvě cesty sdílejí jednu směrovací tabulku, a právě proto je jeden záznam zachycující vše může složit jednu do druhé. Oddělení provozu tunelu od vlastní dopravy tunelu je celý problém návrhu a každý podporovaný nástroj jej řeší někde trochu jinak.

Zkontrolujte obě rodiny adres odděleně, pokud rozhraní nese obě. Fungující vyloučení IPv4 nic neříká o tom, zda je koncový bod IPv6 stále dostupný, a smíšená konfigurace může vypadat funkčně, dokud se nevybere adresa IPv6 protějšku.

Obnovte cestu ke koncovému bodu jednou ucelenou změnou

Existují dva podporované přístupy a jejich míchání je způsob, jak se fungující nastavení stane nepředvídatelným. První je nechat nástroj, který rozhraní vlastní, spravovat celý tunel: wg-quick má vyhrazené zpracování pro výchozí rozsah protějšku, které instaluje samostatnou tabulku, pravidla zásad a značku soketu, což drží vnější pakety mimo tunel. Nechte tento mechanismus nedotčený, místo abyste polovinu reprodukovali ručně. Nastavení, které míchá ručně přidanou výchozí trasu se správcem, který už instaluje značky a pravidla, obvykle selže po opětovném připojení, když správce přepíše stav, který ruční krok předpokládal.

Druhý je ruční návrh, v němž koncový bod dostane výslovnou trasu k hostiteli přes fyzickou bránu. Přidejte tuto trasu před výchozí, nahraďte místo přidání, aby nemohl vyhrát zastaralý záznam, a poté vyhledání potvrďte.

sudo ip route replace 198.51.100.20/32 via 192.0.2.1 dev eth0
ip route get 198.51.100.20
sudo ip route add default dev wg1

Ověřte a poté si ponechte cestu zpět

Časové razítko handshake, které postupuje, je prvním důkazem a je silnější než rozhraní, které prostě existuje. Následujte jej testem aplikace tunelem, poté rozhraní záměrně sundejte a potvrďte, že se hostitel vrací do použitelného stavu, místo aby držel výchozí trasu ukazující do prázdna. Ten poslední krok lidé přeskakují a právě on rozhoduje, zda restart nechá stroj bez spojení.

sudo wg show wg1 latest-handshakes
sudo wg-quick down wg1
ip route show default
ip route get 198.51.100.20

Především tím si uložte aktuální stav směrování a ujistěte se, že existuje vstupní cesta, která nezávisí na tunelu: konzole, adresa pro out-of-band správu nebo kolega na místě. Vzdálený stroj, který ztratí výchozí trasu, nelze obnovit přes spojení, které právě ztratil, a nejbezpečnějším krokem runbooku je ten, který se provede před prvním příkazem.

Související články