თქვენ წერთ სკრიპტს, რომელიც scutil --nc start-ს ასრულებს კავშირის სახელით, ის მუშაობს თქვენს Mac-ზე და ვარდება ოფისის ყოველ ახლად დაყენებულ მანქანაზე. სკრიპტი გატეხილი არ არის. მას სთხოვენ იმას, რაც არასდროს შეეძლო: არსებული კავშირის გაშვება არ არის იგივე ოპერაცია, რაც ახლის შექმნა.

მომზადება და სესიის მართვა ორი საქმეა ორი მფლობელით, და სამუშაო პროცესი, რომელიც საპირისპიროს ვარაუდობს, ყველა ტესტს გაივლის იმ მანქანაზე, სადაც დაიწერა.

რას ელაპარაკება სინამდვილეში გაშვების ბრძანება

სესიის მართვის ბრძანება მიმართავს კონფიგურაციას, რომელიც უკვე არსებობს და უკვე დამტკიცებულია. ის სისტემას სთხოვს ამ დასახელებული კავშირის აწევას, ადრე შენახული სერვერის პარამეტრებით, იდენტობის მითითებებით და პოლიტიკით. თუ ეს არასდროს დაყენდა, გასაშვები არაფერია.

ამიტომ ხარვეზი ახალ ტექნიკაზე ჩნდება და არა ადმინისტრატორის ლეპტოპზე. ლეპტოპი თვეების წინ მოამზადა ადამიანმა, რომელსაც ეს მას შემდეგ დავიწყებია. გაშვების ბრძანება წარმოიდგინეთ როგორც კარის ზარი, რომელიც ვიღაცამ გასულ კვარტალში გაყვანილობით შეაერთა. მასზე დაჭერა არ არის იგივე, რაც გაყვანილობის გაყვანა.

VPN კონფიგურაციის სამი მფლობელი

ორგანიზაციის მიერ მართული პროფილი მოდის მოწყობილობების მართვიდან. პროფილი ატარებს სერვერის მისამართებს, აუთენტიფიკაციის წესრიგს და ორგანიზაციის მოთხოვნილ პოლიტიკას, და VPN ადმინისტრატორი ის ადამიანია, ვინც მათ აწვდის. სკრიპტმა არ უნდა აღადგინოს ეს პარამეტრები სიაში ნაპოვნი ჩვენების სახელიდან.

მშობლიური პირადი VPN კონფიგურაცია იქმნება Apple-ის Network Extension API-ით, რომელიც ფარავს ჩაშენებულ IPsec და IKEv2 პროტოკოლებს. ეს არის აპლიკაციის ინტერფეისი შენახვის საფეხურით და მომხმარებლის დამტკიცებით, და არა shell ბრძანება, რომელიც ჩუმად ქმნის ნებისმიერ გვირაბის ტიპს, რომელსაც მომწოდებელი აწვდის.

მესამე მხარის კლიენტი მესამე შემთხვევაა, თავისი იმპორტის ფორმატით, თავისი მართვის ხელსაწყოთი და ხშირად თავისი პრივილეგირებული დამხმარით. მისი სესია ეკუთვნის იმ მომწოდებლის პროცესს. მსგავსი სახელის სისტემური სერვისის პოვნა არ არის მტკიცებულება, რომ სისტემური ბრძანება აკონტროლებს გვირაბს, და ასეთი ვარაუდი ქმნის სკრიპტებს, რომლებიც მუშაობად გვეჩვენება მანამ, სანამ მომწოდებელი კლიენტს განაახლებს.

მშობლიურ მომზადებას აქვს შენახვა და დამტკიცება

Apple-ის მოდელია ჩატვირთვა, შეცვლა, შენახვა. აპლიკაცია ტვირთავს არსებულ პრეფერენციებს გაშვების შემდეგ თავის პირველ შენახვამდე, ცვლის კონფიგურაციას და შემდეგ ინახავს მას. შენახვა აცხადებს შეცდომას, როცა ვერ ინარჩუნებს, და ამ შედეგის იგნორირება მომზადების ხარვეზს სამი ნაბიჯის შემდეგ კავშირის ხარვეზად აქცევს.

