VPN prek UDP se v mirovanju ustavi: požarni zid je pozabil vaš tok
Požarni zid lahko zavrže nedejavno preslikavo UDP, medtem ko odjemalec še vedno prikazuje sejo. Izmerite ustavitev, poiščite najkrajši časovnik in izberite popravek.
VPN se poveže, deluje nekaj časa in nato preneha prepuščati promet, medtem ko odjemalec še vedno prikazuje sejo. Ponovna povezava to odpravi, zato je videti kot hrošč v odjemalcu. Običajno je to požarni zid ali naprava NAT, ki je zavrgla nedejavno preslikavo UDP in ne ve, da predor še obstaja.
Simptom je dovolj dosleden za diagnozo: pojavi se po nedejavnosti, ne pod obremenitvijo.
Kako izgleda ustavitev zaradi mirovanja
Izmerite jo, namesto da jo opisujete. Zabeležite, kako dolgo predor miruje, preden se promet ustavi, ali ga nov odhodni paket oživi in ali vmesnik odjemalca še vedno drži svoj naslov. Če nova zahteva odjemalca deluje, odgovor na obstoječi tok pa ne, je sumljiva preslikava. Če nič ne deluje, dokler se znova ne povežete, je izgubljeno tudi stanje seje v odjemalcu.
Oba sta povezana z nedejavnostjo in potrebujeta različne popravke.
Zapišite čase, preden karkoli spremenite. Poročilo, da se ustavi po približno desetih minutah mirovanja, je preverljivo, poročilo, da pada naključno, pa ni. Ta razlika odloča, ali lovite časovnik ali spremembo usmerjanja.
Poiščite napravo, ki je pozabila
Stanje za isti tok lahko hrani več naprav: krajevni usmerjevalnik, prevajalnik višje na poti, meja oblaka in požarni zid gostitelja. Vsaka ima svoj časovnik, in zmaga najkrajši. Petminutna prekinitev običajno pomeni, da je ena naprava nastavljena precej nižje od drugih.
Ne predpostavljajte, da je dokumentirana privzeta vrednost časovna omejitev na vaši poti. To je privzeta vrednost ene naprave.
- Domači usmerjevalnik: pogosto minute, včasih veliko manj.
- Oblakovni NAT ali porazdeljevalnik obremenitve: poiščite dokumentirano časovno omejitev mirovanja posebej za UDP.
- Požarni zid gostitelja: časovniki sledenja netfilter veljajo za vsak tok.
Preverite časovnike na dejanski poti
V Linuxu so časovniki sledenja netfilter vidni in nastavljivi: sysctl net.netfilter.nf_conntrack_udp_timeout in net.netfilter.nf_conntrack_udp_timeout_stream. Drugi velja, ko je bil promet viden v obe smeri, zato lahko vzpostavljen predor preživi preprosto sondo.
RFC 4787 opisuje vedenje UDP NAT in priporočene najnižje vrednosti. To je referenca, ki jo citirajte, ko je privzeta vrednost ponudnika videti nenavadno kratka.
Keepalive in ponovna povezava sta različni orodji
Keepalive ohranja preslikavo pri življenju; ponovna povezava znova zgradi mrtvo sejo. Rešujeta različne okvare in nista zamenljivi nastavitvi hitrosti. Nastavitev PersistentKeepalive v WireGuarda pošilja paket v stalnem intervalu, da drži vez NAT odprto. Možnost keepalive v OpenVPN opravlja isto delo na svoj način. Nobeno ne pomaga, če je naprava v sredini tok že pozabila in zavrača obe smeri.
Zelo pogoste sonde dodajo delo, ne da bi popravile napačno mejo.
Preverite z novo zahtevo, ne s ponovnim nalaganjem strani
Po spremembi časovnika ali dodajanju keepalive ponovite scenarij mirovanja natanko tako kot prej. Nato iz zajete aplikacije pošljite resnično novo zahtevo. Zavihek brskalnika, ki je bil že naložen, se lahko izriše iz predpomnilnika in vam ne pove ničesar.
Če ustavitev vztraja, se premaknite en skok navzven in preverite tabelo stanj te naprave.