Jeden peer WireGuardu prepúšťa prevádzku a druhý dokončí handshake, ale nikdy sa nedostane k ničomu za tunelom. Fungujúci peer vám hovorí, že rozhranie, UDP port a kľúč servera sú pravdepodobne v poriadku. O AllowedIPs druhého peera, jeho vnútornej zdrojovej adrese ani o pravidlách preposielania medzi nimi nehovorí nič. Prejdite zoznam po poradí a zastavte sa pri prvom kroku, ktorého podmienka zlyhá.

Krok 1: Zapíšte cestu, ktorou má paket prejsť

Dvaja klienti na rovnakom hube sa k sebe automaticky nedostanú. V usporiadaní hub a lúče server prijme paket na wg0 a musí ho preposlať späť z wg0 druhému peerovi, čo vyžaduje IP preposielanie a pravidlo preposielania. V priamom usporiadaní peer proti peeru každá strana potrebuje endpoint tej druhej a adresu jej tunela v AllowedIPs. Rozhodnite sa, ktoré usporiadanie ladíte, skôr než začnete čítať akúkoľvek konfiguráciu.

Očakávaná cesta vám tiež povie, kam sa pozerať. Ak má paket prejsť cez hub, zlyhávajúcim skokom sú buď AllowedIPs odosielateľa, alebo preposielanie na hube, alebo AllowedIPs príjemcu. Ak má ísť priamo, hub nehrá rolu a záleží na poliach endpointu na oboch peeroch.

Krok 2: Porovnajte AllowedIPs na oboch stranách, nie iba na jednej

WireGuard používa AllowedIPs zároveň ako smerovaciu tabuľku a ako zoznam prístupu. Pri odosielaní sa cieľová adresa hľadá v AllowedIPs peera, aby sa vybral tunel; pri prijímaní musí vnútorná zdrojová adresa spadať do AllowedIPs odosielajúceho peera, inak sa paket zahodí. Chýbajúci rozsah na ktorejkoľvek strane dáva rovnaký príznak: transport funguje, užitočné zaťaženie mizne.

Čítajte živý stav, nie súbor, pretože opätovné načítanie mohlo ticho zlyhať: sudo wg show wg0 allowed-ips. Na serveri musí záznam zlyhávajúceho peera obsahovať adresu jeho tunela, napríklad 10.90.0.3/32. Na klientovi musí záznam peera servera obsahovať cieľ, ktorý testujete, či už je to adresa tunela hubu alebo vzdialená podsiete. Prekrývajúce sa rozsahy robia vyhľadávanie nejednoznačným a môžu vybrať peera, ktorého ste nemali na mysli, preto ich držte oddelene.

Krok 3: Skontrolujte vnútornú zdrojovú adresu

Klient, ktorý smeruje 10.90.0.3 cez wg0, ale posiela pakety zo svojej Wi-Fi adresy, bude príjemcom odmietnutý, pretože zdroj nezodpovedá AllowedIPs peera. Overte, čo jadro skutočne vyberá, pomocou ip route get 10.90.0.3 from 10.90.0.2, a overte adresu priradenú rozhraniu tunela pomocou ip -brief addr show wg0.

Na prijímajúcom hostiteľovi s Linuxom je filtrovanie spätnej cesty druhou bránou. Prísny rp_filter na rozhraní, ktoré vlastní spätnú trasu, môže zahodiť tunelovú prevádzku, ktorej spätná cesta nezodpovedá rozhraniu, cez ktoré prišla. Pred vypnutím skontrolujte efektívnu hodnotu; v mnohých topológiách je správnou opravou trasa, nie uvoľnený filter.

Krok 4: Preverte preposielanie na hube a spätnú cestu

Ak má hub preposielať medzi peermi, jadro potrebuje net.ipv4.ip_forward=1 a firewall musí prijať preposielaný tok: vstup na wg0, výstup na wg0, od adresy tunela odosielateľa k adrese príjemcu. Častou chybou je vstupné pravidlo, ktoré prijíma UDP 51820, ale chýba pravidlo preposielania], takže handshake uspeje a užitočné zaťaženie zomrie. Vypíšte platné pravidlá pomocou sudo nft list ruleset alebo ekvivalentu pre vášho správcu firewallu.

Potom skontrolujte odpoveď. Cieľový hostiteľ musí mať trasu späť k odosielateľovi, buď cez hub, alebo cez vlastnú bránu. Ak hub robí aj NAT pre podsiete tunela, overte, že preklad sa vzťahuje na preposielaný tok a že odpoveď dorazí k hubu pred vypršaním stavu. Jednosmerná porucha, ktorá vyzerá ako problém s kľúčom, je často práve touto spätnou trasou.

Nakoniec oddeľte handshake od dát. Peer, ktorý dokončí handshake, ale zasekne sa pri veľkých prenosoch, má zvyčajne problém s MTU alebo MSS práve na tejto ceste, nie problém s AllowedIPs. Testujte najprv malým pingom, potom pingom plnej veľkosti, a oboch peerov porovnajte.

Krok 5: Zmeňte jednu vec a udržte fungujúceho peera nedotknutého

Urobte jedinú zmenu na zlyhávajúcej ceste a oboch peerov znova otestujte. Nahradenie AllowedIPs každého peera hodnotou 0.0.0.0/0 je najrýchlejší spôsob, ako rozbiť peera, ktorý už fungoval, pretože mení rozhodnutie o smerovaní pre všetku prevádzku na tomto rozhraní. Upravte ten jeden záznam, znova načítajte a prečítajte živý stav.

Zaznamenajte, ktorá cesta uspela, ktorá zlyhala, a presný výstup príkazu pre každú. Toto porovnanie má väčšiu cenu než všeobecná správa, že VPN je pokazená, a je to prvé, na čo sa bude nasledujúci človek pýtať.

Súvisiace články