Domáca krabica otvorí tunel a bez problémov dosiahne cloudový server. Cloudový server dokáže dosiahnuť domácu aplikáciu minútu alebo dve po tom, čo domáca krabica naposledy niečo poslala, a potom prestane. V logu WireGuardu sa nič neobjaví, nehlási sa žiadna chyba handshake a reštart tunela to na krátko opraví. Tento vzor je mapovanie, ktoré vyprší, nie pokazený tunel, a runbook nižšie to potvrdí skôr, než sa čokoľvek zmení.

Potvrďte, že vzor je vypršanie pri nečinnosti

Rozlišujúcim detailom je časovanie. Ak reverzné spojenie funguje hneď po tom, čo domáci peer pošle prevádzku, a zlyhá po tichom intervale, cesta je v poriadku a stav v strede nie. Ak nikdy nefungovalo, dokonca ani hneď po prevádzke, je to nesprávna diagnóza.

sudo wg show wg0 latest-handshakes
sudo wg show wg0 endpoints
sudo wg show wg0 transfer

Spustite prvé dva hneď po tom, čo domáci peer niečo pošle, počkajte päť minút a spustite ich znova. Časová pečiatka handshake, ktorá sa obnovuje podľa plánu bez nového koncového bodu, vám hovorí, že tunel žije. Zmenila sa schopnosť nevyžiadaných paketov prichádzať zvonka, čo je vlastnosť cesty, nie tunela.

Potom skúste reverzný pokus a sledujte prenosové počítadlá. Ak cloudová strana posiela bajty a domáca strana neprijíma žiadne, paket opustil cloud a cestou zahynul v zariadení so stavom. To je podpis, ktorý hľadáte. Ak sa obe počítadlá hýbu, tunel paket doručil a podozrivým je aplikácia.

Umiestnite keepalive na peer za routerom

Trvalé keepalive udržiavajú mapovanie NAT a akýkoľvek stav firewallu nažive tým, že podľa plánu posielajú malý autentizovaný paket. Nastavenie patrí stroju za routerom, do jeho záznamu pre vzdialený peer, pretože to je strana, ktorej odchádzajúci paket vytvára stav.

[Peer]
PublicKey = <cloud peer public key>
AllowedIPs = 10.71.0.1/32
PersistentKeepalive = 25

Zlúčte ho s existujúcou sekciou peeru. Pridanie druhého bloku s rovnakým verejným kľúčom nie je platný spôsob pridávania možností a wg-quick ich za vás nezlúči. Dokumentovaných 25 sekúnd je príklad zvolený tak, aby ležal pod bežnými časovými limitmi UDP, nie hodnota s nejakým zvláštnym významom.

Umiestnenie tej istej direktívy na cloudovú stranu tomuto problému nepomôže. Pakety tohto peeru už prichádzajú z verejnej adresy, takže v dôležitom smere nie je čo zachovávať. Pridáva prevádzku a nič nemení.

Čítajte časovače namiesto hádania intervalu

Keepalive fungujú, pretože prichádzajú častejšie, než stav vyprší. Preto je časový limit číslo, ktoré skutočne potrebujete, a v Linuxe ho možno prečítať na zariadení, ktoré robí preklad:

sysctl net.netfilter.nf_conntrack_udp_timeout
sysctl net.netfilter.nf_conntrack_udp_timeout_stream
sudo conntrack -L -p udp --dport 51820

Prvá hodnota je časový limit pre UDP tok, ktorý bol videný len jedným smerom, a druhá platí, keď boli pozorované odpovede. Obe bývajú krátke a mapovanie, ktoré stíchne, sa bude riadiť tým, čo platí pre váš tok.

Porovnajte to číslo so svojím intervalom. Keepalive 25 sekúnd pri limite 30 sekúnd funguje; ten istý keepalive pri limite 15 sekúnd nefunguje. Žiadne opakovanie tú aritmetiku nezmení. Niektoré spotrebiteľské routery a mobilní operátori používajú oveľa kratšie hodnoty než predvolená hodnota Linuxu, preto konfigurácia, ktorá funguje v jednej sieti, zlyhá v inej.

ObservationWhat it meansReasonable response
Works after traffic, dies when idleMapping or firewall state expiringLower the keepalive interval
Never works, even immediatelyNo return route, listener or firewallStop tuning keepalive
Works for hours, then dies onceCarrier-side translation or address changeCheck the endpoint and logs together

Skontrolujte poslucháč a firewall oddelene

Živé mapovanie je nutné a nestačí. Aplikácia na domácej krabici musí počúvať na správnej adrese a hostiteľský firewall musí paket po dešifrovaní povoliť.

sudo ss -lntup | grep 8080
sudo wg show wg0 allowed-ips
curl -sS -m 5 http://10.71.0.2:8080/health

Ak je socket zviazaný len s adresou fyzického rozhrania a nie s adresou tunela, pakety prichádzajúce tunelom sa zahodia skôr, než sa firewall vôbec skontroluje. Táto porucha vyzerá z cloudovej strany rovnako ako problém s mapovaním a prežije každé nastavenie keepalive.

Kontrola zoznamu povolených je rovnako dôležitá aj v opačnom smere. Cloudový peer musí povoliť adresu domáceho tunela ako zdroj, ak bude odpovedať, a domáci peer musí povoliť cloudovú adresu ako cieľ. Keepalive pakety sú autentizovaná prevádzka a uplatňujú rovnaké pravidlá, preto keepalive, ktorý vyzerá funkčne, môže existovať vedľa aplikácie, ktorá nefunguje.

Nasaďte zmenu a poznajte jej hranice

Použite nastavenie, reštartujte rozhranie, ak je to váš spôsob aktualizácie, a potom zopakujte test nečinnosti namiesto okamžitého testu. Počkajte dlhšie než časový limit, ktorý ste si prečítali predtým, urobte reverznú požiadavku a potvrďte, že sa počítadlá pohli na oboch koncoch.

Zapíšte interval a nameraný časový limit vedľa neho. Budúca zmena firmvéru routera alebo prechod na mobilné pripojenie môže limit zmeniť. Poznámka je to, čo niekomu umožní hodnotu znova odvodiť namiesto skopírovania. Dve čísla na jednom riadku neskôr ušetria celé vyšetrovanie.

Trvalé keepalive chránia stav. Neotvárajú port, nepridávajú záznam do zoznamu povolených a nespôsobia, že sa objaví poslucháč. Keď reverzné spojenie nefunguje vôbec, vina je v jednej z tých troch vecí, a rýchly štart WireGuard opisuje nastavenie keepalive v rovnako úzkych termínoch.

Súvisiace články