Kaip išmatuoti OpenVPN kliento veikimo laiką su up ir down kabliukais
OpenVPN neturi veikimo laiko skaitiklio. Išsaugokite epoch žymą iš up kabliuko, ištrinkite ją ties down, atimkite ir išlaikykite teisingą per perkrovimus ir egzempliorius.
Ataskaitų skydelis prašo skaičiaus, kiek laiko ryšys yra aktyvus, o OpenVPN jo nepateikia. Klientas žino, kada jo tunelis pakilo, bet tik jei kas nors užfiksuoja tą momentą prieš prarandant sesijos būseną. Palaikoma vieta yra up kabliukas, o vertė, kurią verta saugoti, yra neapdorota epoch sekundė, o ne suformatuota eilutė. Viskas po to yra aritmetika, plius kelios tvarkos taisyklės, kurios nusprendžia, ar skaičius išlieka teisingas.
Įsitikinkite, kad kabliukai tikrai vykdomi
Įrodykite, kad kabliukas suveikia prieš ką nors projektuojant aplink jį. Minimaliai kliento konfigūracijai reikia script-security 2 ir aiškių kelių up bei down; be saugumo eilutės OpenVPN atsisako vykdyti scenarijų ir tai pasako tiesiai. Pridėkite up-restart ir down-pre tuo pačiu metu, kad perkrovimo ir išardymo keliai elgtųsi nuspėjamai.
Padarykite pirmąją kabliuko versiją tokią, kad ji pridėtų savo aplinką į failą ir nieko daugiau nedarytų. Tai parodo kintamųjų pavadinimus, kuriuos jūsų rinkinys iš tikrųjų eksportuoja, pavyzdžiui dev ir script_type, o ne tuos, kuriuos prisimenate iš kitos versijos. Paleiskite vieną prisijungimą ir vieną atsijungimą, tada perskaitykite failą. Jei niekas nepasirodo, sustokite čia, nes laiko žymos dizainas ant kabliuko, kuris niekada neveikia, savaites atrodys kaip stebėjimo gedimas.
Patikrinkite, kokiu naudotoju veikia kabliukas. Kai nustatyti user ir group, OpenVPN atsisako privilegijų prieš vykdydamas scenarijus, todėl katalogas, į kurį root gali rašyti, gali būti uždarytas kabliukui. Pasirinkite kelią iš paslaugos požiūrio, o ne iš savo apvalkalo.
Užfiksuokite vieną epoch reikšmę ir sąmoningai ją ištrinkite
up kabliukui reikia vienos eilutės, date +%s > /run/openvpn-client.started, kelias pritaikytas kiekvienam egzemplioriui. Epoch reikšmė vėliau išvengia kalbos, laiko juostos ir formato klausimų, ir tai tas pats skaičius, kurį stebėjimo agentas gali palyginti su savo laikrodžiu.
Trynimas svarbus tiek pat, kiek rašymas. down kabliukas turėtų ištuštinti arba pašalinti failą, o down-pre tai padaro prieš uždarant sąsają, o tai pašalina langą, kuriame failas aprašo jau dingusį tunelį. up-restart tada atnaujina žymą vidinio perkrovimo metu, o ne palieka pradinę reikšmę vietoje. Be šios poros perkrovimas po ping skirtojo laiko duoda skaičių, kuris toliau kyla, kol tunelis vėl kuriamas.
Pasirinkite vietą su tinkamu gyvavimo laiku. Failas po /run dingsta perkraunant, o tai atitinka tikrovę, tuo tarpu failas po /tmp gali būti netikėtai išvalytas, o konfigūracijos kataloge esantis išlieka klaidinančiai. Nustatykite leidimus taip, kad tik paslaugos naudotojas ir stebėjimo skaitytojas galėtų jį skaityti.
Apskaičiuokite veikimo laiką nepasitikėdami žurnalo eilutėmis
Perskaitykite išsaugotą sekundę, perskaitykite dabartinę sekundę, atimkite. Kai failo nėra arba jis tuščias, sąžiningas atsakymas yra tai, kad nėra aktyvaus tunelio, o ne tai, kad veikimo laikas yra nulis, nes šios dvi būsenos turėtų kelti skirtingus įspėjimus. Laikykite neapdorotas sekundes stebėjimo naudingojoje apkrovoje, o dienas ir valandas formatuokite atvaizdavimo sluoksnyje. Formatuotojas, kuris apvalina eksportuotojo viduje, išmeta tikslumą, kurio per incidentą kažkas norės.
Žurnalo laiko žymų analizavimas yra viliojantis trumpiausias kelias, ir jis žlunga trimis būdais: formatas seka bet kokias nustatytas parinktis, rotacija pašalina istoriją, o pakartotiniai prisijungimai rodomi kaip atskiros sesijos, o ne vienas nenutrūkstamas tunelis. Kabliukas įvykį įrašo vieną kartą, tą akimirką, kai jis įvyksta.
Kai patikra vykdoma kitame pagrindiniame kompiuteryje, siųskite laiko žymą, o ne trukmę, kad skaitytojas pritaikytų savo laikrodį. Tada mažas neigiamas rezultatas skaitomas kaip laikrodžių skirtumas, o ne kaip sugedęs kabliukas.
Aprėpkite pakartotinius prisijungimus, perkrovimus ir kelis egzempliorius
Du tuneliai viename pagrindiniame kompiuteryje reikalauja dviejų failų, raktas yra egzemplioriaus pavadinimas, kurį paslauga jau naudoja. Bendras kelias reiškia, kad naujausias prisijungimas perrašo kiekvieno profilio pradžios laiką, o simptomas yra skaičius, kuris šokteli atgal, kai prasideda antras tunelis.
Pakartotinio prisijungimo elgsena nusipelno atskiro testo, nes būtent ten patikimas dizainas tyliai praneša apie neteisingą dalyką. Priverskite perkrovimą numesdami partnerį arba siųsdami procesui signalą, tada palyginkite sąsajos būseną su failu. Laiko žyma turėtų pajudėti į priekį tuo momentu, kai tunelis grįžta.
Serverio pusėje būsenos failas turi connected-since reikšmę kiekvienam klientui, kuri atsako į kitą klausimą: kada serveris paskutinį kartą matė tą partnerį. Naudokite ją kryžminei patikrai, o ne kaip pakaitalą, nes ji dingsta kartu su sesija, kurią aprašo. Nė vienas matavimas nieko nesako apie aplikacijos, esančios už tunelio, būklę.
Atlikite tris patikras, kurios pagauna tvarkos klaidas
Išbandykite įprastą prisijungimą, priverstinį pakartotinį prisijungimą ir švarų sustabdymą, po kiekvieno kartu skaitydami sąsajų sąrašą ir failą. Žyma, kuri vis dar yra po švaraus sustabdymo, arba failas, teigiantis tunelį, kurio nėra sąsajų sąraše, tiesiogiai nurodo kabliukų tvarką. Patikras atlikite kaip paslaugos naudotojas ir su paslaugos keliais, nes root apvalkalas gali matyti kitą failą ir duoti užtikrintą neteisingą atsakymą. Tada palikite lėtą apklausėją skaityti failą ir patvirtinkite, kad jis niekada į jį nerašo.
Apklausa kas šešiasdešimt sekundžių padengia įspėjimus, ir nė vienas kabliukas neturėtų pasikliauti tuo, kad ta apklausa gyva. Laikykite šias dvi atsakomybes atskirai, ir skaičius išliks patikimas, kai bet kuri pusė bus iš naujo įdiegta.