Скрипте за припрему које пријаве грешку и наставе раде горе од скрипти које се никада не покрену. Подешавање клијента дотиче заштићене кључеве, идентитет на пролазу и сервис који можда већ послужује саобраћај. Сваком од тога треба услов заустављања, а скрипта мора да зна до које је фазе стигла када се зауставила.

Третирај целу ствар као једну трансакцију са пет контролних тачака и натерај сваку контролну тачку да сама одбије наставак.

Поправи улазе пре него што дотакнеш датотечни систем

Почни са изричитим уговором: један идентитет, један извор профила, један намеравани власник сервиса. Провери да профил постоји, да су сертификат и кључ на које упућује читљиви и да циљни директоријум припада очекиваном пакету. Путања која се разреши није доказ да је материјал иза ње потпун.

Одбиј празне променљиве рано. Непостављена $DEVICE која се шири у ништа претвара install -m 400 $KEY /etc/openvpn/client/ у копију усмерену на директоријум, а отказ долази касније као сервис који не може да прочита свој кључ.

Састави скуп профила у припремном директоријуму

Прво изгради цео скуп на приватном месту: профил, CA, клијентски сертификат, кључ и сваки помоћник који профил позива. Копирај са install -m 400 -o root -g root тако да се дозволе поставе при стварању, а не после. Затим провери референце унутар профила, јер се релативна линија ca или key разрешава према радном директоријуму јединице чим сервис стартује. Ништа не сме да се упише у активни директоријум док се цео скуп не валидира.

Забележи не-тајни отисак онога што је ово извршавање произвело, на пример sha256sum office.conf сачуван поред ознаке верзије. Управо та једна вредност омогућава поновном извршавању да разликује ажурирање од нечињења.

Замени атомски и сачувај претходни скуп

Премести припремљени скуп на место једном операцијом тамо где датотечни систем то дозвољава и сачувај прегледани претходни скуп под временски означеним именом. Делимична копија која остави нов профил поред старог кључа ствара сервис који се аутентификује погрешним идентитетом и не бележи ништа корисно о разлогу. Ако замена не може бити атомска, поређај премештања тако да профил слети последњи.

Када циљ већ постоји, изричито одлучи да ли је ово извршавање ажурирање, идентично понављање или сукоб са профилом другог уређаја. Тихим преписивањем профила који припада другом идентитету две машине почињу да деле један сертификат. Уместо тога одбиј извршавање и именуј сукобљеног власника.

Активирај једног власника и докажи то

Изабери један пут активације, или инстанцу systemd или NetworkManager, и користи га доследно. Покретање неконтролисаног процеса openvpn поред омогућене јединице даје два тунела, конкурентна DNS ажурирања и нема јасног одговора на које од њих циља наредба за заустављање. После активације провери systemctl is-active openvpn-client@office, затим путању до удаљеног префикса, затим resolvectl status за резолвер који је тунел инсталирао. Заврши достизањем једног ресурса због којег тунел постоји.

Процес који ради и зелена икона у системској траци су чињенице о процесу, а не доказ да су идентитет и политика саобраћаја преживели предају.

Поновно извршавање и повлачење су одвојени токови рада

Друго извршавање треба да конвергира ка истим прегледаним датотекама и истом власнику, а не да створи други налог или други демон. Повлачење је сопствени поступак: заустави тачног власника, архивирај или избриши локални профил према политици и опозови идентитет на пролазу. Брисање локалне датотеке са кључем не опозива копију која је већ напустила машину.

Задржи пут опоравка који не зависи од тунела, као приступ конзоли или друга путања управљања. Промена у припреми која те закључа изван машине је неуспела промена, чак и када је свака фаза пријавила успех.

Скрипта коју вреди задржати је трансакција око власништва и доказа. Кратак списак привилегованих команди за копирање није исто.

Повезани чланци