WireGuard nepavyksta po neveiklumo: pirmiausia patikrinkite kryptį
Pasibaigęs NAT susiejimas, miegantis radijas ir pasenusi programa po tylos laikotarpio atrodo vienodai. Prieš pridėdami keepalive atskirai patikrinkite įeinantį ir išeinantį srautą.
Prieš bet kokį nustatymo pakeitimą kyla keturi klausimai: ar tas pats išteklius veikia, kol klientas aktyvus, kiek truko neveiklumo laikotarpis, ar įrenginys miegojo, ar pakeitė tinklą, ir ar gedimas pasireiškia tik sraute, kurį pradeda kita pusė. Atsakymai atskiria pasibaigusį NAT susiejimą nuo miegančio radijo ir nuo pasenusios programos. Jie taip pat pasako, ar keepalive apskritai svarbus. Pradėkite nuo krypties, nes tai kainuoja vieną komandą ir pašalina pusę galimų priežasčių.
Kuri kryptis nepavyksta?
Nauja išeinanti kliento užklausa ir srautas, kuris po tylos laikotarpio atvyksta jo link, skirtingai išbando būseną turinčią įrangą. Išeinantys paketai išeidami atkuria susiejimą, o įeinantiems paketams reikia, kad senasis susiejimas būtų išlikęs. Ši asimetrija ir yra visas testas. Jei klientas gali išeiti, bet niekas neįeina, susiejimas tikriausiai pasibaigė, o jei neveikia nė vienas, tunelio arba kliento tinklo prieigos nebėra.
Užsirašykite, kiek truko tylos laikotarpis ir ar įrenginys miegojo, ar tuo metu perėjo į kitą tinklą. Šie du faktai pakeičia diagnozę anksčiau nei bet koks nustatymas.
wg show wg0 latest-handshakes
wg show wg0 endpoints
wg show wg0 transfer
Paleiskite tuos tris prieš tylos laikotarpį ir po jo, nes kiekvienas atsako į kitą klausimo dalį. Nepasistūmėjęs handshake laiko žymė sako, kad pusės nustojo kalbėtis, o pasikeitęs galinis taškas sako, kad susiejimas pajudėjo, o ne mirė. Perdavimo skaitikliai rodo, ar apskritai kas nors atvyko, ir tai yra skirtumas tarp pasenusio susiejimo ir tylios programos. Užsirašykite skaičius abiejuose taškuose, nes palyginimas ir yra įrodymas.
Miegas, radijas ir programos būsena
Telefone ar nešiojamame kompiuteryje miegantis įrenginys gali būti visiškai praradęs tinklo prieigą, o keepalive negali atkurti išjungto radijo ar užbaigti nepatenkinto captive portal. Mobiliosios platformos pagal politiką sustabdo foninį darbą, tad ar periodinis srautas tęsiasi, priklauso nuo platformos ir nuo to, dėl ko programa su ja susitarė. Podėlyje saugomas ryšys yra trečias atvejis ir labiausiai klaidinantis, nes tunelio grįžimas nėra tas pats, kas programos prisijungimas prie jo iš naujo.
Po neveiklumo laikotarpio iš naujo atidarykite programą, o ne pasitikėkite likusiu atviru skirtuku. Jei nauja užklausa pavyksta ten, kur sena sesija nepavyko, tunelis niekada nebuvo problema.
Ką keepalive iš tikrųjų daro
PersistentKeepalive periodiškai siunčia autentifikuotą tuščią paketą partneriui, ir to pakanka NAT susiejimui tarp partnerių išlaikyti gyvą bei kitos pusės galiniam taškui išlaikyti aktualų, kaip aprašo greitas WireGuard paleidimas. Jis nesutaiso miegančio radijo, prarasto maršruto ar programos, kuri niekada nebandys iš naujo. Intervalą pasirinkite per palaikomus kliento nustatymus ir neįjunkite agresyvios reikšmės visur vien todėl, kad būsenos rodinys nutyla.
Dauguma neveiklumo laikotarpių nėra gedimai. Tunelis, kuris po penkių minučių tylos vėl prisijungia, elgiasi teisingai, o problema yra tik atvejis, kai kažkas turėjo atvykti iš kitos pusės.
Palaukite intervalo, kuris anksčiau nepavykdavo
Atlikite vieną palaikomą pakeitimą, tada leiskite praeiti tam pačiam neveiklumo laikotarpiui, prieš vėl testuodami tą išteklių. Laukimas yra testo dalis, o ne formalumas. Tiesioginė sėkmė po prisijungimo iš naujo nieko nesako apie ilgo neveiklumo simptomą, nes prisijungimas iš naujo yra būtent tas įvykis, kuris atstato būseną. Jei problema pasireiškia ir aktyvaus naudojimo metu, grįžkite prie handshake ir duomenų kelio patikrų, o ne pridėkite daugiau periodinio srauto.
Laikykitės vieno pakeitimo vienam testui ir užsirašykite naudotą neveiklumo trukmę. Be to kiekvienas vėlesnis palyginimas nukrypsta ir niekas negali pasakyti, kuris pakeitimas buvo svarbus. Užrašykite keturis faktus kartu: kryptį, trukmę, miego būseną ir programos elgesį.