VPN um Mac beim Start: launchd iwwerwaacht de Job, net den Tunnel
E Plist, deen de Lint packt, beweist näischt iwwer Umeldungsdaten oder Bereetschaft. Passt de Job un seng Sessioun un, haalt de Client am Virdergrond a test an deem Kontext.
De Job leeft beim Aloggen, de Log weist de Client beim Start, awer den Tunnel geet ni op. Oder en geet op an verschwënnt e puer Sekonnen duerno. An allen zwee Fäll war d'Proprietéitslëscht wahrscheinlech an der Rei. launchd huet zwou Verspriechen gemaach, wéi en de Job ugeholl huet: en iwwerwaacht e Prozess, an dee Prozess leeft weider. D'VPN brauch béides, an eng korrekt XML-Datei gëtt keen vun deene béiden.
Eng valabel Proprietéitslëscht ass nach kee funktionéierende Service
plutil -lint kontrolléiert d'Struktur. Et kann der net soen, ob de Binär existéiert, ob d'Argumenter vun dëser Client-Versioun ënnerstëtzt ginn, oder ob de Job an engem Kontext start, an deem d'Umeldungsdaten disponibel sinn. Dat si semantesch Froen, a si erkläre meeschtens d'Feeler, déi ausgesi wéi launchd-Problemer.
plutil -lint /Library/LaunchDaemons/com.example.vpn.plist
launchctl print system/com.example.vpn
Lies d'Ausgab vum zweiten Kommando, amplaz unzehuelen, datt de Job gelueden ass. Et mellt de leschte Exit-Status a behaapt, ob de Service leeft, wat "ni gestart" vun "gestart a gestuerwen" ënnerscheet, ier s du de Profil beréiers.
Agenten ierwen eng Benotzersessioun, Daemonen net
Dem Apple seng launchd-Dokumentatioun trennt Agenten pro Benotzer vun System-Daemonen. En Agent leeft am Kontext vum ageloggte Benotzer, mat sengem Schlësselbündel a senger Ëmwelt. En Daemon leeft ouni déi Sessioun, an e Job an e Systemverzeechnis ze réckelen erstellt dem Benotzer seng interaktiv Umeldungsdaten net nei.
Dësen Ënnerscheed entscheet den Design. Wann d'Verbindung verlaangt, datt eng Persoun sech aloggt oder en MFA-Prompt approuvéiert, ass déi ënnerstëtzte Léisung en Job an der Benotzersessioun, dee no dem Aloggen leeft. Wann en ouni ageloggte Benotzer muss funktionéieren, brauch de Client eng approuvéiert oniwwerwaacht Identitéit mat sengem eegene Prozess fir Erneierung a Widderruffung. Déi falsch Zeil ze wielen ergëtt en Job, deen propper start a beim éischten Authentifikatiounsschrëtt feelt.
Verdeck den Ënnerscheed net mat engem Passwuert am Argument-Array oder doduerch, datt s du d'Zertifikatspréifungen ausschalt. Béides mécht aus enger Authentifikatiounsufuerderung e permanent Geheimnis an enger liesbarer Datei, an dat zweete bedeit, datt den Tunnel alles authentifizéiert, wat äntwert.
Iwwerwaachung fonctionéiert just, wann de Prozess am Virdergrond bleift
E Client, deen sech selwer daemoniséiert, gëtt d'Kontroll direkt un launchd zréck, an den Iwwerwaacher beobacht da e Prozess, deen schonn eriwwer ass. Den Tunnel kann op si, awer launchd mengt, de Job wier feelgeschloen, an seng Restart-Politik mécht eppes, wat s du net wëlls.
Benotz de dokumentéierte Virdergrond- oder Service-Modus vum Client. Wann d'Produkt seng eege ënnerstëtzte Startfunktioun huet, weess déi Funktioun schonn, wéi een am Virdergrond bleift a wéi een un de Netzstack iwwergëtt; en eegene Job ass en aneren Design, keng Verbesserung dovun.
Gëff dem Job en eenzegaartege Label, déi virgesinn ausführbar Datei an en duerchduechte Argument-Array. En Array ass keng Shell-Kommandozeil, also Pipes a Redirektiounen funktionéieren do net, an d'Zitéierung verhält sech anescht. E Kommando, deen an engem Administrateur-Terminal geléngt, ass héchstens eng Virpréifung.
Umeldungsdaten mussen ouni Prompt funktionéieren
Oniwwerwaachten Betrieb verréckelt de Problem mat den Umeldungsdaten, amplaz en ze läschen. Een muss d'Identitéit besëtzen, entscheeden wéi laang se lieft, an dokumentéieren, wéi se ersat gëtt. En Zertifikat ouni Iwwerwaachung vum Ofleen gëtt eng Panne mat engem Datum am Kalenner.
Halt Geheimnisser aus den Argumenter an aus der Standardausgab vum Job eraus. Wann de Client d'Liese vun engem Umeldungsdatum aus engem geschützte Späicher ënnerstëtzt, benotz dee Wee, a préif, ob de Ausféierungskontext vum Job de Späicher erreecht. En Daemon, deen als root leeft, kann normalerweis keen Element vum Aloggs-Schlësselbündel liesen, an dat ass eng Detail, déi just am Systemkontext opdaucht.
Definéier, wat prett heescht, a test et do
E erfollegräiche Start beweist, datt de Prozess ugefaang huet. Et beweist net, datt d'Netz op ass, datt de Gateway d'Identitéit akzeptéiert huet, oder datt d'privat Applikatioun erreechbar ass. Wann eppes anescht vum Tunnel ofhänkt, brauch et e Bereetschaftssignal, dat d'Verbindung reflektéiert, net d'Startzäit vum Job.
Widderhuelungen sollten begrenzt sinn a sollten en fehlendt Netz vun engem ofgeleenten Umeldungsdatum ënnerscheeden. Bei all Feeler nei ze starten kann en ofgelafene Zertifikat net reparéieren a produzéiert e Log voller identescher Versich, deen de richtege verstoppt.
Akzeptéier de Job an deem Kontext, an deem en tatsächlech leeft: keen Netz beim Start, en normale Login, en Erwächen aus dem Schlof, an en kontrolléierte Stop. Duerno notéier de Job-Label, d'Client-Versioun an d'Profil-Revisioun zesummen, sou datt déi nächst Persoun en zouordenbare Service ierft amplaz eng Datei, déi eng Kéier funktionéiert huet.