Nadzorna plošča zahteva število, kako dolgo je povezava aktivna, in OpenVPN tega ne ponuja. Odjemalec ve, kdaj se je njegov tunel dvignil, a le če nekaj zabeleži tisti trenutek, preden se stanje seje izgubi. Podprto mesto je kavelj up, vrednost, ki se jo splača shraniti, pa je surova sekunda epoch in ne oblikovan niz. Vse za tem je aritmetika, plus nekaj pravil vrstnega reda, ki odločijo, ali število ostane pošteno.

Potrdite, da se kavlji res izvajajo

Dokažite, da se kavelj sproži, preden karkoli oblikujete okoli njega. Minimalna konfiguracija odjemalca potrebuje script-security 2 in izrecne poti up in down; brez varnostne vrstice OpenVPN zavrne izvajanje skripta in to pove naravnost. Dodajte up-restart in down-pre hkrati, da se poti ponovnega zagona in razgradnje obnašajo predvidljivo.

Naj prva različica kavlja doda svoje okolje v datoteko in ne naredi ničesar drugega. To vam pokaže imena spremenljivk, ki jih vaša gradnja res izvaža, na primer dev in script_type, namesto tistih, ki se jih spomnite iz druge različice. Izvedite eno povezavo in eno prekinitev, nato preberite datoteko. Če se nič ne pojavi, se ustavite tukaj, ker bo zasnova s časovnim žigom na kavlju, ki se nikoli ne izvede, tedne videti kot odpoved nadzora.

Preverite, kot kateri uporabnik teče kavelj. Z nastavljenima user in group OpenVPN odvrže pravice, preden zažene skripte, zato je lahko imenik, v katerega lahko root piše, za kavelj zaprt. Pot izberite z vidika storitve in ne svoje lupine.

Zabeležite eno vrednost epoch in jo namerno izbrišite

Kavelj up potrebuje eno vrstico, date +%s > /run/openvpn-client.started, s potjo, prilagojeno za vsak primerek. Vrednost epoch se pozneje izogne vprašanjem jezika, časovnega pasu in oblike, in je ista številka, ki jo lahko agent za nadzor primerja s svojo uro.

Brisanje je enako pomembno kot pisanje. Kavelj down naj datoteko izprazni ali odstrani, in down-pre to stori, preden se vmesnik zapre, kar odstrani okno, v katerem datoteka opisuje tunel, ki ga ni več. up-restart nato osveži žig pri notranjem ponovnem zagonu, namesto da bi pustil prvotno vrednost na mestu. Brez tega para ponovni zagon po poteku pinga daje število, ki še naprej raste, medtem ko se tunel znova vzpostavlja.

Izberite mesto s pravo življenjsko dobo. Datoteka pod /run izgine ob ponovnem zagonu, kar ustreza resničnosti, medtem ko je datoteka pod /tmp lahko nepredvidljivo očiščena, tista v konfiguracijski mapi pa preživi na zavajajoč način. Nastavite dovoljenja tako, da jo lahko berejo le uporabnik storitve in bralec nadzora.

Izračunajte čas delovanja brez zaupanja v vrstice dnevnika

Preberite shranjeno sekundo, preberite trenutno sekundo, odštejte. Ko datoteke ni ali je prazna, je pošten odgovor, da ni aktiven noben tunel, ne da je čas delovanja nič, ker bi ta dva stanja morala sprožiti različna opozorila. Surove sekunde hranite v podatkih nadzora, dneve in ure pa oblikujte v prikaznem sloju. Oblikovalnik, ki zaokrožuje znotraj izvoznika, zavrže natančnost, ki jo bo nekdo med incidentom želel.

Razčlenjevanje časovnih žigov iz dnevnika je vabljiva bližnjica in spodleti na tri načine: oblika sledi vsem nastavljenim možnostim, vrtenje odstrani zgodovino, ponovne povezave pa se prikažejo kot ločene seje in ne kot en neprekinjen tunel. Kavelj dogodek zabeleži enkrat, v trenutku, ko se zgodi.

Ko preverjanje teče na drugem gostitelju, pošljite časovni žig in ne trajanja, da bralec uporabi svojo uro. Majhen negativen rezultat se potem bere kot razlika ure in ne kot pokvarjen kavelj.

Pokrijte ponovne povezave, ponovne zagone in več primerkov

Dva tunela na enem gostitelju potrebujeta dve datoteki, s ključem po imenu primerka, ki ga storitev že uporablja. Skupna pot pomeni, da najnovejša povezava prepiše začetni čas vsakega profila, simptom pa je število, ki skoči nazaj, ko se začne drugi tunel.

Vedenje pri ponovni povezavi si zasluži lasten test, ker prav tam verjetna zasnova tiho poroča napačno. Vsilite ponovni zagon z odvrženjem partnerja ali s signalom procesu, nato primerjajte stanje vmesnika z datoteko. Časovni žig bi se moral premakniti naprej v trenutku, ko se tunel vrne.

Na strani strežnika statusna datoteka nosi vrednost connected-since za vsakega odjemalca, ki odgovarja na drugo vprašanje: kdaj je strežnik nazadnje videl tega partnerja. Uporabite jo za navzkrižno preverjanje in ne kot nadomestilo, saj izgine skupaj s sejo, ki jo opisuje. Nobena od meritev ne pove ničesar o zdravju aplikacije za tunelom.

Zaženite tri preverjanja, ki ujamejo napake vrstnega reda

Preizkusite običajno povezavo, vsiljeno ponovno povezavo in čisto ustavitev, po vsaki skupaj preberite seznam vmesnikov in datoteko. Žig, ki po čisti ustavitvi še obstaja, ali datoteka, ki trdi, da obstaja tunel, ki ga na seznamu vmesnikov ni, kaže naravnost na vrstni red kavljev. Preverjanja izvajajte kot uporabnik storitve in s potmi storitve, ker lahko root lupina vidi drugo datoteko in da samozavesten napačen odgovor. Nato pustite počasnega poizvedovalca brati datoteko in potrdite, da vanjo nikoli ne piše.

Poizvedovanje vsakih šestdeset sekund pokriva opozarjanje in noben kavelj ne bi smel računati, da je ta poizvedovalec živ. Ti dve odgovornosti držite ločeno in število ostane zanesljivo, ko je katera koli stran znova nameščena.

Sorodni članki