Тапсырма кіру кезінде іске қосылады, журнал клиенттің іске қосылғанын көрсетеді, бірақ туннель ешқашан көтерілмейді. Немесе көтеріліп, бірнеше секундтан кейін жоғалады. Екі жағдайда да сипаттар тізімі, мүмкін, дұрыс болған. 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 ретінде жұмыс істейтін демон әдетте кіру кілт шынжырының элементін оқи алмайды, ал бұл тек жүйелік контексте көрінетін деталь.

Дайын дегеннің не екенін анықтап, сол жерде тексеріңіз

Сәтті іске қосу процестің басталғанын дәлелдейді. Ол желінің көтерілгенін, шлюздің сәйкестікті қабылдағанын немесе жеке қосымшаға жетуге болатынын дәлелдемейді. Егер бірдеңе туннельге тәуелді болса, оған тапсырманың басталу уақытын емес, қосылымды көрсететін дайындық сигналы қажет.

Қайталаулар шектеулі болуы және желінің жоқтығын қабылданбаған тіркелгі дерегінен ажырата білуі керек. Әрбір сәтсіздікте қайта іске қосу мерзімі өткен сертификатты жөндей алмайды және шынайысын жасыратын бірдей әрекеттерге толы журнал жасайды.

Тапсырманы ол шын мәнінде жұмыс істейтін контексте қабылдаңыз: жүктелу кезінде желі жоқ, қалыпты кіру, ұйқыдан ояну және бақыланатын тоқтату. Содан кейін тапсырма белгісін, клиент нұсқасын және профиль ревизиясын бірге жазып қойыңыз, сонда келесі адам бір кездері жұмыс істеген файлды емес, қадағалауға болатын қызметті мұра етеді.

Қатысты мақалалар