Klargjering av ein OpenVPN-klient med trinn som stoppar ved feil
Fem trinn hindrar eit klargjeringsskript i å etterlate ein halv installasjon: kontroller inndata, førebu settet, byt atomisk, aktiver éin eigar, planlegg avvikling.
Klargjeringsskript som rapporterer ein feil og held fram, er verre enn skript som aldri blir køyrde. Klientoppsett rører ved verna nøklar, ein identitet ved gatewayen og ei teneste som kanskje alt tener trafikk. Kvar av desse treng ein stoppbetingelse, og skriptet må vite kva trinn det nådde då det stoppa.
Handsam heile saka som éi transaksjon med fem kontrollpunkt, og få kvart kontrollpunkt til å nekte å halde fram på eiga hand.
Rett inndataa før du rører filsystemet
Start med ein uttrykkeleg kontrakt: éin identitet, éi profilkjelde, éin tiltenkt tenesteeigar. Kontroller at profilen finst, at sertifikatet og nøkkelen han viser til er lesbare, og at målkatalogen høyrer til den forventa pakka. Ein stig som løysest opp er ikkje prov for at materialet bak han er komplett.
Avvis tomme variablar tidleg. Ein usett $DEVICE som blir utvida til ingenting gjer install -m 400 $KEY /etc/openvpn/client/ til ein kopi retta mot ein katalog, og feilen dukkar seinare opp som ei teneste som ikkje kan lese nøkkelen sin.
Set saman profilsettet i ein klargjeringskatalog
Bygg fyrst det komplette settet på ein privat stad: profil, CA, klientcertifikat, nøkkel og kvar hjelpar som profilen kallar. Kopier med install -m 400 -o root -g root slik at rettar blir sette ved opprettinga og ikkje etterpå. Kontroller deretter referansane inne i profilen, fordi ei relativ ca- eller key-line blir løyst mot arbeidskatalogen til eininga når tenesta startar. Ingenting bør skrivast til den levande katalogen før heile settet validerer.
Registrer eit ikkje-hemmeleg fingeravtrykk av det denne køyringa produserte, til dømes sha256sum office.conf lagra ved sida av ein versjonsmarkør. Nettopp den eine verdien gjer at ei ny køyring kan skilje ei oppdatering frå ei køyring utan endringar.
Byt atomisk og hald på det førre settet
Flytt det klargjorde settet på plass som éin operasjon der filsystemet tillèt det, og hald på det gjennomgåtte førre settet under eit tidsstempla namn. Ein delvis kopi som lèt ein ny profil liggje ved sida av ein gammal nøkkel, gir ei teneste som autentiserer med feil identitet og ikkje loggar noko nyttig om kvifor. Om bytet ikkje kan vere atomisk, ordne flyttingane slik at profilen landar sist.
Når målet alt finst, må du uttrykkeleg avgjere om denne køyringa er ei oppdatering, ei identisk ny køyring eller ein konflikt med profilen til ein annan eining. Stille overskriving av ein profil som høyrer til ein annan identitet, er måten to maskinar endar med å dele eitt sertifikat. Avvis køyringa og namnge den motstridande eigaren i staden.
Aktiver éin eigar og prov det
Vel éin aktiveringsveg, anten systemd-instansen eller NetworkManager, og bruk han konsekvent. Start av ein ustyrt openvpn-prosess ved sida av ei aktivert eining gir to tunnelar, konkurrerande DNS-oppdateringar og inga klar melding om kva ein stoppekommando råkar. Kontroller etter aktivering systemctl is-active openvpn-client@office, deretter ruta til det fjerne prefikset, deretter resolvectl status for oppløysaren som tunnelen installerte. Avslutt med å nå éin ressurs som tunnelen finst for.
Ein køyrande prosess og eit grønt skuffeikon er prosessfakta, ikkje prov for at identiteten og trafikkpolitikken overlevde overleveringa.
Ny køyring og avvikling er separate arbeidsflytar
Ei andre køyring bør konvergere mot dei same gjennomgåtte filene og den same eigaren, ikkje opprette ein annan konto eller ein annan daemon. Avvikling er si eiga framgangsmåte: stopp den nøyaktige eigaren, arkiver eller slett den lokale profilen etter policy, og trekk tilbake identiteten ved gatewayen. Sletting av ei lokal nøkkelfil trekkjer ikkje tilbake ein kopi som alt har forlate maskinen.
Hald på ein gjenopprettingsveg som ikkje er avhengig av tunnelen, slik som konsolltilgang eller ei anna administrasjonsrute. Ei klargjeringsendring som låser deg ute av maskinen, er ei mislukka endring sjølv når kvart trinn rapporterte suksess.
Skriptet som er verdt å halde på, er ein transaksjon rundt eigarskap og prov. Ei kort liste over privilegerte kopikommandoar er ikkje det same.