Voorsiening van ’n OpenVPN-kliënt met fases wat by foute stop
Vyf fases keer dat ’n voorsiening-skrip ’n halwe installasie agterlaat: bevestig insette, berei die stel voor, ruil atomies om, aktiveer een eienaar, beplan aftrede.
Voorsiening-skripte wat ’n fout rapporteer en aanhou loop, is erger as skripte wat nooit loop nie. Kliëntopstelling raak beskermde sleutels, ’n identiteit by die poort, en ’n diens wat dalk al verkeer bedien. Elkeen daarvan het ’n stopvoorwaarde nodig, en die skrip moet weet watter fase dit bereik het toe dit gestop het.
Hanteer die hele ding as ’n transaksie met vyf kontrolepunte, en maak elke kontrolepunt weier om op sy eie voort te gaan.
Maak die insette reg voordat jy aan die lêerstelsel raak
Begin met ’n eksplisiete kontrak: een identiteit, een profielbron, een beoogde dienseienaar. Bevestig dat die profiel bestaan, dat die sertifikaat en sleutel waarna dit verwys leesbaar is, en dat die teikengids aan die verwagte pakket behoort. ’n Pad wat oplos is nie bewyse dat die materiaal daaragter volledig is nie.
Verwerp leë veranderlikes vroeg. ’n Ongestelde $DEVICE wat na niks uitbrei, verander install -m 400 $KEY /etc/openvpn/client/ in ’n kopie wat op ’n gids gemik is, en die mislukking kom later as ’n diens wat nie sy sleutel kan lees nie.
Stel die profielstel in ’n tydelike gids saam
Bou eers die volledige stel op ’n private plek: profiel, CA, kliëntsertifikaat, sleutel, en enige helper wat die profiel aanroep. Kopieer met install -m 400 -o root -g root sodat toestemmings by skepping gestel word eerder as daarna. Kontroleer dan die verwysings binne die profiel, want ’n relatiewe ca- of key-lyn los op teen die eenheid se werkende gids sodra die diens begin. Niks moet in die lewende gids geskryf word voordat die hele stel valideer nie.
Teken ’n nie-geheime vingerafdruk aan van wat hierdie lopie opgelewer het, byvoorbeeld sha256sum office.conf wat langs ’n weergawemerk gestoor is. Daardie enkele waarde is wat ’n herloop laat weet of dit ’n opdatering of ’n niks-doen is.
Ruil atomies om en hou die vorige stel
Skuif die voorbereide stel op een operasie in plek waar die lêerstelsel dit toelaat, en hou die nagegane vorige stel onder ’n tydgestempelde naam. ’n Gedeeltelike kopie wat ’n nuwe profiel langs ’n ou sleutel laat, lewer ’n diens wat met die verkeerde identiteit verifieer en niks nuttigs oor die rede aanteken nie. As die omruiling nie atomies kan wees nie, orden die skuiwe sodat die profiel laaste land.
Wanneer die teiken al bestaan, besluit uitdruklik of hierdie lopie ’n opdatering, ’n identiese herloop, of ’n botsing met ’n ander toestel se profiel is. Om stilweg ’n profiel te oorskryf wat aan ’n ander identiteit behoort, is hoe twee masjiene een sertifikaat deel. Weier die lopie eerder en noem die botsende eienaar.
Aktiveer een eienaar en bewys dit
Kies een aktiveringspad, hetsy die systemd-geval of NetworkManager, en gebruik dit konsekwent. Om ’n onbestuurde openvpn-proses langs ’n geaktiveerde eenheid te begin, gee twee tonnels, mededingende DNS-opdaterings, en geen duidelike antwoord oor watter een ’n stopopdrag teiken nie. Kontroleer ná aktivering systemctl is-active openvpn-client@office, dan die roete na die afgeleë voorvoegsel, dan resolvectl status vir die resolveerder wat die tonnel geïnstalleer het. Eindig deur een hulpbron te bereik waarvoor die tonnel bestaan.
’n Lopende proses en ’n groen skinkbordikoon is prosesfeite, nie bewyse dat die identiteit en verkeersbeleid die oorhandiging oorleef het nie.
Herloop en aftrede is aparte werkvloei
’n Tweede lopie behoort op dieselfde nagegane lêers en dieselfde eienaar saam te val, nie ’n tweede rekening of ’n tweede daemon te skep nie. Aftrede is sy eie prosedure: stop die presiese eienaar, argiveer of verwyder die plaaslike profiel volgens beleid, en herroep die identiteit by die poort. Om ’n plaaslike sleutellêer te verwyder, herroep nie ’n kopie wat al die masjien verlaat het nie.
Hou ’n herstelpad wat nie van die tonnel afhang nie, soos konsoltoegang of ’n tweede bestuursroete. ’n Voorsieningsverandering wat jou van die boks uitsluit, is ’n mislukte verandering selfs wanneer elke fase sukses gerapporteer het.
Die skrip wat die moeite werd is om te hou, is ’n transaksie rondom eienaarskap en bewyse. ’n Kort lys bevoorregte kopieeropdragte is nie dieselfde ding nie.