Kuidas mõõta OpenVPN kliendi tööaega up- ja down-konksudega
OpenVPN-il pole tööaja loendurit. Salvesta up-konksust epoch-tempel, kustuta see down-konksus, lahuta see maha ja hoia seda ausana üle taaskäivituste ja eksemplaride.
Armatuurlaud küsib numbrit selle kohta, kui kaua ühendus on olnud üleval, ja OpenVPN seda ei anna. Klient teab, millal tema tunnel tõusis, aga ainult siis, kui miski selle hetke üles märgib enne, kui sessiooni olek kaob. Toetatud koht on up-konks, ja väärtus, mida tasub hoiustada, on toores epoch-sekund, mitte vormindatud string. Kõik pärast seda on aritmeetika, pluss paar järjestusreeglit, mis otsustavad, kas number jääb ausaks.
Kinnita, et konksud tegelikult käivituvad
Tõesta, et konks vallandub, enne kui selle ümber midagi projekteerid. Minimaalne kliendi konfiguratsioon vajab script-security 2 ja selgesõnalisi radu up ja down; ilma turvareata keeldub OpenVPN skripti käivitamast ja ütleb seda selgelt. Lisa up-restart ja down-pre samal ajal, et taaskäivituse ja mahavõtmise rajad käituksid etteaimatavalt.
Tee konksu esimene versioon selliseks, et see lisab oma keskkonna faili ega tee muud. See näitab sulle muutujate nimesid, mida sinu ehitus tegelikult ekspordib, näiteks dev ja script_type, mitte neid, mida mäletad teisest versioonist. Käivita üks ühendus ja üks katkestus, seejärel loe faili. Kui midagi ei ilmu, peatu siin, sest ajatempli disain konksu peal, mis kunagi ei käivitu, näeb nädalate kaupa välja nagu jälgimise rike.
Kontrolli, millise kasutajana konks töötab. Kui user ja group on seatud, loobub OpenVPN õigustest enne skriptide käivitamist, nii et kataloog, kuhu root saab kirjutada, võib olla konksule suletud. Vali tee teenuse vaatepunktist, mitte oma kesta omast.
Salvesta üks epoch-väärtus ja kustuta see meelega
up-konks vajab ühte rida, date +%s > /run/openvpn-client.started, kusjuures tee on iga eksemplari jaoks kohandatud. Epoch-väärtus väldib hiljem keele, ajavööndi ja vormingu küsimusi ning see on sama number, mida jälgimisagent saab võrrelda oma kella järgi.
Kustutamine on sama tähtis kui kirjutamine. down-konks peaks faili tühjendama või eemaldama, ja down-pre teeb seda enne liidese sulgemist, mis eemaldab akna, kus fail kirjeldab tunnelit, mis on juba kadunud. up-restart värskendab seejärel templit sisemise taaskäivituse korral, selle asemel et jätta algne väärtus paigale. Ilma selle paarita taaskäivitus pingi ajalõpu järel annab numbri, mis jätkab tõusmist, kuni tunnel end uuesti üles seab.
Vali koht õige elueaga. Fail /run all kaob taaskäivitamisel, mis vastab tegelikkusele, samas kui fail /tmp all võidakse ettearvamatult ära puhastada ja konfiguratsioonikataloogis olev jääb alles viisil, mis eksitab. Sea õigused nii, et seda saaksid lugeda ainult teenuse kasutaja ja jälgimise lugeja.
Arvuta tööaeg ilma logiridu usaldamata
Loe salvestatud sekundit, loe praegust sekundit, lahuta. Kui fail puudub või on tühi, on aus vastus, et ükski tunnel pole aktiivne, mitte see, et tööaeg on null, sest need kaks olekut peaksid tõstma erinevaid hoiatusi. Hoia töötlemata sekundid jälgimisandmetes ja vorminda päevad ja tunnid kuvamiskihis. Vormindaja, mis ümardab eksportijas sees, viskab ära täpsuse, mida keegi juhtumi ajal tahab.
Logi ajatemplite parsija on ahvatlev otsetee ja see ebaõnnestub kolmel viisil: vorming järgib seda, millised valikud on seatud, rotatsioon eemaldab ajaloo ja taasthendused ilmuvad eraldi sessioonidena, mitte ühe pideva tunnelina. Konks registreerib sündmuse üks kord, hetkel, mil see juhtub.
Kui kontroll töötab teises hostis, saada ajatempel, mitte kestus, et lugeja rakendaks oma kella. Väike negatiivne tulemus loetakse siis kella nihkena, mitte katkise konksuna.
Kata taasthendused, taaskäivitused ja mitu eksemplari
Kaks tunnelit ühes hostis vajavad kahte faili, võtmega eksemplari nime järgi, mida teenus juba kasutab. Jagatud tee tähendab, et kõige värskem ühendus kirjutab üle iga profiili algusaja, ja sümptomiks on number, mis hüppab tagasi, kui teine tunnel algab.
Taasthenduse käitumine väärib omaette testi, sest just seal teatab usutav disain vaikselt vale asja. Sundi taaskäivitus, visates partneri maha või saates protsessile signaali, seejärel võrdle liidese olekut failiga. Ajatempel peaks edasi liikuma hetkel, mil tunnel naaseb.
Serveri poolel kannab olekufail iga kliendi kohta connected-since väärtust, mis vastab teisele küsimusele: millal nägi server seda partnerit viimati. Kasuta seda ristkontrolliks, mitte asendusena, sest see kaob koos sessiooniga, mida kirjeldab. Kumbki mõõtmine ei ütle midagi tunneli taga oleva rakenduse tervise kohta.
Käivita kolm kontrolli, mis püüavad järjestusvigu
Testi tavalist ühendust, sunnitud taasthendust ja puhast peatust, lugedes iga kord pärast seda liideste loendit ja faili koos. Tempel, mis on pärast puhast peatust alles, või fail, mis väidab tunnelit, mida liideste loendis pole, osutab otse konksude järjestusele. Käivita kontrollid teenuse kasutajana ja teenuse radadega, sest root-kest võib näha teist faili ja anda enesekindla vale vastuse. Seejärel jäta aeglane küsitleja faili lugema ja kinnita, et see ei kirjuta sinna kunagi.
Küsitlus iga kuuekümne sekundi järel katab hoiatamise ja ükski konks ei tohiks lootma jääda, et see küsitleja elus on. Hoia need kaks vastutust lahus ja number jääb usaldusväärseks, kui kumbki pool uuesti juurutatakse.