Si të matni kohën e punës së klientit OpenVPN me grepat up dhe down
OpenVPN nuk ka numërues të kohës së punës. Ruani një vulë epoch nga grepi up, fshijeni te down, zbritni dhe mbani besnik ndërmjet rinisjeve dhe instancave.
Një panel kërkon një numër për sa kohë lidhja është aktive, dhe OpenVPN nuk e ofron atë. Klienti e di kur iu ngrit tuneli, por vetëm nëse diçka e regjistron atë moment para se gjendja e sesionit të humbasë. Vendi i mbështetur është grepi up, dhe vlera që ia vlen të ruhet është një sekondë epoch e papërpunuar dhe jo një varg i formatuar. Gjithçka pas kësaj është aritmetikë, plus disa rregulla renditjeje që vendosin nëse numri mbetet besnik.
Konfirmoni se grepat vërtet ekzekutohen
Provoni se grepi shkrep përpara se të hartoni diçka rreth tij. Një konfigurim minimal i klientit kërkon script-security 2 dhe shtigje të qarta up dhe down; pa rreshtin e sigurisë OpenVPN refuzon të ekzekutojë skriptin dhe e thotë hapur. Shtoni up-restart dhe down-pre në të njëjtën kohë, që shtigjet e rinisjes dhe të çmontimit të sillen në mënyrë të parashikueshme.
Bëjeni versionin e parë të grepit të shtojë mjedisin e tij në një skedar dhe të mos bëjë asgjë tjetër. Kjo ju tregon emrat e variablave që ndërtimi juaj vërtet eksporton, si dev dhe script_type, në vend të atyre që mbani mend nga një version tjetër. Ekzekutoni një lidhje dhe një shkëputje, pastaj lexoni skedarin. Nëse nuk shfaqet asgjë, ndaloni këtu, sepse një dizajn me vulë kohe mbi një grep që nuk ekzekutohet kurrë do të duket si dështim monitorimi për javë të tëra.
Kontrolloni si cili përdorues ekzekutohet grepi. Me user dhe group të vendosura, OpenVPN heq dorë nga privilegjet përpara se të ekzekutojë skriptet, kështu që një drejtori ku root mund të shkruajë mund të jetë e mbyllur për grepin. Zgjidhni shtegun nga këndvështrimi i shërbimit dhe jo i shell-it tuaj.
Regjistroni një vlerë epoch dhe fshijeni me qëllim
Grepi up ka nevojë për një rresht, date +%s > /run/openvpn-client.started, me shtegun e përshtatur për çdo instancë. Një vlerë epoch shmang më vonë pyetjet për gjuhën, zonën kohore dhe formatin, dhe është i njëjti numër që një agjent monitorimi mund ta krahasojë me orën e vet.
Fshirja ka po aq rëndësi sa shkrimi. Grepi down duhet të zbrazë ose të heqë skedarin, dhe down-pre e bën këtë përpara se ndërfaqja të mbyllet, gjë që heq dritaren ku skedari përshkruan një tunel që tashmë ka ikur. up-restart pastaj përtërin vulën në një rinisje të brendshme në vend që të lërë vlerën origjinale në vend. Pa atë çift, një rinisje pas skadimit të ping prodhon një numër që vazhdon të ngjitet ndërsa tuneli rivendoset.
Zgjidhni një vend me jetëgjatësinë e duhur. Një skedar nën /run zhduket në rinisje, gjë që përputhet me realitetin, ndërsa një skedar nën /tmp mund të pastrohet në mënyrë të paparashikueshme dhe një në drejtorinë e konfigurimit mbijeton në një mënyrë mashtruese. Vendosni leje që vetëm përdoruesi i shërbimit dhe lexuesi i monitorimit ta lexojnë atë.
Llogaritni kohën e punës pa u besuar rreshtave të regjistrit
Lexoni sekondën e ruajtur, lexoni sekondën aktuale, zbritni. Kur skedari mungon ose është bosh, përgjigjja e ndershme është se nuk ka tunel aktiv, jo se koha e punës është zero, sepse këto dy gjendje duhet të ngrenë alarme të ndryshme. Mbani sekondat e papërpunuara në ngarkesën e monitorimit dhe formatoni ditët dhe orët në shtresën e shfaqjes. Një formatues që rrumbullakson brenda eksportuesit hedh poshtë saktësinë që dikush do të dojë gjatë një incidenti.
Analizimi i vulave të kohës së regjistrit është shkurtesa joshëse dhe dështon në tre mënyra: formati ndjek çdo opsion që është vendosur, rrotullimi heq historikun dhe rilidhjet shfaqen si sesione të veçanta në vend të një tuneli të vazhdueshëm. Grepi e regjistron ngjarjen një herë, në momentin kur ndodh.
Kur kontrolli ekzekutohet në një host tjetër, dërgoni vulën e kohës dhe jo kohëzgjatjen, që lexuesi të zbatojë orën e vet. Atëherë një rezultat i vogël negativ lexohet si zhvendosje orësh dhe jo si grep i prishur.
Mbuloni rilidhjet, rinisjet dhe instancat e shumta
Dy tunele në një host kanë nevojë për dy skedarë, me çelës emrin e instancës që shërbimi tashmë përdor. Një shteg i përbashkët do të thotë që lidhja më e re mbishkruan kohën e nisjes së çdo profili, dhe simptomi është një numër që kërcen prapa kur nis një tunel i dytë.
Sjellja në rilidhje meriton testin e vet, sepse pikërisht atje një dizajn i besueshëm raporton në heshtje gjënë e gabuar. Detyroni një rinisje duke hedhur poshtë partnerin ose duke i dërguar një sinjal procesit, pastaj krahasoni gjendjen e ndërfaqes me skedarin. Vula e kohës duhet të lëvizë përpara në momentin kur tuneli kthehet.
Nga ana e serverit, skedari i statusit mban një vlerë connected-since për çdo klient, e cila i përgjigjet një pyetjeje tjetër: kur serveri e pa atë partner për herë të fundit. Përdoreni për kontroll të kryqëzuar dhe jo si zëvendësim, pasi zhduket bashkë me sesionin që përshkruan. Asnjëra nga matjet nuk thotë gjë për shëndetin e aplikacionit pas tunelit.
Ekzekutoni tre kontrollet që kapin gabimet e renditjes
Provoni një lidhje normale, një rilidhje të detyruar dhe një ndalje të pastër, duke lexuar listën e ndërfaqeve dhe skedarin bashkë pas secilës. Një vulë që është ende aty pas një ndaljeje të pastër, ose një skedar që pretendon një tunel që lista e ndërfaqeve nuk e përmban, tregon drejtpërdrejt renditjen e grepave. Ekzekutoni kontrollet si përdoruesi i shërbimit dhe me shtigjet e shërbimit, sepse një shell root mund të shohë një skedar tjetër dhe të japë një përgjigje të gabuar me siguri. Pastaj lini një sondues të ngadaltë të lexojë skedarin dhe konfirmoni se ai nuk shkruan kurrë në të.
Një sondazh çdo gjashtëdhjetë sekonda mbulon alarmimin, dhe asnjë grep nuk duhet të llogarisë se ai sondues është gjallë. Mbani ato dy përgjegjësi të ndara dhe numri mbetet i besueshëm kur cilado palë rivendoset.