OpenVPN kliento paruošimas su etapais, kurie sustoja įvykus klaidai
Penki etapai neleidžia paruošimo scenarijui palikti pusės diegimo: patikrink įvestis, paruošk rinkinį, pakeisk atomiškai, aktyvuok vieną savininką, suplanuok išėmimą.
Paruošimo scenarijai, kurie praneša klaidą ir tęsia, yra blogesni už scenarijus, kurie niekada nepasileidžia. Kliento sąranka liečia apsaugotus raktus, tapatybę ties vartais ir paslaugą, kuri galbūt jau aptarnauja srautą. Kiekvienam iš jų reikia sustojimo sąlygos, o scenarijus turi žinoti, kurį etapą pasiekė sustodamas.
Traktuok viską kaip vieną operaciją su penkiais kontroliniais taškais ir padaryk, kad kiekvienas kontrolinis taškas pats atsisakytų tęsti.
Pataisyk įvestis prieš liesdamas failų sistemą
Pradėk nuo aiškios sutarties: viena tapatybė, vienas profilio šaltinis, vienas numatytas paslaugos savininkas. Patikrink, kad profilis egzistuoja, kad sertifikatas ir raktas, į kuriuos jis nurodo, yra skaitomi, ir kad tikslinis katalogas priklauso laukiamam paketui. Išsprendžiamas kelias nėra įrodymas, kad medžiaga už jo yra išsami.
Atmesk tuščius kintamuosius anksti. Nenustatytas $DEVICE, kuris išsiplečia į nieką, paverčia install -m 400 $KEY /etc/openvpn/client/ į katalogą nukreiptą kopiją, o gedimas ateina vėliau kaip paslauga, kuri negali perskaityti savo rakto.
Surink profilio rinkinį parengiamajame kataloge
Pirmiausia sukurk visą rinkinį privačioje vietoje: profilis, CA, kliento sertifikatas, raktas ir bet kokia pagalbinė priemonė, kurią kviečia profilis. Kopijuok su install -m 400 -o root -g root, kad teisės būtų nustatomos kuriant, o ne vėliau. Tada patikrink nuorodas profilio viduje, nes santykinė ca arba key eilutė išsprendžiama pagal įrenginio darbo katalogą vos tik paslauga paleidžiama. Niekas neturi būti rašoma į aktyvų katalogą, kol visas rinkinys nebus patvirtintas.
Užfiksuok ne slaptą antspaudą to, ką pagamino šis paleidimas, pavyzdžiui sha256sum office.conf, saugomą šalia versijos žymės. Būtent ši viena reikšmė leidžia pakartotiniam paleidimui atskirti atnaujinimą nuo nieko neveikimo.
Pakeisk atomiškai ir išsaugok ankstesnį rinkinį
Perkelk parengtą rinkinį į jo vietą viena operacija ten, kur failų sistema tai leidžia, ir išsaugok peržiūrėtą ankstesnį rinkinį po laiko žymą turinčiu vardu. Dalinė kopija, kuri palieka naują profilį šalia seno rakto, sukuria paslaugą, kuri autentifikuojasi neteisinga tapatybe ir neužregistruoja nieko naudingo apie priežastį. Jei pakeitimas negali būti atominis, išdėstyk perkėlimus taip, kad profilis atsidurtų paskutinis.
Kai tikslas jau egzistuoja, aiškiai nuspręsk, ar šis paleidimas yra atnaujinimas, identiškas pakartotinis paleidimas, ar konfliktas su kito įrenginio profiliu. Tylus profilio, priklausančio kitai tapatybei, perrašymas yra kelias, kuriuo dvi mašinos pradeda dalytis vienu sertifikatu. Verčiau atmesk paleidimą ir įvardyk konfliktuojantį savininką.
Aktyvuok vieną savininką ir įrodyk tai
Pasirink vieną aktyvavimo kelią, arba systemd egzempliorių, arba NetworkManager, ir naudok jį nuosekliai. Neprižiūrimo openvpn proceso paleidimas šalia įjungto įrenginio duoda du tunelius, konkuruojančius DNS atnaujinimus ir jokio aiškaus atsakymo, į kurį iš jų taiko sustabdymo komanda. Po aktyvavimo patikrink systemctl is-active openvpn-client@office, tada maršrutą į nutolusį prefiksą, tada resolvectl status tunelio įdiegtam resolveriui. Užbaik pasiekdamas vieną išteklių, dėl kurio tunelis egzistuoja.
Veikiantis procesas ir žalia dėkleto piktograma yra proceso faktai, o ne įrodymas, kad tapatybė ir srauto politika išgyveno perdavimą.
Pakartotinis paleidimas ir išėmimas yra atskiri darbo srautai
Antras paleidimas turėtų suartėti prie tų pačių peržiūrėtų failų ir to paties savininko, o ne sukurti antrą paskyrą ar antrą tarnybą. Išėmimas yra sava procedūra: sustabdyk tikslų savininką, archyvuok arba ištrink vietinį profilį pagal politiką ir panaikink tapatybę ties vartais. Vietinio rakto failo ištrynimas nepanaikina kopijos, kuri jau paliko mašiną.
Išlaikyk atkūrimo kelią, kuris nepriklauso nuo tunelio, pavyzdžiui, prieigą prie konsolės ar antrą valdymo maršrutą. Paruošimo pakeitimas, kuris užrakina tave už mašinos ribų, yra nepavykęs pakeitimas, net jei kiekvienas etapas pranešė apie sėkmę.
Scenarijus, kurį verta išlaikyti, yra operacija dėl nuosavybės ir įrodymų. Trumpas privilegijuotų kopijavimo komandų sąrašas nėra tas pats.