Informācijas panelis prasa skaitli, cik ilgi savienojums ir aktīvs, un OpenVPN to nesniedz. Klients zina, kad tā tunelis pacēlās, bet tikai tad, ja kāds ieraksta to brīdi pirms sesijas stāvokļa zuduma. Atbalstītā vieta ir up āķis, un vērtība, ko ir vērts glabāt, ir neapstrādāta epoch sekunde, nevis formatēta virkne. Viss pēc tam ir aritmētika, plus dažas kārtības likumi, kas izlemj, vai skaitlis paliek godīgs.

Pārliecinieties, ka āķi patiešām darbojas

Pierādiet, ka āķis nostrādā, pirms ko projektējat ap to. Minimālai klienta konfigurācijai vajag script-security 2 un skaidrus ceļus up un down; bez drošības rindas OpenVPN atsakās izpildīt skriptu un saka to tieši. Pievienojiet up-restart un down-pre tajā pašā laikā, lai restarta un demontāžas ceļi uzvestos paredzami.

Padariet āķa pirmo versiju tādu, kas pievieno savu vidi failam un neko citu nedara. Tas parāda mainīgo nosaukumus, ko jūsu būvējums patiešām eksportē, piemēram dev un script_type, nevis tos, ko atceraties no citas versijas. Palaidiet vienu savienojumu un vienu atvienošanu, pēc tam izlasiet failu. Ja nekas neparādās, apstājieties šeit, jo laika zīmes dizains uz āķa, kas nekad nedarbojas, nedēļām ilgi izskatīsies kā uzraudzības kļūme.

Pārbaudiet, kā lietotāja vārdā āķis darbojas. Ja ir iestatīti user un group, OpenVPN atsakās no privilēģijām pirms skriptu izpildes, tāpēc direktorijs, kurā root var rakstīt, var būt āķim slēgts. Izvēlieties ceļu no pakalpojuma skatpunkta, nevis no savas čaulas.

Ierakstiet vienu epoch vērtību un apzināti notīriet to

up āķim vajag vienu rindu, date +%s > /run/openvpn-client.started, ceļu pielāgojot katrai instancei. Epoch vērtība vēlāk izvairās no valodas, laika joslas un formāta jautājumiem, un tas ir tas pats skaitlis, ko uzraudzības aģents var salīdzināt ar savu pulksteni.

Notīrīšana ir tikpat svarīga kā rakstīšana. down āķim vajadzētu iztukšot vai noņemt failu, un down-pre to izdara pirms saskarnes aizvēršanas, kas noņem logu, kurā fails apraksta jau pazudušu tuneli. up-restart pēc tam atsvaidzina zīmi iekšējā restartā, nevis atstāj sākotnējo vērtību vietā. Bez šī pāra restarts pēc ping taimauta dod skaitli, kas turpina kāpt, kamēr tunelis atkal veidojas.

Izvēlieties vietu ar pareizo dzīves ilgumu. Fails zem /run pazūd pārstartēšanas laikā, kas atbilst realitātei, savukārt fails zem /tmp var tikt neparedzami iztīrīts, bet konfigurācijas direktorijā esošais saglabājas maldinoši. Iestatiet atļaujas tā, lai to varētu lasīt tikai pakalpojuma lietotājs un uzraudzības lasītājs.

Aprēķiniet darbības laiku, neuzticoties žurnāla rindām

Nolasiet saglabāto sekundi, nolasiet pašreizējo sekundi, atņemiet. Ja fails nav vai ir tukšs, godīgā atbilde ir tāda, ka nav aktīva tuneļa, nevis tas, ka darbības laiks ir nulle, jo šiem diviem stāvokļiem vajadzētu celt dažādus brīdinājumus. Turiet neapstrādātas sekundes uzraudzības kravā, bet dienas un stundas formatējiet attēlošanas slānī. Formatētājs, kas noapaļo eksportētāja iekšienē, izmet precizitāti, ko kāds incidenta laikā gribēs.

Žurnāla laika zīmju parsēšana ir vilinošais īsceļš, un tā neizdodas trīs veidos: formāts seko jebkuram iestatītajam variantam, rotācija noņem vēsturi, un atkārtotie savienojumi parādās kā atsevišķas sesijas, nevis viens nepārtraukts tunelis. Āķis notikumu ieraksta vienreiz, tajā brīdī, kad tas notiek.

Kad pārbaude darbojas citā resursdatorā, sūtiet laika zīmi, nevis ilgumu, lai lasītājs piemērotu savu pulksteni. Tad neliels negatīvs rezultāts tiek lasīts kā pulksteņu starpība, nevis kā salūzis āķis.

Aptveriet atkārtotus savienojumus, restartus un vairākas instances

Divi tuneļi vienā resursdatorā prasa divus failus, atslēga ir instances nosaukums, ko pakalpojums jau izmanto. Kopīgs ceļš nozīmē, ka jaunākais savienojums pārraksta katra profila sākuma laiku, un simptoms ir skaitlis, kas lec atpakaļ, kad sākas otrais tunelis.

Atkārtota savienojuma uzvedība ir pelnījusi savu testu, jo tieši tur ticams dizains klusi ziņo par nepareizo. Piespiediet restartu, nometot partneri vai nosūtot procesam signālu, pēc tam salīdziniet saskarnes stāvokli ar failu. Laika zīmei vajadzētu pavirzīties uz priekšu tajā brīdī, kad tunelis atgriežas.

Servera pusē stāvokļa fails satur connected-since vērtību katram klientam, kas atbild uz citu jautājumu: kad serveris pēdējo reizi redzēja šo partneri. Izmantojiet to krusteniskai pārbaudei, nevis kā aizstājēju, jo tā pazūd kopā ar sesiju, ko apraksta. Neviens no mērījumiem neko nepasaka par lietojumprogrammas veselību aiz tuneļa.

Izpildiet trīs pārbaudes, kas noķer kārtības kļūdas

Pārbaudiet parastu savienojumu, piespiedu atkārtotu savienojumu un tīru apstādināšanu, pēc katra kopā lasot saskarņu sarakstu un failu. Zīme, kas joprojām ir pēc tīras apstādināšanas, vai fails, kas apgalvo tuneli, kura nav saskarņu sarakstā, norāda tieši uz āķu kārtību. Izpildiet pārbaudes kā pakalpojuma lietotājs un ar pakalpojuma ceļiem, jo root čaula var redzēt citu failu un sniegt pārliecinātu nepareizu atbildi. Pēc tam ļaujiet lēnam aptaujātājam lasīt failu un apstipriniet, ka tas tajā nekad neraksta.

Aptauja ik pēc sešdesmit sekundēm aptver brīdinājumus, un nevienam āķim nevajadzētu paļauties uz to, ka šis aptaujātājs ir dzīvs. Turiet šos divus pienākumus atsevišķi, un skaitlis paliks uzticams, kad jebkura puse tiks izvietota no jauna.

Saistītie raksti