Herbegin van 'n diens op OpenVPN up: hooks verslaan tun0.device
'n Toestel-eenheid volg die koppelvlak, nie die verbinding nie. Kies up of route-up vir die toestand wat die diens nodig het, en stuur dan 'n nie-blokkerende herbegin.
Om 'n afhanklike diens aan tun0.device te koppel lyk soos om op die tonnel in te teken, en dit is nie. 'n Toestel-eenheid weerspieël dat die koppelvlak bestaan, wat waar kan bly deur 'n mislukte verbinding en die herverbinding wat daarop volg. Die diens tree dan op die verkeerde oomblik op, of nooit, afhangend daarvan of die koppelvlak intussen verdwyn het. Die haak wat die gebeurtenis beskryf waaroor jy werklik omgee, is die een wat OpenVPN roep, nie die een wat systemd aflei nie.
Bepaal watter toestand die diens nodig het voordat jy die sneller kies, want die drie kandidate is nie uitruilbaar nie.
Wat die toestel-eenheid werklik volg
systemd skep 'n toestel-eenheid uit die kern se siening van 'n netwerkkopelvlak, so tun0.device word aktief wanneer die koppelvlak verskyn en word onaktief wanneer dit verwyder word. Met persist-tun hou 'n sagte herbegin die koppelvlak in plek, so die eenheid flapper nooit en niks wat daaraan gebind is, word geaktiveer nie. Selfs sonder volharding sê die eenheid niks oor roetes, DNS of of die ander kant antwoord nie.
Dit maak dit 'n swak proxy vir 'die VPN is gereed'. 'n Luisteraar wat net die plaaslike adres nodig het, kan tevrede wees met die bestaan van die koppelvlak, terwyl 'n diens wat 'n toepassing op die afgeleë netwerk roep, roetes en bereikbaarheid nodig het, wat die toestel-eenheid nie kan uitdruk nie.
up, route-up en up-restart beteken verskillende dinge
up loop nadat die TUN/TAP-toestel oopgemaak en die koppelvlak opgestel is, wat die regte oomblik is vir 'n luisteraar wat die toegewysde adres bind. route-up loop nadat roetes geïnstalleer is, onderhewig aan enige opgestelde roete-vertraging, en pas by werk wat die roete-stadium voltooi nodig het. Nie een bewys dat die afgeleë toepassing antwoord nie. Om tussen hulle te kies is 'n vraag oor wat die diens nodig het, nie oor watter haak meer voltooid klink nie.
Met persist-tun hergebruik herbegin die toestel, so up loop nie weer nie tensy up-restart gestel is. Daardie opsie aktiveer die up-skrip vir die gedokumenteerde herbegin-lewensiklus, en sy omgewing is verminder in vergelyking met 'n eerste begin. 'n Skrip wat die volle omgewing aanneem, werk op die eerste verbinding en faal op die volgende een.
Stuur die aksie sonder om daarop te wag
'n Haak wat systemctl restart sinchronies roep, kan doodloop teen 'n eenheid wie se ordening op die tonnel wag. systemctl --no-block try-restart vpn-dependent.service stel die taak in die ry en keer terug, wat verhoed dat die haak die verbinding blokkeer waarop hy reageer. try-restart werk net op 'n lopende eenheid, terwyl restart ook 'n onaktiewe een stel; kies doelbewus eerder as uit gewoonte.
In die ry sit is nie verifiëring nie. Die haak keer sukses terug sodra die taak aanvaar is, so die kontrole moet in die teiken-eenheid se joernaal of in sy werklike luisteraar-toestand gebeur.
Herbegin-beleid woon in die eenheid, nie in die haak nie
'n Oneshot-eenheid met RemainAfterExit=yes bly aktief nadat sy opdrag uitvoer, en 'n tweede begin-versoek doen niks omdat systemd dit as reeds begin beskou. Dit is 'n eienskap om rond te ontwerp, nie 'n defek om met herhaalde begin-oproepe te omseil nie. As die aksie per verbinding moet loop, het die eenheid 'n vorm nodig wat dit toelaat.
After= orden eenhede, en BindsTo= bind lewensduur, maar nie een beteken 'herbegin dit wanneer die VPN weer koppel' nie. 'n Eenheid wat aan die tonnel gebind is, stop wanneer die tonnel stop; dit herbegin nie homself wanneer die tonnel terugkeer nie, tensy iets dit weer begin.
Toets drie herverbindings, nie een nie
Koue begin, 'n volle kliënt-herbegin en 'n sagte herverbinding oefen elk 'n ander pad. Die sagte herverbinding is die een wat 'n ontbrekende up-restart, 'n verminderde omgewing of 'n toestel-eenheid wat nooit onaktief geword het nie, ontbloot. Laat al drie loop en bevestig beide rigtings: die diens tree op wanneer die tonnel opkom, en dit herbegin nie op onverwante skakelveranderings soos 'n Wi-Fi-roam nie.
Hou 'n onafhanklike herstelpad wanneer die afhanklike diens jou eie administrasie-toegang dra. 'n Haak wat die ding herbegin waardeur jy verbind is, is 'n verandering wat jou kan uitsluit.