პირველი შენახვა ასევე ითხოვს, რომ მომხმარებელმა აპლიკაცია დაამტკიცოს. ეს განზრახ უსაფრთხოების საზღვარია და ნიშნავს, რომ ახალ Mac-ზე პირველი გაშვება ინტერაქტიულია, თუმცა ყოველი შემდგომი დაკავშირება და გათიშვა შეიძლება ავტომატიზდეს. დაგეგმეთ პირველი გაშვება როგორც ადამიანური დავალება დამსწრე ადამიანით. ავტომატიზეთ მეორე გაშვება და შემდგომი, და დაწერეთ ეს runbook-ში, რომ არავინ დაჰპირდეს შეუძლებელს. განლაგების გეგმა, რომელიც ჰპირდება სრულიად უყურადღებო პირველ გაშვებას, ჰპირდება იმას, რასაც პლატფორმა არ გთავაზობთ.

Apple ასევე გვირჩევს API-ზე დაყრდნობამდე სერვერის თავსებადობის შემოწმებას კონფიგურაციის პროფილით. ამ შემოწმების პირველად გაკეთება ჰყოფს «სერვერი ამ კლიენტს არ მიიღებს» და «კლიენტმა პარამეტრები არასდროს შეინახა» შემთხვევებს, რაც სხვადასხვა გუნდისთვის სხვადასხვა ბილეთია.

რისი ვარაუდი შეიძლება გააკეთოს განმეორებადმა გაშვების ბრძანებამ

მომზადების შემდეგ სკრიპტს შეუძლია უსაფრთხოდ მიმართოს არსებულ კავშირს მისი მფლობელის ინტერფეისით. მიეცით მას კავშირის სტაბილური იდენტობა და სასურველი ქმედება, და სხვა არაფერი. მან არ უნდა წაიკითხოს გამოცნობილი პრეფერენციების გზა და არ უნდა ჩათვალოს, რომ მენიუში ნაჩვენები სახელი მთელ სისტემაში უნიკალურია.

მშობლიური კავშირებისთვის scutil --nc start-ის მსგავსი დასახელებული სესიის მოთხოვნა მართვის ოპერაციაა. ის არ აყენებს სერვერის პარამეტრებს, არ იმპორტირებს რწმუნებულებას და არ ასრულებს პირველი შენახვის ავტორიზაციას. მოეპყარით მას როგორც ჯაჭვის ბოლო საფეხურს, არასდროს როგორც მთელ ჯაჭვს.

საიდუმლოებები შეინახეთ ბრძანების ხაზის არგუმენტებისა და ჩვეულებრივი დიაგნოსტიკური გამოსავლის გარეთ. რომელი იდენტობის მექანიზმიც არ უნდა აირჩიოს განლაგებამ, სწორედ მას უნდა დაეყრდნოს გაშვების ბრძანება, და shell-ის ისტორიაში ჩასმული პაროლი აღმოჩენაა ნებისმიერ მიმოხილვაში.

მიღების ორი შემოწმება

პირველი შემოწმება მომზადებაა: აიღეთ ახლად დაყენებული Mac და დაამტკიცეთ, რომ კონფიგურაცია არსებობს, სწორი მმართველის საკუთრებაშია და სრულად დამტკიცებულია. გააკეთეთ ეს კავშირის შემოწმებამდე, რადგან მოუმზადებელ მანქანაზე კავშირის ტესტი სკრიპტზე არაფერს ამტკიცებს.

მეორე შემოწმება სესიაა: დაუკავშირდით, მიაღწიეთ ნებადართულ რესურსს და სუფთად გაწყვიტეთ კავშირი. ახლა ყოველ ხარვეზს ჰყავს მფლობელი, და ეს არის ორი საქმის გამოყოფის პრაქტიკული სარგებელი. დაკარგული პროფილი მიწოდების პრობლემაა, შენახვის შეცდომა დამტკიცების პრობლემაა, უარყოფილი შესვლა აუთენტიფიკაციის პრობლემაა, და წარმატებული გაშვების შემდეგ დროის ამოწურვა სესიის ფენაა. არც ერთი მათგანი არ არის «სკრიპტი გატეხილია».

დაკავშირებული სტატიები