బూట్ సమయంలో Mac VPN: launchd పనిని పర్యవేక్షిస్తుంది, టన్నెల్ను కాదు
lint పాస్ అయిన plist ఆధారాలు లేదా సంసిద్ధత గురించి ఏమీ నిరూపించదు. పనిని దాని సెషన్తో సరిపోల్చి, క్లయింట్ను ముందుంచి ఆ సందర్భంలో పరీక్షించండి.
లాగిన్ సమయంలో పని నడుస్తుంది, లాగ్ క్లయింట్ ప్రారంభమవుతున్నట్లు చూపుతుంది, కానీ టన్నెల్ ఎప్పుడూ పైకి రాదు. లేదా వచ్చి కొన్ని సెకన్ల తర్వాత మాయమవుతుంది. రెండు సందర్భాల్లోనూ ప్రాపర్టీ జాబితా బహుశా సరిగ్గా ఉంది. launchd పనిని స్వీకరించినప్పుడు రెండు వాగ్దానాలు చేసింది: ప్రక్రియను పర్యవేక్షిస్తుంది, ఆ ప్రక్రియ కొనసాగుతుంది. VPN కి రెండూ అవసరం, సరైన XML ఫైల్ ఏదీ ఇవ్వదు.
చెల్లుబాటు అయిన ప్రాపర్టీ జాబితా నడిచే సేవ కాదు
plutil -lint నిర్మాణాన్ని తనిఖీ చేస్తుంది. బైనరీ ఉందో లేదో, ఈ క్లయింట్ వెర్షన్ ఆర్గ్యుమెంట్లను మద్దతిస్తుందో లేదో, లేదా ఆధారాలు అందుబాటులో ఉన్న సందర్భంలో పని ప్రారంభమవుతుందో లేదో అది చెప్పలేదు. ఇవి అర్థశాస్త్ర ప్రశ్నలు, launchd సమస్యలుగా కనిపించే చాలా వైఫల్యాలకు ఇవే కారణం.
plutil -lint /Library/LaunchDaemons/com.example.vpn.plist
launchctl print system/com.example.vpn
పని లోడ్ అయిందని ఊహించకుండా రెండవ ఆదేశం అవుట్పుట్ చదవండి. అది చివరి నిష్క్రమణ స్థితి మరియు సేవ నడుస్తుందో లేదో నివేదిస్తుంది, ఇది ప్రొఫైల్ను తాకే ముందు "ఎప్పుడూ ప్రారంభం కాలేదు", "ప్రారంభమై మరణించింది" వేరు చేస్తుంది.
ఏజెంట్లు వినియోగదారు సెషన్ను వారసత్వంగా పొందుతాయి, డీమన్లు కావు
Apple యొక్క launchd పత్రాలు ప్రతి వినియోగదారు ఏజెంట్లను సిస్టమ్ డీమన్ల నుండి వేరు చేస్తాయి. ఏజెంట్ లాగిన్ అయిన వినియోగదారు సందర్భంలో, అతని కీచైన్ మరియు వాతావరణంతో నడుస్తుంది. డీమన్ ఆ సెషన్ లేకుండా నడుస్తుంది, పనిని సిస్టమ్ డైరెక్టరీకి తరలించడం వినియోగదారు ఇంటరాక్టివ్ ఆధారాలను తిరిగి సృష్టించదు.
డిజైన్ను నిర్ణయించేది ఈ భేదమే. కనెక్షన్ కోసం ఒక వ్యక్తి లాగిన్ చేయడం లేదా MFA ప్రాంప్ట్ను ఆమోదించడం అవసరమైతే, మద్దతు ఉన్న ఏర్పాటు లాగిన్ తర్వాత నడిచే వినియోగదారు సెషన్ పని. ఎవరూ లాగిన్ కాకుండా అది పని చేయాలంటే, క్లయింట్కు దాని స్వంత పునరుద్ధరణ మరియు రద్దు ప్రక్రియతో ఆమోదించబడిన పర్యవేక్షణ లేని గుర్తింపు అవసరం. తప్పు వరుసను ఎంచుకుంటే శుభ్రంగా ప్రారంభమై మొదటి ప్రామాణీకరణ దశలో విఫలమయ్యే పని ఏర్పడుతుంది.
ఆర్గ్యుమెంట్ శ్రేణిలో పాస్వర్డ్ పెట్టడం ద్వారా లేదా సర్టిఫికెట్ తనిఖీలను నిలిపివేయడం ద్వారా ఈ భేదాన్ని కప్పి పెట్టకండి. రెండూ ప్రామాణీకరణ అవసరాన్ని చదవగల ఫైల్లో శాశ్వత రహస్యంగా మారుస్తాయి, రెండవది టన్నెల్ సమాధానం ఇచ్చే ప్రతిదాన్ని ప్రామాణీకరిస్తుందని అర్థం.
ప్రక్రియ ముందుంటేనే పర్యవేక్షణ పని చేస్తుంది
తనను తాను డీమన్గా మార్చుకునే క్లయింట్ నియంత్రణను వెంటనే launchd కి తిరిగి ఇస్తుంది, తర్వాత పర్యవేక్షకుడు ఇప్పటికే ముగిసిన ప్రక్రియను చూస్తాడు. టన్నెల్ పైన ఉండవచ్చు, కానీ launchd పని విఫలమైందని భావిస్తుంది, దాని పునఃప్రారంభ విధానం మీరు ఉద్దేశించని పని చేస్తుంది.
క్లయింట్ డాక్యుమెంట్ చేసిన ముందు లేదా సేవా మోడ్ను ఉపయోగించండి. ఉత్పత్తికి దాని స్వంత మద్దతు ఉన్న ప్రారంభ లక్షణం ఉంటే, ఆ లక్షణం ముందుండటం మరియు నెట్వర్క్ స్టాక్కు అప్పగించడం ఇప్పటికే తెలుసు; అనుకూల పని వేరే డిజైన్, దాని మెరుగుదల కాదు.
పనికి ప్రత్యేక లేబుల్, ఉద్దేశించిన ఎగ్జిక్యూటబుల్ మరియు ఉద్దేశపూర్వక ఆర్గ్యుమెంట్ శ్రేణిని ఇవ్వండి. శ్రేణి shell ఆదేశ పంక్తి కాదు, కాబట్టి పైపులు మరియు మళ్లింపులు అక్కడ పని చేయవు, కోట్ల ప్రవర్తన భిన్నంగా ఉంటుంది. నిర్వాహకుడి టెర్మినల్లో విజయవంతమయ్యే ఆదేశం ఎక్కువైతే ప్రాథమిక తనిఖీ మాత్రమే.
ఆధారాలు ప్రాంప్ట్ లేకుండా పని చేయాలి
పర్యవేక్షణ లేని కార్యాచరణ ఆధారాల సమస్యను తొలగించకుండా కదిలిస్తుంది. ఎవరో గుర్తింపును కలిగి ఉండాలి, అది ఎంతకాలం జీవిస్తుందో నిర్ణయించాలి, ఎలా భర్తీ చేయబడుతుందో డాక్యుమెంట్ చేయాలి. గడువు పర్యవేక్షణ లేని సర్టిఫికెట్ క్యాలెండర్లో తేదీ ఉన్న అంతరాయంగా మారుతుంది.
రహస్యాలను ఆర్గ్యుమెంట్ల నుండి మరియు పని యొక్క ప్రామాణిక అవుట్పుట్ నుండి దూరంగా ఉంచండి. క్లయింట్ రక్షిత నిల్వ నుండి ఆధారాన్ని చదవడాన్ని మద్దతిస్తే, ఆ మార్గాన్ని ఉపయోగించండి, పని అమలు సందర్భం నిల్వను చేరుకోగలదో లేదో తనిఖీ చేయండి. root గా నడిచే డీమన్ సాధారణంగా లాగిన్ కీచైన్ అంశాన్ని చదవలేదు, ఇది సిస్టమ్ సందర్భంలో మాత్రమే కనిపించే వివరం.
సిద్ధం అంటే ఏమిటో నిర్వచించి అక్కడే పరీక్షించండి
విజయవంతమైన ప్రయోగం ప్రక్రియ ప్రారంభమైందని నిరూపిస్తుంది. నెట్వర్క్ పైన ఉందని, గేట్వే గుర్తింపును అంగీకరించిందని, లేదా ప్రైవేట్ అప్లికేషన్ చేరుకోగలదని నిరూపించదు. మరేదైనా టన్నెల్పై ఆధారపడితే, దానికి పని ప్రారంభ సమయం కాదు, కనెక్షన్ను ప్రతిబింబించే సంసిద్ధత సిగ్నల్ అవసరం.
పునఃప్రయత్నాలు పరిమితంగా ఉండాలి, లేని నెట్వర్క్ మరియు తిరస్కరించబడిన ఆధారాన్ని వేరు చేయాలి. ప్రతి వైఫల్యంలో పునఃప్రారంభించడం గడువు ముగిసిన సర్టిఫికెట్ను సరిచేయలేదు మరియు నిజమైన దాన్ని దాచే ఒకేలాంటి ప్రయత్నాలతో నిండిన లాగ్ను ఉత్పత్తి చేస్తుంది.
పనిని అది నిజంగా నడిచే సందర్భంలో అంగీకరించండి: బూట్లో నెట్వర్క్ లేదు, సాధారణ లాగిన్, నిద్ర నుండి మేల్కొనడం మరియు నియంత్రిత ఆపివేయడం. తర్వాత పని లేబుల్, క్లయింట్ వెర్షన్ మరియు ప్రొఫైల్ సవరణను కలిసి నమోదు చేయండి, తద్వారా తదుపరి వ్యక్తి ఒకప్పుడు నడిచిన ఫైల్కు బదులుగా ఆపాదించగల సేవను వారసత్వంగా పొందుతారు.