Domácí krabice otevře tunel a bez potíží dosáhne cloudového serveru. Cloudový server dokáže dosáhnout domácí aplikace minutu nebo dvě poté, co domácí krabice naposledy něco poslala, a pak přestane. V logu WireGuardu se nic neobjeví, žádná chyba handshake se nehlásí a restart tunelu to na krátko spraví. Tento vzorec je mapování, které vyprší, ne porouchaný tunel, a runbook níže to potvrdí dřív, než se cokoli změní.

Potvrďte, že vzorec je vypršení mapování při nečinnosti

Rozlišujícím detailem je časování. Pokud reverzní spojení funguje hned poté, co domácí peer pošle provoz, a po tichém intervalu selže, cesta je v pořádku a stav uprostřed ne. Pokud nikdy nefungovalo, dokonce ani hned po provozu, je to špatná diagnóza.

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

Spusťte první dva příkazy hned poté, co domácí peer něco pošle, počkejte pět minut a spusťte je znovu. Časové razítko handshake, které se obnovuje podle plánu bez nového koncového bodu, vám říká, že tunel žije. Změnila se schopnost nevyžádaných paketů přicházet zvenčí, což je vlastnost cesty, ne tunelu.

Pak zkuste reverzní pokus a sledujte přenosové počítadla. Pokud cloudová strana posílá bajty a domácí strana nepřijímá nic, paket opustil cloud a cestou zahynul v zařízení se stavem. To je podpis, který hledáte. Pokud se obě počítadla hýbou, tunel paket doručil a podezřelým je aplikace.

Umístěte keepalive na peer za routerem

Trvalé keepalive udržují mapování NAT a jakýkoli stav firewallu naživu tím, že podle plánu posílají malý autentizovaný paket. Nastavení patří stroji za routerem, do jeho záznamu pro vzdálený peer, protože to je strana, jejíž odchozí paket stav vytváří.

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

Sloučte ho s existující sekcí peeru. Přidání druhého bloku se stejným veřejným klíčem není platný způsob přidávání voleb a wg-quick je za vás nesloučí. Dokumentovaných 25 sekund je příklad zvolený tak, aby ležel pod běžnými časovými limity UDP, ne hodnota s nějakým zvláštním významem.

Umístění stejné direktivy na cloudovou stranu tomuto problému nepomůže. Pakety tohoto peeru už přicházejí z veřejné adresy, takže ve směru, na kterém záleží, není co zachovávat. Přidává provoz a nic nemění.

Čtěte časovače místo hádání intervalu

Keepalive fungují, protože přicházejí častěji, než stav vyprší. Proto je časový limit číslo, které skutečně potřebujete, a v Linuxu ho lze přečíst na zařízení, které provádí překlad:

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

První hodnota je časový limit pro UDP tok, který byl viděn jen jedním směrem, a druhá platí, jakmile jsou pozorovány odpovědi. Obě bývají krátké a mapování, které ztichne, se bude řídit tím, co platí pro váš tok.

Porovnejte to číslo se svým intervalem. Keepalive 25 sekund při limitu 30 sekund funguje; stejný keepalive při limitu 15 sekund nefunguje. Žádné opakování tuto aritmetiku nezmění. Některé spotřebitelské routery a mobilní operátoři používají mnohem kratší hodnoty než výchozí Linux, proto konfigurace, která funguje v jedné síti, selže v jiné.

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

Zkontrolujte posluchač a firewall odděleně

Živé mapování je nutné a nestačí. Aplikace na domácí krabici musí naslouchat na správné adrese a hostitelský firewall musí paket po dešifrování povolit.

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

Pokud je socket svázán jen s adresou fyzického rozhraní, a ne s adresou tunelu, pakety přicházející tunelem se zahodí dřív, než se firewall vůbec zkontroluje. Tato porucha vypadá z cloudové strany stejně jako problém s mapováním a přežije každé nastavení keepalive.

Kontrola seznamu povolených je stejně důležitá i v opačném směru. Cloudový peer musí povolit adresu domácího tunelu jako zdroj, pokud bude odpovídat, a domácí peer musí povolit cloudovou adresu jako cíl. Keepalive pakety jsou autentizovaný provoz a uplatňují stejná pravidla, proto keepalive, který vypadá funkčně, může existovat vedle aplikace, která nefunguje.

Nasaďte změnu a znáte její meze

Použijte nastavení, restartujte rozhraní, pokud je to váš způsob aktualizace, a pak zopakujte test nečinnosti místo okamžitého testu. Počkejte déle než časový limit, který jste si přečetli dřív, udělejte reverzní požadavek a potvrďte, že se počítadla pohnula na obou koncích.

Zapište interval a naměřený časový limit vedle něj. Budoucí změna firmwaru routeru nebo přechod na mobilní připojení může limit změnit. Poznámka je to, co někomu umožní hodnotu znovu odvodit místo zkopírování. Dvě čísla na jednom řádku později ušetří celé vyšetřování.

Trvalé keepalive chrání stav. Neotevírají port, nepřidávají záznam do seznamu povolených a nezpůsobí, že se objeví posluchač. Když reverzní spojení nefunguje vůbec, vina je v jedné z těch tří věcí, a rychlý start WireGuardu popisuje nastavení keepalive ve stejně úzkých termínech.

Související články