Kako izmjeriti vrijeme rada OpenVPN klijenta pomoću up i down kuka
OpenVPN nema brojač vremena rada. Pohranite epoch oznaku iz up kuke, obrišite je na down, oduzmite je i držite je točnom kroz restarte i instance.
Nadzorna ploča traži broj koliko je veza aktivna, a OpenVPN ga ne daje. Klijent zna kada se njegov tunel podigao, ali samo ako nešto zabilježi taj trenutak prije nego što se stanje sesije izgubi. Podržano mjesto je up kuka, a vrijednost koju vrijedi pohraniti je sirova epoch sekunda, a ne formatirani niz. Sve nakon toga je aritmetika, plus nekoliko pravila reda koja odlučuju hoće li broj ostati točan.
Potvrdite da se kuke zaista izvršavaju
Dokažite da se kuka pokreće prije nego što oko nje isplanirate bilo što. Minimalna konfiguracija klijenta traži script-security 2 i izričite putanje up i down; bez sigurnosnog retka OpenVPN odbija izvršiti skriptu i to jasno kaže. Dodajte up-restart i down-pre istovremeno da se putanje restarta i gašenja ponašaju predvidivo.
Napravite prvu verziju kuke tako da svoje okruženje dopisuje u datoteku i ne čini ništa drugo. To vam pokazuje imena varijabli koje vaša gradnja stvarno izvozi, poput dev i script_type, umjesto onih kojih se sjećate iz druge verzije. Pokrenite jednu vezu i jedno odspajanje, pa pročitajte datoteku. Ako se ništa ne pojavi, zaustavite se ovdje, jer će dizajn s vremenskom oznakom na kuki koja se nikada ne pokreće izgledati kao kvar nadzora tjednima.
Provjerite pod kojim korisnikom kuka radi. Uz user i group postavljene, OpenVPN odbacuje privilegije prije pokretanja skripti, pa direktorij u koji root može pisati može biti zatvoren za kuku. Odaberite putanju iz perspektive usluge, a ne svoje ljuske.
Zabilježite jednu epoch vrijednost i obrišite je namjerno
up kuka treba jedan redak, date +%s > /run/openvpn-client.started, s putanjom prilagođenom po instanci. Epoch vrijednost kasnije izbjegava pitanja jezika, vremenske zone i formata i to je isti broj koji nadzorni agent može usporediti sa svojim satom.
Brisanje je jednako važno kao pisanje. down kuka treba isprazniti ili ukloniti datoteku, a down-pre to čini prije nego što se sučelje zatvori, što uklanja prozor u kojem datoteka opisuje tunel kojeg više nema. up-restart zatim osvježava oznaku pri unutarnjem restartu umjesto da ostavi izvornu vrijednost na mjestu. Bez tog para, restart nakon isteka ping vremena daje broj koji stalno raste dok se tunel ponovno uspostavlja.
Odaberite mjesto s pravim životnim vijekom. Datoteka pod /run nestaje pri ponovnom podizanju, što odgovara stvarnosti, dok datoteka pod /tmp može biti neočekivano očišćena, a ona u konfiguracijskom direktoriju ostaje na način koji zavarava. Postavite dopuštenja tako da je mogu čitati samo korisnik usluge i čitatelj nadzora.
Izračunajte vrijeme rada bez povjerenja u retke dnevnika
Pročitajte pohranjenu sekundu, pročitajte trenutnu sekundu, oduzmite. Kada datoteka nedostaje ili je prazna, iskren odgovor je da nema aktivnog tunela, a ne da je vrijeme rada nula, jer ta dva stanja trebaju dizati različita upozorenja. Držite sirove sekunde u nadzornom teretu, a dane i sate oblikujte u sloju prikaza. Oblikovatelj koji zaokružuje unutar izvoznika odbacuje preciznost koju će netko htjeti tijekom incidenta.
Raščlanjivanje vremenskih oznaka dnevnika primamljiv je prečac i pada na tri načina: format slijedi koje god su opcije postavljene, rotacija uklanja povijest, a ponovna spajanja izgledaju kao odvojene sesije, a ne jedan neprekinut tunel. Kuka bilježi događaj jednom, u trenutku kada se dogodi.
Kada provjera radi na drugom hostu, pošaljite vremensku oznaku, a ne trajanje, da čitatelj primijeni svoj sat. Mali negativan rezultat tada se čita kao razlika satova, a ne kao pokvarena kuka.
Pokrijte ponovna spajanja, restarte i više instanci
Dva tunela na jednom hostu trebaju dvije datoteke, ključane po imenu instance koje usluga već koristi. Dijeljena putanja znači da najnovija veza prepisuje vrijeme početka svakog profila, a simptom je broj koji skoči unatrag kada se pokrene drugi tunel.
Ponašanje pri ponovnom spajanju zaslužuje vlastiti test, jer se upravo tu uvjerljiv dizajn tiho javlja s pogrešnim. Prisilite restart rušenjem partnera ili slanjem signala procesu, pa usporedite stanje sučelja s datotekom. Vremenska oznaka treba se pomaknuti naprijed u trenutku kada se tunel vrati.
Na strani poslužitelja datoteka stanja nosi vrijednost connected-since po klijentu, koja odgovara na drugo pitanje: kada je poslužitelj posljednji put vidio tog partnera. Koristite je za unakrsnu provjeru, a ne kao zamjenu, jer nestaje zajedno sa sesijom koju opisuje. Nijedno mjerenje ne govori ništa o zdravlju aplikacije iza tunela.
Pokrenite tri provjere koje hvataju pogreške u redoslijedu
Testirajte normalno spajanje, prisilno ponovno spajanje i čisto zaustavljanje, čitajući popis sučelja i datoteku zajedno nakon svakoga. Oznaka koja je još prisutna nakon čistog zaustavljanja, ili datoteka koja tvrdi tunel kojeg nema na popisu sučelja, pokazuje ravno na redoslijed kuka. Provjere izvodite kao korisnik usluge i s putanjama usluge, jer root ljuska može vidjeti drugu datoteku i dati samouvjeren pogrešan odgovor. Zatim ostavite spori anketar da čita datoteku i potvrdite da u nju nikada ne piše.
Anketa svakih šezdeset sekundi pokriva uzbunjivanje i nijedna kuka ne smije računati na to da je taj anketar živ. Držite te dvije odgovornosti odvojeno i broj ostaje pouzdan kad se bilo koja strana ponovno postavi.