Tapşırıq girişdə işləyir, jurnal klientin başladığını göstərir, tunel isə heç vaxt qalxmır. Ya da qalxır və bir neçə saniyə sonra yox olur. Hər iki halda xassələr siyahısı çox güman ki, qaydasında idi. launchd tapşırığı qəbul edərkən iki vəd verdi: bir prosesə nəzarət edəcək və həmin proses işləməyə davam edəcək. VPN hər ikisinə ehtiyac duyur, düzgün XML faylı isə heç birini təmin etmir.

Düzgün xassələr siyahısı işlək xidmət demək deyil

plutil -lint strukturu yoxlayır. Binar faylın mövcud olub-olmadığını, arqumentlərin bu klient versiyasında dəstəkləndiyini və ya tapşırığın etimad məlumatlarının mövcud olduğu kontekstdə başladığını deyə bilmir. Bunlar semantik suallardır və launchd problemi kimi görünən uğursuzluqların çoxunu izah edir.

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

Tapşırığın yükləndiyini fərz etmək əvəzinə ikinci əmrin çıxışını oxuyun. O, son çıxış statusunu və xidmətin işləyib-işləmədiyini bildirir, bu da profilə toxunmadan əvvəl “heç başlamadı” ilə “başladı və öldü” arasında fərq qoyur.

Agentlər istifadəçi sessiyasını miras alır, demonlar yox

Apple-ın launchd sənədləri istifadəçi üzrə agentləri sistem demonlarından ayırır. Agent daxil olmuş istifadəçinin kontekstində, onun açar dəstəsi və mühiti ilə işləyir. Demon həmin sessiya olmadan işləyir və tapşırığı sistem qovluğuna köçürmək istifadəçinin interaktiv etimad məlumatlarını yenidən yaratmır.

Bu fərq dizaynı müəyyən edir. Əgər bağlantı üçün şəxsin daxil olması və ya MFA sorğusunu təsdiqləməsi tələb olunursa, dəstəklənən quruluş girişdən sonra işləyən istifadəçi sessiyası tapşırığıdır. Əgər heç kim daxil olmadan işləməlidirsə, klientə öz yenilənmə və ləğvetmə prosesi olan təsdiqlənmiş nəzarətsiz şəxsiyyət lazımdır. Səhv sətri seçmək təmiz başlayan və ilk autentifikasiya addımında uğursuz olan tapşırıq yaradır.

Fərqi arqument massivində parol ilə və ya sertifikat yoxlamalarını söndürməklə ört-basdır etməyin. Hər ikisi autentifikasiya tələbini oxuna bilən faylda daimi sirrə çevirir, ikincisi isə tunelin cavab verən hər şeyi autentifikasiya etdiyi anlamına gəlir.

Nəzarət yalnız proses ön planda qalanda işləyir

Özünü demonlaşdıran klient nəzarəti dərhal launchd-a qaytarır, nəzarətçi isə artıq çıxmış prosesə baxır. Tunel qalxmış ola bilər, amma launchd tapşırığın uğursuz olduğunu düşünür və yenidən başlatma siyasəti nəzərdə tutmadığınız bir şey edəcək.

Klientin sənədləşdirilmiş ön plan və ya xidmət rejimindən istifadə edin. Əgər məhsulun öz dəstəklənən başlatma funksiyası varsa, o funksiya artıq ön planda qalmağı və şəbəkə yığınına ötürməyi bilir; fərdi tapşırıq ayrı dizayndır, onun təkmilləşdirilməsi deyil.

Tapşırığa unikal etiket, nəzərdə tutulan icra faylı və düşünülmüş arqument massivi verin. Massiv shell əmr sətri deyil, ona görə borular və yönləndirmələr orada işləmir və dırnaq işarələri fərqli davranır. Administratorun terminalında uğurlu olan əmr ən yaxşı halda ilkin yoxlamadır.

Etimad məlumatları sorğusuz işləməlidir

Nəzarətsiz istismar etimad problemini aradan qaldırmır, onun yerini dəyişir. Kiminsə şəxsiyyətə sahib olması, nə qədər yaşayacağına qərar verməsi və necə əvəzləndiyini sənədləşdirməsi lazımdır. Bitmə müddəti izlənməyən sertifikat təqvim tarixi olan kəsintiyə çevrilir.

Sirləri arqumentlərdən və tapşırığın standart çıxışından uzaq saxlayın. Əgər klient etimad məlumatını qorunan anbardan oxumağı dəstəkləyirsə, o yoldan istifadə edin və tapşırığın icra kontekstinin anbara çata bildiyini yoxlayın. root kimi işləyən demon adətən giriş açar dəstəsinin elementini oxuya bilmir və bu, yalnız sistem kontekstində görünən detaldır.

Hazır olmağın nə demək olduğunu müəyyən edin, sonra orada sınayın

Uğurlu başlatma prosesin başladığını sübut edir. Şəbəkənin işlədiyini, şlüzün şəxsiyyəti qəbul etdiyini və ya daxili tətbiqin əlçatan olduğunu sübut etmir. Əgər başqa bir şey tuneldən asılıdırsa, ona bağlantını əks etdirən hazırlıq siqnalı lazımdır, tapşırığın başlama vaxtı yox.

Təkrar cəhdlər məhdud olmalı və itkin şəbəkəni rədd edilmiş etimad məlumatından ayırmalıdır. Hər uğursuzluqda yenidən başlatmaq vaxtı keçmiş sertifikatı bərpa edə bilmir və əsl cəhdi gizlədən eyni cəhdlərlə dolu jurnal yaradır.

Tapşırığı həqiqətən işləyəcəyi kontekstdə qəbul edin: açılışda şəbəkə yoxdur, normal giriş, yuxudan oyanma və nəzarətli dayanma. Sonra tapşırıq etiketini, klient versiyasını və profil revizyonunu birlikdə qeyd edin ki, növbəti şəxs bir vaxtlar işləmiş fayl əvəzinə aid edilə bilən xidmət miras alsın.

Əlaqəli məqalələr