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

სამი პასუხი კითხვაზე, არის თუ არა VPN ჩართული

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

SignalAnswersBlind spot
scutil --nc statusIs the service connected?Third-party clients, wrong routes
route -n getWhere would this go?The peer may be down
A request to the far sideDoes it work now?Slow, and it changes state

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

წაიკითხეთ იდენტიფიკატორი და არა ჩვენების სახელი

scutil --nc list
scutil --nc status "Office"

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

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

მესამე მხარის კლიენტი იმალება სიისგან

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

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

სტატუსი მარშრუტიზაცია არ არის

დაკავშირებული სერვისი ამბობს, რომ გვირაბი არსებობს. ის არ ამბობს, რომ თქვენი დანიშნულება მას იყენებს. წაიკითხეთ მისამართები, შემდეგ ჰკითხეთ ბირთვს პირდაპირ:

ifconfig | grep -A4 utun
netstat -rn -f inet
route -n get 10.40.0.20

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

სახელდება ცალკე პრობლემაა

სხვა მანქანები ვერ აღწევენ Mac-ს სახელით, სანამ მისი მისამართი მუშაობს და ეს VPN-ის ხარვეზად მოხსენდება. ლოკალური ჰოსტის სახელი, ჰოსტის სახელი და DNS ჩანაწერი სამი სხვადასხვა რამ არის. scutil --get LocalHostName აჩვენებს Bonjour სახელს; sudo scutil --set HostName mac-office აყენებს იმ სახელს, რომელსაც სისტემა იუწყება.

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

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

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