Hogyan mérjük az OpenVPN-kliens üzemidejét up és down hookokkal
Az OpenVPN-nek nincs üzemidő-számlálója. Tároljon epoch-bélyeget az up hookból, törölje a downnál, vonja ki, és tartsa becsületesen újraindítások és példányok között.
Egy irányítópult egy számot kér arról, mióta él a kapcsolat, és OpenVPN ezt nem adja meg. A kliens tudja, mikor jött fel a csatornája, de csak akkor, ha valami rögzíti azt a pillanatot, mielőtt a munkamenet állapota elveszik. A támogatott hely az up hook, és a tárolásra érdemes érték egy nyers epoch másodperc, nem pedig egy formázott karakterlánc. Minden, ami ezután jön, aritmetika, plusz néhány sorrendi szabály, amely eldönti, hogy a szám becsületes marad-e.
Erősítse meg, hogy a hookok valóban lefutnak
Bizonyítsa be, hogy a hook elsül, mielőtt bármit is tervezne köré. Egy minimális klienskonfigurációnak kell script-security 2 és explicit útvonalak up és down; a biztonsági sor nélkül az OpenVPN megtagadja a szkript futtatását, és ezt nyíltan ki is mondja. Adja hozzá up-restart és down-pre egyszerre, hogy az újraindítási és lebontási útvonalak kiszámíthatóan viselkedjenek.
Készítse el a hook első változatát úgy, hogy a környezetét egy fájlhoz fűzze, és semmi mást ne tegyen. Ez megmutatja a változók neveit, amelyeket a build valóban exportál, például dev és script_type, ahelyett, amelyekre egy másik verzióból emlékszik. Futtasson egy kapcsolódást és egy leválasztást, majd olvassa el a fájlt. Ha semmi sem jelenik meg, álljon meg itt, mert egy soha nem futó hookra épített időbélyeg-terv hetekig monitoring-hibának fog látszani.
Ellenőrizze, melyik felhasználóként fut a hook. Beállított user és group mellett az OpenVPN a szkriptek futtatása előtt eldobja a jogosultságokat, ezért egy könyvtár, amelybe a root írhat, zárva lehet a hook előtt. Az útvonalat a szolgáltatás szemszögéből válassza, ne a saját héjáéból.
Rögzítsen egyetlen epoch-értéket, és törölje szándékosan
Az up hooknak egy sor kell, date +%s > /run/openvpn-client.started, az útvonalat példányonként igazítva. Az epoch-érték később elkerüli a nyelvi, időzóna- és formátumkérdéseket, és ugyanaz a szám, amelyet egy monitoringügynök összevethet a saját órájával.
A törlés ugyanolyan fontos, mint az írás. A down hooknak ki kell ürítenie vagy törölnie kell a fájlt, és a down-pre ezt azelőtt teszi meg, hogy az interfész bezárulna, ami megszünteti azt az ablakot, amelyben a fájl egy már eltűnt csatornát ír le. up-restart utána frissíti a bélyeget belső újraindításkor, ahelyett hogy az eredeti értéket a helyén hagyná. E pár nélkül újraindítás ping-időtúllépés után olyan számot ad, amely tovább emelkedik, miközben a csatorna újra felépül.
Válasszon megfelelő élettartamú helyet. A /run alatti fájl újraindításkor eltűnik, ami megfelel a valóságnak, míg a /tmp alatti fájl kiszámíthatatlanul tisztulhat, és a konfigurációs könyvtárban lévő félrevezető módon marad meg. Állítson be jogosultságokat, hogy csak a szolgáltatás felhasználója és a monitoring olvasója olvashassa.
Számítsa ki az üzemidőt anélkül, hogy a naplósorokban bízna
Olvassa ki a tárolt másodpercet, olvassa ki az aktuális másodpercet, vonja ki. Ha a fájl hiányzik vagy üres, a becsületes válasz az, hogy nincs aktív csatorna, nem pedig az, hogy az üzemidő nulla, mert ennek a két állapotnak különböző riasztásokat kellene kiváltania. Tartsa a nyers másodperceket a monitoring-adatban, és a napokat és órákat a megjelenítési rétegben formázza. Az exportőrön belül kerekítő formázó elpazarolja azt a pontosságot, amelyet egy incidens alatt valaki kérni fog.
A napló időbélyegeinek elemzése a csábító rövidítés, és háromféleképpen vall kudarcot: a formátum a beállított opciókat követi, a rotáció eltávolítja az előzményeket, és az újracsatlakozások külön munkamenetként jelennek meg egyetlen folyamatos csatorna helyett. A hook egyszer rögzíti az eseményt, abban a pillanatban, amikor megtörténik.
Amikor az ellenőrzés másik gazdagépen fut, a bélyeget küldje el az időtartam helyett, hogy az olvasó a saját óráját alkalmazza. Egy kis negatív eredmény akkor óraelcsúszásként olvasható, nem pedig törött hookként.
Fedje le az újracsatlakozásokat, újraindításokat és több példányt
Két csatorna egy gazdagépen két fájlt igényel, kulcsként a szolgáltatás által már használt példánynévvel. A megosztott útvonal azt jelenti, hogy a legutóbbi kapcsolat felülírja minden profil kezdési idejét, és a tünet egy szám, amely hátrafelé ugrik, amikor egy második csatorna elindul.
Az újracsatlakozás viselkedése saját tesztet érdemel, mert ott számol be egy hihető terv csendesen a rossz dologról. Kényszerítsen ki újraindítást a partner eldobásával vagy a folyamatnak küldött jellel, majd hasonlítsa össze az interfész állapotát a fájllal. A bélyegnek előre kell lépnie abban a pillanatban, amikor a csatorna visszatér.
A kiszolgálói oldalon az állapotfájl egy connected-since értéket hordoz kliensenként, amely más kérdésre válaszol: mikor látta a kiszolgáló utoljára azt a partnert. Keresztellenőrzésre használja, ne helyettesítőként, mert eltűnik azzal a munkamenettel együtt, amelyet leír. Egyik mérés sem mond semmit a csatorna mögötti alkalmazás állapotáról.
Futtassa a három ellenőrzést, amely elkapja a sorrendi hibákat
Teszteljen egy normál kapcsolódást, egy kényszerített újracsatlakozást és egy tiszta leállást, mindegyik után együtt olvasva az interfészlistát és a fájlt. Egy tiszta leállás után is ott maradó bélyeg, vagy egy olyan csatornát állító fájl, amely nem szerepel az interfészlistán, egyenesen a hookok sorrendjére mutat. Az ellenőrzéseket a szolgáltatás felhasználójaként és a szolgáltatás útvonalaival futtassa, mert egy root-héj más fájlt láthat, és magabiztos rossz választ adhat. Utána hagyjon egy lassú lekérdezőt a fájlt olvasni, és erősítse meg, hogy soha nem ír bele.
A hatvan másodpercenkénti lekérdezés lefedi a riasztást, és egyetlen hooknak sem szabad arra támaszkodnia, hogy az a lekérdező életben van. Tartsa külön ezt a két felelősséget, és a szám megbízható marad, amikor bármelyik oldalt újratelepítik.