Pag-provision ng isang OpenVPN client na may mga yugtong humihinto sa error
Limang yugto ang pumipigil sa script ng pag-provision na mag-iwan ng kalahating instalasyon: i-verify ang mga input, ihanda ang set, palitan nang atomiko, i-activate ang isang may-ari, planuhin ang pagreretiro.
Ang mga script ng pag-provision na nag-uulat ng error at nagpapatuloy ay mas masahol kaysa sa mga script na hindi kailanman tumatakbo. Ang pag-setup ng client ay humahawak sa mga protektadong key, isang pagkakakilanlan sa gateway at isang serbisyo na maaaring naghahatid na ng trapiko. Bawat isa sa mga ito ay nangangailangan ng kundisyon ng paghinto, at kailangang malaman ng script kung aling yugto ang naabot nito nang huminto ito.
Ituring ang kabuuan bilang isang transaksyon na may limang checkpoint, at gawing tumanggi sa sarili nitong magpatuloy ang bawat checkpoint.
Ayusin ang mga input bago hawakan ang file system
Magsimula sa isang tahasang kontrata: isang pagkakakilanlan, isang pinagmulan ng profile, isang nilalayong may-ari ng serbisyo. I-verify na umiiral ang profile, na nababasa ang sertipiko at key na tinutukoy nito, at na ang target na direktoryo ay pag-aari ng inaasahang package. Ang isang landas na nalulutas ay hindi patunay na kumpleto ang materyal sa likod nito.
Tanggihan ang mga bakanteng variable nang maaga. Ang isang hindi nakatakdang $DEVICE na lumalawak sa wala ay ginagawang kopya na naka-target sa isang direktoryo ang install -m 400 $KEY /etc/openvpn/client/, at ang pagpalya ay dumarating mamaya bilang serbisyong hindi mabasa ang key nito.
Tipunin ang set ng profile sa isang direktoryo ng paghahanda
Buuin muna ang kumpletong set sa isang pribadong lugar: profile, CA, sertipiko ng client, key at anumang katulong na tinatawag ng profile. Kopyahin gamit ang install -m 400 -o root -g root upang ang mga pahintulot ay itakda sa paglikha at hindi pagkatapos. Pagkatapos suriin ang mga sanggunian sa loob ng profile, dahil ang isang relatibong linyang ca o key ay nalulutas laban sa direktoryo ng trabaho ng unit sa sandaling magsimula ang serbisyo. Walang dapat isulat sa aktibong direktoryo hanggang sa ma-validate ang buong set.
Itala ang isang hindi-pribadong fingerprint ng ginawa ng pagtakbong ito, halimbawa sha256sum office.conf na nakaimbak sa tabi ng marker ng bersyon. Ang nag-iisang halagang iyon ang nagpapahintulot sa isang muling pagtakbo na makilala ang isang update mula sa walang ginawa.
Palitan nang atomiko at itago ang naunang set
Ilipat ang inihandang set sa lugar nito sa isang operasyon kung saan pinapayagan ng file system, at itago ang naunang set na nasuri sa ilalim ng pangalang may timestamp. Ang isang bahagyang kopya na nag-iiwan ng bagong profile sa tabi ng lumang key ay gumagawa ng serbisyong nagpapatotoo sa maling pagkakakilanlan at walang naitalang kapaki-pakinabang tungkol sa dahilan. Kung ang pagpapalit ay hindi maaaring maging atomiko, ayusin ang mga paglipat upang ang profile ay huling dumating.
Kapag umiiral na ang target, tahasan mong desisyunan kung ang pagtakbong ito ay isang update, isang magkaparehong muling pagtakbo, o isang salungatan sa profile ng ibang aparato. Ang tahimik na pag-overwrite sa isang profile na pag-aari ng ibang pagkakakilanlan ay ang paraan kung paano nauuwi ang dalawang makina sa pagbabahagi ng isang sertipiko. Tanggihan ang pagtakbo at pangalanan ang salungat na may-ari.
I-activate ang isang may-ari at patunayan ito
Pumili ng isang landas ng pag-activate, alinman sa instance ng systemd o NetworkManager, at gamitin ito nang tuloy-tuloy. Ang pagsisimula ng isang hindi pinamamahalaang proseso ng openvpn sa tabi ng naka-enable na unit ay nagbibigay ng dalawang tunnel, magkakumpitensyang update ng DNS at walang malinaw na sagot kung alin ang pinupuntirya ng utos ng paghinto. Pagkatapos ng pag-activate, suriin ang systemctl is-active openvpn-client@office, pagkatapos ang ruta patungo sa malayong prefix, pagkatapos ang resolvectl status para sa resolver na inilagay ng tunnel. Tapusin sa pamamagitan ng pag-abot sa isang resource kung saan umiiral ang tunnel.
Ang tumatakbong proseso at berdeng icon ng tray ay mga katotohanan ng proseso, hindi patunay na ang pagkakakilanlan at patakaran ng trapiko ay nakaligtas sa paglipat.
Ang muling pagtakbo at pagreretiro ay magkahiwalay na workflow
Ang ikalawang pagtakbo ay dapat magtagpo sa parehong nasuring mga file at parehong may-ari, hindi gumawa ng ikalawang account o ikalawang daemon. Ang pagreretiro ay sarili nitong pamamaraan: ihinto ang eksaktong may-ari, i-archive o tanggalin ang lokal na profile ayon sa patakaran, at bawiin ang pagkakakilanlan sa gateway. Ang pagtanggal ng lokal na file ng key ay hindi nagbabawi sa isang kopya na nakaalis na sa makina.
Panatilihin ang isang landas ng pagbawi na hindi nakadepende sa tunnel, tulad ng pag-access sa console o isang ikalawang ruta ng pamamahala. Ang pagbabago sa pag-provision na nagkakandado sa iyo palabas ng makina ay isang bigong pagbabago kahit iniulat ng bawat yugto ang tagumpay.
Ang script na sulit itago ay isang transaksyon sa paligid ng pagmamay-ari at ebidensya. Ang maikling listahan ng mga privileged na utos ng pagkopya ay hindi ang parehong bagay.