Laktawan ang Home VPN gamit ang systemd ExecCondition
Ang sinadyang paglaktaw at sirang utos ng paghahanda ay magkaibang resulta. Tukuyin ang mga exit code ng helper, pagkatapos subukan ang paglipat sa pagitan ng mga network.
Walang gagawin ang VPN ng home network kapag ang laptop ay nakaupo na sa network na iyon. Ang nakakaakit na shortcut ay isang utos ng paghahanda na lumalabas na may di-sero na code; nabigo nito ang unit at ginagawang mukhang sira ang bawat dashboard. May direktiba ang systemd para sa eksaktong ganitong uri ng desisyon, at hinihiwalay nito ang sinadyang paglaktaw mula sa tunay na fault. Ang paggawa nito nang tama ay pangunahin tungkol sa pagsusulat kung ano ang ibig sabihin ng bawat exit code.
Bakit ang nabigong paunang kondisyon ay maling hugis
Itinuturing ng ExecStartPre ang di-sero na exit bilang pagkabigo sa pagsisimula, na tama para sa utos na naghahanda ng serbisyo. Ang paggamit nito bilang kondisyon ay ginagawang hindi makilala ang desisyon sa patakaran mula sa sirang dependency. Umiiral ang ExecCondition upang ang unit ay makatanggi na magsimula nang hindi namarkahang nabigo.
Mahalaga ang pagkakaibang iyon sa alas-tres ng madaling-araw, kapag walang gustong suriin ang pulang unit na kumilos ayon sa disenyo. Itinatago rin ng nabigong unit ang tunay na mga fault sa mga sinadya.
Isulat muna ang kontrata ng exit code
Isulat ang kontrata bago ang script. Ang exit na sero ay nangangahulugang magpatuloy, ang exit na isa ay nangangahulugang laktawan ang natitirang mga utos ng pagsisimula, at ang exit na 255 ay nangangahulugang ang kondisyon mismo ay hindi tumakbo. Ang mga code sa pagitan ng dalawa at 254 ay karaniwang nangangahulugan ding laktawan, na madaling makalimutan kapag nagbabalik ang helper ng random na error code. Ang drop-in sa ibaba ay nag-uugnay ng helper sa tunay na pangalan ng unit.
[Service]
ExecCondition=/usr/local/libexec/should-start-home-vpnSuriin ang epektibong unit para sa minanang SuccessExitStatus o stop-post na mga setting bago ipagpalagay ang default na semantika. Pagkatapos ay sinasadyang subukan ang bawat isa sa tatlong resulta.
Ang pahiwatig ng network ay hindi patunay ng lokasyon
Ang maabot na address ng router o kilalang MAC ay maaaring magmungkahi ng tamang network, at wala sa dalawa ang nagpapatunay nito. Maaaring muling gamitin ng ibang network ang parehong address, maaaring luma na ang ARP data, at maaaring tularan ang mga identifier. Tratuhin ang probe bilang optimisasyon na naaayon sa patakaran, hindi bilang resulta ng pagpapatotoo.
Magpasya nang maaga kung ano ang ibig sabihin ng kawalan ng katiyakan. Ang pagsisimula ng VPN kapag hindi ka sigurado ay ligtas para sa client na hindi lang makakakonekta; ang paglaktaw dito kapag hindi ka sigurado ay hindi ligtas. Gawing may hangganan ang probe, at basahin ang aktibong interface sa halip na ipagpalagay ang una sa listahan. Ang probe na nakabitin ay mas masama kaysa sa sumasagot ng hindi, dahil hinihintay ito ng unit.
Itala ang mga palagay na iyon sa tabi ng unit file upang malaman ng susunod na tao kung ano ang pinaniniwalaan ng helper. Ang komento sa tuktok ng script ay ang pinakamurang lugar upang itago ang mga ito.
Pangasiwaan ang paglipat sa pagitan ng mga network
Tumakbo ang kondisyon kapag nagsimula ang serbisyo, at hindi ito muling sinusuri sa ibang pagkakataon. Ang na-laktawang unit ay nananatiling na-laktawan pagkatapos lumipat ang laptop sa isang café, at ang tumatakbong tunnel ay nananatiling nakaangat pagkatapos umuwi ang laptop. Iugnay ang lifecycle ng pagbabago ng network sa desisyon ng pagsisimula at paghinto sa pamamagitan ng hiwalay na mekanismo.
systemctl cat home-vpn.serviceSubukan ang apat na kaso: pagsisimula sa bahay, pagsisimula sa labas, probe na hindi makatakbo, at paglipat sa pagitan ng mga network habang aktibo ang unit. Panatilihing nakikita sa journal ang dahilan ng paglaktaw upang ang sinadyang desisyon ay hindi kailanman magmukhang pagkabigo sa pagpapatotoo. Idinodokumento ng reference ng serbisyo ang semantika ng exit at ang pinakamababang bersyon.