Pripravljalne skripte, ki sporočijo napako in nadaljujejo, so slabše od skript, ki se nikoli ne zaženejo. Nastavitev odjemalca se dotakne zaščitenih ključev, identitete na prehodu in storitve, ki morda že streže prometu. Vsak od teh potrebuje pogoj za ustavitev, skripta pa mora vedeti, do katere stopnje je prišla, ko se je ustavila.

Obravnavaj celoto kot eno transakcijo s petimi kontrolnimi točkami in poskrbi, da vsaka kontrolna točka sama zavrne nadaljevanje.

Popravi vhode, preden se dotakneš datotečnega sistema

Začni z izrecno pogodbo: ena identiteta, en vir profila, en predvideni lastnik storitve. Preveri, da profil obstaja, da sta potrdilo in ključ, na katera se sklicuje, berljiva in da ciljna mapa pripada pričakovanemu paketu. Pot, ki se razreši, ni dokaz, da je gradivo za njo popolno.

Zavrni prazne spremenljivke zgodaj. Nenastavljena $DEVICE, ki se razširi v nič, spremeni install -m 400 $KEY /etc/openvpn/client/ v kopijo, usmerjeno v mapo, in napaka pride pozneje kot storitev, ki ne more prebrati svojega ključa.

Sestavi nabor profilov v pripravljalni mapi

Najprej zgradi celoten nabor na zasebnem mestu: profil, CA, odjemalsko potrdilo, ključ in vsak pomočnik, ki ga profil pokliče. Kopiraj z install -m 400 -o root -g root, da se dovoljenja nastavijo ob ustvarjanju in ne pozneje. Nato preveri sklice znotraj profila, ker se relativna vrstica ca ali key razreši glede na delovno mapo enote takoj, ko se storitev zažene. V aktivno mapo se ne sme zapisati nič, dokler se celoten nabor ne potrdi.

Zabeleži ne-tajni odtis tega, kar je ustvaril ta zagon, na primer sha256sum office.conf shranjen ob oznaki različice. Prav ta ena vrednost omogoča ponovnemu zagonu ločiti posodobitev od nedelanja ničesar.

Zamenjaj atomsko in ohrani prejšnji nabor

Premakni pripravljeni nabor na njegovo mesto z eno operacijo tam, kjer datotečni sistem to dovoli, in ohrani pregledani prejšnji nabor pod časovno žigosanim imenom. Delna kopija, ki pusti nov profil ob starem ključu, ustvari storitev, ki se overja z napačno identiteto in ne zabeleži nič koristnega o razlogu. Če zamenjava ne more biti atomska, razporedi premike tako, da profil pristane zadnji.

Ko cilj že obstaja, izrecno odloči, ali je ta zagon posodobitev, identična ponovitev ali spor s profilom druge naprave. Tiho prepisovanje profila, ki pripada drugi identiteti, je pot, po kateri dve napravi začneta deliti eno potrdilo. Namesto tega zagon zavrni in imenuj nasprotujočega lastnika.

Aktiviraj enega lastnika in to dokaži

Izberi eno pot aktivacije, bodisi primerek systemd bodisi NetworkManager, in jo uporabljaj dosledno. Zagon neupravljanega procesa openvpn ob omogočeni enoti da dva predora, tekmujoče posodobitve DNS in nobenega jasnega odgovora, na katerega od njiju cilja ukaz za ustavitev. Po aktivaciji preveri systemctl is-active openvpn-client@office, nato pot do oddaljene predpone, nato resolvectl status za razreševalnik, ki ga je namestil predor. Končaj z dosego enega vira, zaradi katerega predor obstaja.

Delujoč proces in zelena ikona v pladnju so dejstva o procesu, ne dokaz, da sta identiteta in prometna politika preživeli predajo.

Ponovni zagon in umik sta ločena delovna toka

Drugi zagon bi moral konvergirati k istim pregledanim datotekam in istemu lastniku, ne pa ustvariti drugega računa ali drugega demona. Umik je svoj postopek: ustavi točnega lastnika, arhiviraj ali izbriši lokalni profil skladno s politiko in prekliči identiteto na prehodu. Brisanje lokalne datoteke s ključem ne prekliče kopije, ki je napravo že zapustila.

Ohrani pot za obnovitev, ki ni odvisna od predora, na primer dostop do konzole ali drugo upravljalno pot. Sprememba priprave, ki te zaklene izven naprave, je neuspešna sprememba, tudi ko je vsaka stopnja poročala o uspehu.

Skripta, ki si jo je vredno ohraniti, je transakcija okoli lastništva in dokazov. Kratek seznam privilegiranih ukazov za kopiranje ni isto.

Sorodni članki