Kiel mezuri la funkciadon de OpenVPN-kliento per la hokoj up kaj down
OpenVPN ne havas funkciadan nombrilon. Konservu epoch-signon el la hoko up, viŝu ĝin ĉe down, subtrahu ĝin kaj tenu ĝin honesta tra restartoj kaj instancoj.
Panelo petas nombron pri tio, kiom longe la konekto funkcias, kaj OpenVPN ne donas ĝin. La kliento scias, kiam ĝia tunelo leviĝis, sed nur se io registras tiun momenton antaŭ ol la sesia stato perdiĝas. La subtenata loko estas la hoko up, kaj la valoro inda je konservado estas kruda epoch-sekundo anstataŭ formatita ĉeno. Ĉio poste estas aritmetiko, plus kelkaj ordigaj reguloj, kiuj decidas ĉu la nombro restas honesta.
Konfirmu, ke la hokoj vere funkcias
Pruvu, ke la hoko ekfunkcias antaŭ ol vi desegnas ion ĉirkaŭ ĝi. Minimuma klienta agordo bezonas script-security 2 plus eksplicitajn vojojn up kaj down; sen la sekureca linio OpenVPN rifuzas plenumi la skripton kaj diras tion klare. Aldonu up-restart kaj down-pre samtempe, por ke la restartaj kaj malmuntaj vojoj kondutu antaŭvideble.
Faru la unuan version de la hoko tia, ke ĝi aldonu sian medion al dosiero kaj faru nenion alian. Tio montras al vi la variablajn nomojn, kiujn via konstruo efektive eksportas, ekzemple dev kaj script_type, anstataŭ tiuj, kiujn vi memoras el alia versio. Rulu unu konekton kaj unu malkonekton, poste legu la dosieron. Se nenio aperas, haltu ĉi tie, ĉar tempstampa dezajno sur hoko, kiu neniam funkcias, aspektos kiel monitora fiasko dum semajnoj.
Kontrolu, kiel kiu uzanto la hoko funkcias. Kun user kaj group agorditaj, OpenVPN forlasas privilegiojn antaŭ ol ruli skriptojn, do dosierujo, en kiun root povas skribi, povas esti fermita por la hoko. Elektu la vojon el la vidpunkto de la servo, ne de via ŝelo.
Registru unu epoch-valoron kaj viŝu ĝin intence
La hoko up bezonas unu linion, date +%s > /run/openvpn-client.started, kun la vojo adaptita por ĉiu instanco. Epoch-valoro evitas poste demandojn pri lingvo, horzono kaj formato, kaj ĝi estas la sama nombro, kiun monitora agento povas kompari kun sia propra horloĝo.
Viŝado same gravas kiel skribado. La hoko down devus malplenigi aŭ forigi la dosieron, kaj down-pre faras tion antaŭ ol la interfaco fermiĝas, kio forigas la fenestron, en kiu la dosiero priskribas tunelon, kiu jam malaperis. up-restart poste refreŝigas la signon ĉe interna restarto anstataŭ lasi la originalan valoron surloke. Sen tiu paro, restarto post ping-tempoŝlimo produktas nombron, kiu daŭre grimpas dum la tunelo restarigas sin.
Elektu lokon kun la ĝusta vivodaŭro. Dosiero sub /run malaperas ĉe restarto, kio kongruas kun la realo, dum dosiero sub /tmp povas esti purigita neantaŭvideble kaj unu en la agorda dosierujo pluvivas tiel, ke ĝi misgvidas. Agordu permesojn tiel, ke nur la serva uzanto kaj la monitora leganto povu legi ĝin.
Kalkulu funkciadon sen fidi protokolajn liniojn
Legu la konservitan sekundon, legu la nunan sekundon, subtrahu. Kiam la dosiero mankas aŭ estas malplena, la honesta respondo estas, ke neniu tunelo aktivas, ne ke la funkciado estas nulo, ĉar tiuj du statoj devus levi malsamajn alarmojn. Tenu krudajn sekundojn en la monitora ŝarĝo kaj formatu tagojn kaj horojn en la prezenta tavolo. Formigilo, kiu rondigas ene de la eksportilo, forĵetas precizecon, kiun iu volos dum okazaĵo.
Analizi protokolajn tempstampojn estas la tentiga mallongigo, kaj ĝi malsukcesas triamaniere: la formato sekvas kiujn ajn agorditajn opciojn, rotacio forigas la historion, kaj rekonektoj aperas kiel apartaj sesioj anstataŭ unu kontinua tunelo. La hoko registras la eventon unufoje, en la momento, kiam ĝi okazas.
Kiam la kontrolo rulas sur alia gastiganto, sendu la tempstampon anstataŭ la daŭron, por ke la leganto apliku sian propran horloĝon. Malgranda negativa rezulto tiam legeblas kiel horloĝa devio anstataŭ rompita hoko.
Kovru rekonektojn, restartojn kaj plurajn instancojn
Du tuneloj sur unu gastiganto bezonas du dosierojn, ŝlositajn per la instanca nomo, kiun la servo jam uzas. Komuna vojo signifas, ke la plej freŝa konekto anstataŭigas la komencan tempon de ĉiu profilo, kaj la simptomo estas nombro, kiu saltas malantaŭen, kiam dua tunelo komenciĝas.
Rekonekta konduto meritas propran teston, ĉar ĝuste tie kredinda dezajno silente raportas la malĝustan aferon. Devigu restartotan per forigo de la kunulo aŭ signalo al la procezo, poste komparu la interfacan staton kun la dosiero. La tempstampo devus antaŭeniri en la momento, kiam la tunelo revenas.
Ĉe la servila flanko, la stata dosiero portas connected-since-valoron por ĉiu kliento, kiu respondas aliloke demandon: kiam la servilo laste vidis tiun kunulon. Uzu ĝin por kruca kontrolo, ne kiel anstataŭaĵon, ĉar ĝi malaperas kun la sesio, kiun ĝi priskribas. Neniu el la du mezuroj diras ion pri la saneco de la aplikaĵo malantaŭ la tunelo.
Rulu la tri kontrolojn, kiuj kaptas ordigajn cimojn
Testu normalan konekton, devigitan rekonekton kaj puran halton, legante la interfacan liston kaj la dosieron kune post ĉiu. Signo ankoraŭ ĉeestanta post pura halto, aŭ dosiero asertanta tunelon, kiun la interfaca listo ne enhavas, montras rekte al hoka ordo. Rulu la kontrolojn kiel la serva uzanto kaj kun la vojoj de la servo, ĉar root-ŝelo povas vidi alian dosieron kaj doni memfidan malĝustan respondon. Poste lasu malrapidan enketilon legi la dosieron kaj konfirmu, ke ĝi neniam skribas en ĝin.
Enketo ĉiun sesdekan sekundon kovras alarmadon, kaj neniu hoko devus dependi de tio, ke tiu enketilo vivas. Tenu tiujn du respondecojn aparte kaj la nombro restas fidinda, kiam ajn flanko estas relokita.