Sistem Parametrlərində saxlanmış VPN xidmətiniz var və terminalın onu işə salmasını istəyirsiniz. macOS-da dəstəklənən yol scutil --nc-dir, lakin yalnız sistemin öz şəbəkə bağlantısı menecerinə aid olan xidmətlər üçün. Menyu çubuğu API deyil: üçüncü tərəf müştərilərinin adətən öz avtomatlaşdırması olur və idarəetmə xidmətinin göndərdiyi profil yerli işə salmanı rədd edə bilər. Bu, tətbiq etdiyim yoxlama siyahısıdır: dəqiq xidməti tapın, vəziyyətini oxuyun, işə salın, vəziyyətin dəyişməsini gözləyin, sonra trafikin həqiqətən tuneldən getdiyini sübut edin. Uyğunsuzluq olan ilk addımda dayanın, çünki hər sonrakı əmr əvvəlkinin uğurlu olduğunu fərz edir.

İşə salmağa cəhd etməzdən əvvəl xidməti tapın

Yadda saxladığınız profil adından deyil, inventardan başlayın:

scutil --nc help
scutil --nc list

Hər sətir statusu xidmət identifikatoru, tip və göstərilən ad ilə cütləşdirir. İdentifikator skriptlərdə istifadə ediləcək dəyərdir, çünki göstərilən adlar təkrarlanır və dəyişdirilə bilər. Apple-ın scutil təlimatı şəbəkə bağlantısı rejimini sənədləşdirir, quraşdırılmış --nc help isə həmin Mac-dakı alt əmrlərin səlahiyyətli siyahısıdır; köhnə təlimatdan bir bayraqın hələ də macOS versiyanızda olduğunu güman etməyin.

Boş siyahı nəticədir, xəta deyil. Vendor müştərisi və ya idarəetmə profili tərəfindən yaradılan xidmət burada görünməz ikən aktiv ola bilər, ya da yerli nəzarətçinin idarə edə bilmədiyi tipdə görünə bilər. Bu halda vendorun alətindən və ya profil sənədlərindən istifadə edin. Yalnız işə salmaq üçün nəsə olsun deyə paralel yerli profil yaratmaq pis mübadilədir.

Cari vəziyyəti oxuyun və seçicini təsdiqləyin

İşə salmazdan əvvəl xidməti sorğulayın ki, uğurlu işə salmanın nəyi dəyişməli olduğunu biləsiniz:

scutil --nc status "Office VPN"

İki xidmət eyni göstərilən adı paylaşırsa, ad ikimənalıdır. Əvəzində identifikatoru ötürün; əmr hər ikisini qəbul edir, lakin yalnız identifikator bir xidmətin seçilməsinə zəmanət verir. Skriptdə təhlil etməzdən əvvəl status sözünün tanıdığınız biri olduğunu yoxlayın — adətən Connected, Disconnected, Connecting və ya Disconnecting. Həmçinin profilin idarə olunub-olunmadığını yoxlayın, çünki kilidli konfiqurasiya əmri qəbul edib yenə də ona məhəl qoymaya və ya təsdiq istəyə bilər.

Bu vəziyyət çağırışı ucuzdur, ona görə avtomatlaşdırmada onu qoruyucu kimi istifadə edin: yalnız status Disconnected olduqda başladın və Connecting-i uğursuzluq saymayın. Xidmət artıq Connected-dirsə, işləyən tuneli kəsmək əvəzinə işə salmanı atlayın.

Bağlantını işə salın və vəziyyətin sabitləşməsini gözləyin

İşə salma sorğusu asinxrondur. Əmr sorğu qəbul edildikdə qayıdır, autentifikasiya bitəndə və ya marşrutlar quraşdırılanda deyil. Onu işə salın, sonra məhdud gözləmə ilə vəziyyəti yoxlayın və xidmət Disconnected-a qayıdarsa çıxın:

scutil --nc start "Office VPN"
n=0
while [ "$n" -lt 30 ]; do
  state=$(scutil --nc status "Office VPN" | head -n 1)
  [ "$state" = "Connected" ] && break
  [ "$state" = "Disconnected" ] && { echo "start failed"; exit 1; }
  sleep 2
  n=$((n + 1))
done

Heç vaxt həll olunmayan Connecting statusu adətən etimad məlumatlarına, MFA-ya və ya serverə işarə edir, scutil-ə deyil. Əmr interaktiv giriş təmin edə bilməz, ona görə token və ya aparat açarı gözləyən profil Connecting-də qalıb sonda geri çəkiləcək. Təkrar cəhdlər əlavə etməzdən əvvəl status sözünü oxuyun; autentifikasiya sorğusuna qarşı dövrə uğur qazana bilməz.

