Panel žiada číslo, ako dlho je pripojenie aktívne, a OpenVPN ho neposkytuje. Klient vie, kedy jeho tunel vstal, ale len ak niekto ten okamih zaznamená skôr, než sa stratí stav relácie. Podporované miesto je háčik up a hodnota, ktorú sa oplatí uložiť, je surová sekunda epochy, nie formátovaný reťazec. Všetko po tom je aritmetika, plus niekoľko pravidiel poradia, ktoré rozhodujú, či číslo zostane poctivé.

Overte, že háčiky sa naozaj spúšťajú

Dokážte, že háčik vystrelí, skôr než okolo neho čokoľvek navrhnete. Minimálna konfigurácia klienta potrebuje script-security 2 a výslovné cesty up a down; bez bezpečnostného riadku OpenVPN odmietne skript spustiť a povie to jasne. Pridajte up-restart a down-pre zároveň, aby sa cesty reštartu a ukončenia správali predvídateľne.

Urobte prvú verziu háčika tak, aby pripojila svoje prostredie do súboru a nič iné nerobila. Ukáže vám to názvy premenných, ktoré váš build skutočne exportuje, napríklad dev a script_type, namiesto tých, ktoré si pamätáte z inej verzie. Spustite jedno pripojenie a jedno odpojenie, potom prečítajte súbor. Ak sa nič neobjaví, zastavte sa tu, pretože návrh so značkou času na háčiku, ktorý sa nikdy nespustí, bude týždne vyzerať ako výpadok monitorovania.

Skontrolujte, pod ktorým používateľom háčik beží. Keď sú nastavené user a group, OpenVPN zahodí oprávnenia pred spustením skriptov, takže adresár, do ktorého môže root zapisovať, môže byť pre háčik zatvorený. Vyberajte cestu z pohľadu služby, nie svojho shellu.

Zaznamenajte jednu hodnotu epochy a zámerne ju vymažte

Háčik up potrebuje jeden riadok, date +%s > /run/openvpn-client.started, s cestou upravenou pre každú inštanciu. Hodnota epochy sa neskôr vyhne otázkam jazyka, časového pásma a formátu a je to to isté číslo, ktoré agent monitorovania môže porovnať so svojimi hodinami.

Mazanie je rovnako dôležité ako zápis. Háčik down má súbor vyprázdniť alebo odstrániť a down-pre to urobí skôr, než sa rozhranie zavrie, čo odstráni okno, v ktorom súbor opisuje tunel, ktorý už zmizol. up-restart potom pri vnútornom reštarte značku obnoví, namiesto aby ponechal pôvodnú hodnotu. Bez tejto dvojice reštart po vypršení pingu dáva číslo, ktoré stále rastie, kým sa tunel znovu ustaľuje.

Vyberte miesto so správnou životnosťou. Súbor pod /run zmizne pri reštarte, čo zodpovedá realite, zatiaľ čo súbor pod /tmp môže byť nepredvídateľne vyčistený a súbor v konfiguračnom adresári prežíva spôsobom, ktorý zavádza. Nastavte oprávnenia tak, aby ho mohol čítať len používateľ služby a čitateľ monitorovania.

Počítajte dobu behu bez dôvery v riadky logu

Prečítajte uloženú sekundu, prečítajte aktuálnu sekundu, odpočítajte. Keď súbor chýba alebo je prázdny, poctivá odpoveď je, že žiadny tunel nie je aktívny, nie že doba behu je nula, pretože tieto dva stavy majú vyvolať rôzne upozornenia. Držte surové sekundy v dátach monitorovania a dni a hodiny formátujte vo vrstve zobrazenia. Formátovač, ktorý zaokrúhľuje vnútri exportéra, zahadzuje presnosť, ktorú niekto počas incidentu bude chcieť.

Parsovanie časových značiek z logu je lákavá skratka a zlyháva tromi spôsobmi: formát sleduje, aké sú nastavené voľby, rotácia maže históriu a opätovné pripojenia sa javia ako samostatné relácie, nie jeden súvislý tunel. Háčik zaznamená udalosť raz, v okamihu, keď nastane.

Keď kontrola beží na inom hostiteľovi, posielajte časovú značku, nie trvanie, aby čitateľ použil svoje vlastné hodiny. Malý záporný výsledok sa potom číta ako rozdiel hodín, nie ako pokazený háčik.

Pokryte opätovné pripojenia, reštarty a viac inštancií

Dva tunely na jednom hostiteľovi potrebujú dva súbory, kľúčované názvom inštancie, ktorý služba už používa. Zdieľaná cesta znamená, že najnovšie pripojenie prepíše čas štartu každého profilu a príznakom je číslo, ktoré skočí dozadu, keď začne druhý tunel.

Správanie pri opätovnom pripojení si zaslúži vlastný test, pretože práve tam vierohodný návrh potichu hlási nesprávnu vec. Vynúťte reštart zhodením partnera alebo signálom procesu, potom porovnajte stav rozhrania so súborom. Časová značka by sa mala posunúť dopredu v okamihu, keď sa tunel vráti.

Na strane servera nesie stavový súbor hodnotu connected-since pre každého klienta, ktorá odpovedá na inú otázku: kedy server naposledy videl tohto partnera. Používajte ju na krížovú kontrolu, nie ako náhradu, pretože mizne spolu s reláciou, ktorú opisuje. Ani jedno meranie nehovorí nič o zdraví aplikácie za tunelom.

Spustite tri kontroly, ktoré zachytia chyby v poradí

Otestujte normálne pripojenie, vynútené opätovné pripojenie a čisté zastavenie, po každom čítajte zoznam rozhraní a súbor spolu. Značka, ktorá po čistom zastavení stále existuje, alebo súbor tvrdiaci tunel, ktorý v zozname rozhraní nie je, ukazuje priamo na poradie háčikov. Kontroly spúšťajte ako používateľ služby a s cestami služby, pretože root shell môže vidieť iný súbor a dať sebavedomú nesprávnu odpoveď. Potom nechajte pomalý pollowač čítať súbor a potvrďte, že doň nikdy nezapisuje.

Dopytovanie každých šesťdesiat sekúnd pokrýva upozorňovanie a žiadny háčik by sa nemal spoliehať na to, že ten pollowač žije. Držte tieto dve zodpovednosti oddelene a číslo zostane dôveryhodné, keď sa ktorákoľvek strana znova nasadí.

Súvisiace články