Paslaugos paleidimas iš naujo naudojant OpenVPN up: kabliukai nugali tun0.device
Įrenginio vienetas seka sąsają, o ne ryšį. Pasirinkite up arba route-up pagal paslaugos reikalingą sąlygą, tada išsiųskite neblokuojantį paleidimą iš naujo.
Priklausomos paslaugos prijungimas prie tun0.device atrodo kaip tunelio prenumerata, bet taip nėra. Įrenginio vienetas atspindi, kad sąsaja egzistuoja, ir tai gali likti tiesa per nepavykusį ryšį ir po jo einantį prisijungimą iš naujo. Tada paslauga veikia netinkamu momentu arba niekada, priklausomai nuo to, ar sąsaja per tą laiką dingo. Kabliukas, aprašantis įvykį, kuris jums iš tikrųjų rūpi, yra tas, kurį kviečia OpenVPN, o ne tas, kurį išveda systemd.
Nuspręskite, kokios sąlygos reikia paslaugai, prieš pasirinkdami trigerį, nes trys kandidatai nėra keičiami.
Ką įrenginio vienetas iš tikrųjų seka
systemd sukuria įrenginio vienetą pagal branduolio požiūrį į tinklo sąsają, todėl tun0.device tampa aktyvus, kai sąsaja atsiranda, ir neaktyvus, kai ji pašalinama. Su persist-tun švelnus paleidimas iš naujo palieka sąsają vietoje, todėl vienetas niekada nemirksi ir niekas prie jo prijungtas nesuaktyvinamas. Net be pastovumo vienetas nieko nesako apie maršrutus, DNS ar tai, ar atsako tolimasis galas.
Tai daro jį prastu pakaitalu 'VPN paruoštas'. Klausytojas, kuriam reikia tik vietinio adreso, gali būti patenkintas sąsajos egzistavimu, o paslaugai, kuri kviečia programą tolimajame tinkle, reikia maršrutų ir pasiekiamumo, ko įrenginio vienetas negali išreikšti.
up, route-up ir up-restart reiškia skirtingus dalykus
up paleidžiamas po to, kai atidaromas TUN/TAP įrenginys ir sukonfigūruojama sąsaja, o tai yra tinkamas momentas klausytojui, kuris susieja priskirtą adresą. route-up paleidžiamas po maršrutų įdiegimo, atsižvelgiant į bet kokį sukonfigūruotą maršruto delsimą, ir tinka darbui, kuriam reikia užbaigto maršrutų etapo. Nė vienas neįrodo, kad tolimoji programa atsako. Rinktis tarp jų yra klausimas, ko reikia paslaugai, o ne kuris kabliukas skamba baigtiniau.
Su persist-tun paleidimai iš naujo naudoja įrenginį iš naujo, todėl up nebevykdomas, nebent nustatytas up-restart. Ta parinktis įgalina up scenarijų dokumentuotam paleidimo iš naujo gyvavimo ciklui, o jo aplinka yra sumažinta, palyginti su pirmuoju paleidimu. Scenarijus, kuris daro prielaidą, kad aplinka pilna, veikia pirmojo ryšio metu ir nepavyksta kito.
Išsiųskite veiksmą nelaukdami jo
Kabliukas, kuris sinchroniškai kviečia systemctl restart, gali užstrigti su vienetu, kurio tvarka laukia tunelio. systemctl --no-block try-restart vpn-dependent.service įdeda užduotį į eilę ir grįžta, o tai neleidžia kabliukui blokuoti ryšio, į kurį jis reagavo. try-restart veikia tik vykdomą vienetą, o restart paleidžia ir neaktyvų; rinkitės sąmoningai, o ne iš įpročio.
Įdėjimas į eilę nėra patikrinimas. Kabliukas grąžina sėkmę, kai tik užduotis priimama, todėl patikra turi vykti tikslinio vieneto žurnale arba jo faktinėje klausytojo būsenoje.
Paleidimo iš naujo politika gyvena vienete, o ne kabliuke
oneshot vienetas su RemainAfterExit=yes lieka aktyvus po jo komandos pabaigos, o antrasis paleidimo prašymas nieko neveikia, nes systemd mano, kad jis jau paleistas. Tai savybė, aplink kurią projektuojama, o ne defektas, kurio apeinama kartotiniais paleidimo iškvietimais. Jei veiksmas turi būti vykdomas kiekvienam ryšiui, vienetui reikia formos, kuri tai leidžia.
After= rūšiuoja vienetus, o BindsTo= susieja gyvavimo trukmes, bet nė vienas nereiškia 'paleisk tai iš naujo kiekvieną kartą, kai VPN vėl prisijungia'. Prie tunelio prijungtas vienetas sustoja, kai sustoja tunelis; jis pats savęs nepaleidžia iš naujo, kai tunelis grįžta, nebent kažkas jį vėl paleidžia.
Išbandykite tris prisijungimus iš naujo, o ne vieną
Šaltas paleidimas, visiškas kliento paleidimas iš naujo ir švelnus prisijungimas iš naujo kiekvienas praktikuoja skirtingą kelią. Švelnus prisijungimas iš naujo yra tas, kuris atskleidžia trūkstamą up-restart, sumažintą aplinką ar įrenginio vienetą, kuris niekada netapo neaktyvus. Paleiskite visus tris ir patvirtinkite abi kryptis: paslauga veikia, kai tunelis pakyla, ir ji nepaleidžiama iš naujo dėl nesusijusių ryšio pokyčių, pavyzdžiui, Wi-Fi roamingo.
Išsaugokite nepriklausomą atkūrimo kelią, kai priklausoma paslauga neša jūsų pačių administravimo prieigą. Kabliukas, kuris paleidžia iš naujo tai, per ką esate prisijungę, yra pokytis, galintis jus užrakinti.