Qabığın çıxış statusunu hazırlıq saymayın. Faydalı siqnal vəziyyət sətri və ardınca tunelin trafik daşıdığına dair sübutdur. Sakitcə qayıdan işə salma əmri sizi heç vaxt autentifikasiya etməyən bağlantı ilə qoya bilər.

Tunelin yalnız Connected deməsini deyil, trafik daşıdığını sübut edin

Connected bağlantını təsvir edir, marşrut qərarını deyil. Yerli PPP və IKEv2 xidmətləri ppp və ya utun interfeysi yaradıb marşrutlar quraşdırır, bölünmüş tunel isə standart marşrutu qəsdən toxunulmaz qoyur. İnterfeysləri və hər iki ünvan ailəsini yoxlayın:

ifconfig -l
netstat -rn -f inet
netstat -rn -f inet6
scutil --dns

Rəqəmi təxmin etmək əvəzinə xidmətin yaratdığı interfeysi tapın, sonra marşrut cədvəlindən konkret təyinatın hansı interfeysdən istifadə etdiyini soruşun: route -n get 10.0.0.10, daxili hostla əvəz edərək. Fiziki interfeysi göstərirsə, tunel işləyir, lakin o axını daşımır. Bölünmüş tunel marşrutlarını, həlledici sırasını və tunel interfeysinə icazə verib prosesə verməyən hər hansı yerli firewall qaydasını yoxlayın.

Ad həlli adi yalançı mənfi nəticədir. Daxili adlar tunel tamamilə sağlam ikən səhv həlledici vasitəsilə həll oluna bilər, bu da VPN nasazlığı kimi görünür və deyil. scutil --dns macOS-un istifadə edəcəyi sıranı göstərir; həlledici dəyişdikdən sonra keşi dscacheutil -flushcache və sudo killall -HUP mDNSResponder ilə təmizləyin.

Etimad məlumatlarını və imtiyazı əmr sətrindən kənarda saxlayın

Şifrəni, əvvəlcədən paylaşılmış açarı və ya tokeni heç vaxt arqumentlərə qoymayın. Arqumentlər proses siyahılarında görünür və qabıq tarixçəsinə düşür, kopyalanmış dəstək transcripti isə onları sızdıra bilər. Profilin öz etimad məlumatı idarəsi — istər Keychain elementi, istər sistem sorğusu, istərsə də müştərinin autentifikasiya axını — sirlərin yeridir.

Əmri sudo ilə işlətmək interaktiv girişi nəzarətsiz etmir. O, effektiv istifadəçini dəyişir, GUI sorğusunun, aparat tokeninin və ya giriş keychaininin əlçatanlığını deyil. LaunchAgent istifadəçi daxil olduqdan və keychain açıldıqdan sonra xidməti işə sala bilər; LaunchDaemon adətən həmin istifadəçi sessiyası hissələrinə çata bilmir. Təşkilat xidməti idarə edirsə, onun həyat dövrü qaydaları hər hansı yerli skriptdən üstündür.

Xidməti dayandırın və dayandığını yoxlayın

Başlamaq üçün istifadə etdiyiniz eyni seçici ilə dayandırın, sonra tunelin getdiyini güman etmək əvəzinə vəziyyəti yenidən oxuyun:

scutil --nc stop "Office VPN"
scutil --nc status "Office VPN"

Disconnected-a qayıdan dayandırma hələ bir şeyi yoxlamaq lazım gətirir: profilin tələb əsasında qoşulmağa qurulub-qurulmadığını, çünki bu, skriptiniz olmadan onu geri gətirə bilər. Başqa müştəri eyni Mac-da marşrutlara sahibdirsə, o marşrutlar yerli dayandırmadan sonra da qala bilər. Maşının VPN-dən çıxdığı qənaətinə gəlməzdən əvvəl marşrut yoxlamasını yenidən edin.

Əl ilə işlətdiyiniz örtük üçün sıranı sabit saxlayın: siyahı, status, işə salma, yoxlama, marşrut testi, dayandırma, təsdiq. İdentifikator mövcud olduqda dost adı sərbəst formatlı çıxışdan təhlil etməyin və işə salma əmrinin çıxışını hazırlıq saymayın. Bağlantı meneceri vəziyyəti bildirir; sübutunuz vəziyyət və tunelə işarə edən marşrutdur.

Əlaqəli məqalələr