Tumatakbo ang job sa pag-login, nakikita sa log na nagsisimula ang kliyente, ngunit hindi kailanman bumabangon ang tunnel. O bumabangon ito at nawawala pagkalipas ng ilang segundo. Sa dalawang kaso, malamang maayos ang listahan ng property. Dalawang pangako ang ginawa ng launchd nang tanggapin ang job: susubaybayan nito ang isang proseso, at patuloy na tatakbo ang prosesong iyon. Kailangan ng VPN ang dalawa, at ang tamang XML file ay wala sa dalawa.

Ang wastong listahan ng property ay hindi gumaganang serbisyo

Sinusuri ng plutil -lint ang istruktura. Hindi nito masasabi kung may binary, kung sinusuportahan ng bersyon ng kliyenteng ito ang mga argumento, o kung nagsisimula ang job sa kontekstong may mga kredensyal. Mga semantikong tanong ang mga ito, at ipinapaliwanag nila ang karamihan sa mga pagkabigo na mukhang problema sa launchd.

plutil -lint /Library/LaunchDaemons/com.example.vpn.plist
launchctl print system/com.example.vpn

Basahin ang output ng ikalawang utos sa halip na ipalagay na na-load ang job. Iniulat nito ang huling exit status at kung tumatakbo ang serbisyo, na naghihiwalay ng "hindi kailanman nagsimula" sa "nagsimula at namatay" bago mo hawakan ang profile.

Nagmamana ang mga ahente ng user session, ang mga daemon ay hindi

Hinihiwalay ng dokumentasyon ng Apple tungkol sa launchd ang mga ahente ng bawat user sa mga system daemon. Tumatakbo ang ahente sa konteksto ng naka-login na user, kasama ang keychain at kapaligiran nito. Tumatakbo ang daemon nang walang session na iyon, at ang paglilipat ng job sa isang system directory ay hindi muling gumagawa ng interactive na kredensyal ng user.

Ang pagkakaibang ito ang nagtatakda ng disenyo. Kung kailangan ng koneksyon na may mag-login o mag-apruba ng MFA prompt, ang sinusuportahang kaayusan ay isang job sa user session na tumatakbo pagkatapos ng login. Kung kailangan nitong gumana nang walang naka-login, kailangan ng kliyente ng aprubadong walang-bantay na pagkakakilanlan na may sariling proseso ng pag-renew at pag-revoke. Ang maling row ay nagbubunga ng job na malinis na nagsisimula at nabibigo sa unang hakbang ng authentication.

Huwag takpan ang pagkakaiba gamit ang password sa argument array o sa pamamagitan ng pag-off ng mga pagsusuri sa certificate. Ginagawa ng dalawa ang pangangailangan sa authentication na permanenteng sikreto sa isang nababasang file, at ang pangalawa ay nangangahulugang ina-authenticate ng tunnel ang anumang sumasagot.

Gumagana lamang ang pangangasiwa kung nananatili ang proseso sa harapan

Ang kliyenteng naging daemon ang sarili ay agad na ibinabalik ang kontrol sa launchd, at pagkatapos ay pinapanood ng superbisor ang isang prosesong natapos na. Maaaring nakabangon ang tunnel, ngunit inaakala ng launchd na nabigo ang job, at ang patakaran nito sa restart ay gagawa ng hindi mo sinadya.

Gamitin ang dokumentadong foreground o service mode ng kliyente. Kung may sariling sinusuportahang startup feature ang produkto, alam na nito kung paano manatili sa harapan at kung paano ipasa sa network stack; ang pasadyang job ay hiwalay na disenyo, hindi pagpapabuti nito.

Bigyan ang job ng natatanging label, ang nilalayong executable, at sadyang argument array. Ang array ay hindi shell command line, kaya hindi gumagana doon ang mga pipe at redirection, at iba ang pag-uugali ng quoting. Ang utos na nagtatagumpay sa terminal ng administrator ay preliminong pagsusuri lamang.

Kailangang gumana ang mga kredensyal nang walang prompt

Inililipat ng walang-bantay na operasyon ang problema sa kredensyal sa halip na alisin ito. Kailangang pagmamay-ari ng isang tao ang pagkakakilanlan, magpasya kung gaano ito katagal nabubuhay, at idokumento kung paano ito pinapalitan. Ang certificate na walang pagsubaybay sa pag-expire ay nagiging outage na may petsa sa kalendaryo.

Ilayo ang mga sikreto sa mga argumento at sa standard output ng job. Kung sinusuportahan ng kliyente ang pagbasa ng kredensyal mula sa protektadong imbakan, gamitin ang landas na iyon, at tiyakin na naaabot ng execution context ng job ang imbakan. Ang daemon na tumatakbo bilang root ay karaniwang hindi makabasa ng item sa login keychain, at ito ang uri ng detalyeng lumilitaw lamang sa system context.

Tukuyin ang ibig sabihin ng handa, pagkatapos ay subukan doon

Ang matagumpay na paglunsad ay nagpapatunay na nagsimula ang proseso. Hindi nito pinapatunayan na nakabangon ang network, tinanggap ng gateway ang pagkakakilanlan, o naaabot ang pribadong aplikasyon. Kung may ibang nakadepende sa tunnel, kailangan nito ng signal ng kahandaan na sumasalamin sa koneksyon, hindi sa oras ng pagsisimula ng job.

Ang mga pagtatangka muli ay dapat may hangganan at dapat ihiwalay ang nawawalang network sa tinanggihang kredensyal. Ang pag-restart sa bawat pagkabigo ay hindi makakapag-ayos ng nag-expire na certificate at gumagawa ng log na puno ng magkakatulad na pagtatangka na nagtatago ng tunay.

Tanggapin ang job sa kontekstong talagang tatakbo ito: walang network sa boot, normal na login, paggising mula sa tulog, at kontroladong paghinto. Pagkatapos, itala nang sabay ang label ng job, bersyon ng kliyente, at rebisyon ng profile, upang ang susunod na tao ay magmana ng maiuugnay na serbisyo sa halip na file na minsang gumana.

Kaugnay na mga artikulo