OpenVPN კლიენტის ხელახლა დაკავშირება: სამი კონტროლი, სამი არეალი
ერთი სესიის მოწყვეტა, ყველა UDP კლიენტის შეტყობინება და დემონის გადატვირთვა სხვადასხვა ოპერაციაა. ჯერ არეალი განსაზღვრეთ, შემდეგ ახალი სესია შეამოწმეთ.
ვიღაც ითხოვს VPN კლიენტის ხელახლა დაკავშირებას და ეს მოთხოვნა სამ სხვადასხვა რამეს ნიშნავდეს შეიძლება. შეიძლება ნიშნავდეს ერთი ავტორიზებული სესიის მოწყვეტას, ყველა კლიენტისთვის იმის შეტყობინებას, რომ UDP სერვერი მიდის, ან თავად დემონის გადატვირთვას. თითოეულს განსხვავებული ზემოქმედების რადიუსი აქვს და არასწორი არჩევანი ერთი მომხმარებლისთვის შესწორებას სერვისის გათიშვად აქცევს. არეალი არის გადაწყვეტილება და ბრძანება მისგან გამომდინარეობს.
იკითხეთ, ვინ უნდა დაზარალდეს, სანამ იკითხავთ, რომელი კონტროლი გამოიყენოთ.
ერთი ინსტანცია: მართვის ინტერფეისი
კონფიგურირებულ მართვის ინტერფეისს შეუძლია დაკავშირებული ინსტანციების ჩამოთვლა და მათგან ზუსტად ერთის მოწყვეტა. ყოველი სესია ატარებს კლიენტის იდენტიფიკატორს და client-kill CID მიზნად ისახავს სწორედ ამ იდენტიფიკატორს და არა საერთო სახელს. წაიკითხეთ ცოცხალი იდენტიფიკატორი მიმდინარე სტატუსის გამოსავლიდან, რადგან ძველი ჟურნალიდან კოპირებული მნიშვნელობა ეხება სესიას, რომელიც აღარ არსებობს. ინსტანციის მოწყვეტა ამთავრებს ამ კავშირს და სხვა არაფერს.
ის არ იძლევა ახალი კავშირის გარანტიას. დაბრუნდება თუ არა კლიენტი, დამოკიდებულია მის ხელახალი ცდის პარამეტრებზე, დარჩენილ დისტანციურ ჩანაწერებზე, ავტორიზაციის მოთხოვნებზე და იმაზე, მუშაობს თუ არა ჯერ კიდევ მეთვალყურე აპლიკაცია. დაბრუნებული კლიენტი იღებს ახალ იდენტიფიკატორს და სწორედ ამიტომ იდენტიფიკატორების შედარება ძველის ახლისგან გარჩევის ერთადერთი საიმედო გზაა.
UDP გასვლის შეტყობინება არ არის ბრძანება თითოეული კლიენტისთვის
explicit-exit-notify არის კონფიგურაციის დირექტივა გასვლისა და გადატვირთვის მოვლენებზე. UDP კლიენტზე ის ეუბნება მეორე მხარეს, რომ სესია სრულდება, და რიცხვითი არგუმენტი აკონტროლებს, რამდენჯერ მეორდება შეტყობინება. როცა სერვერი UDP-ზე მუშაობს, ის გადატვირთვის კონტროლის შეტყობინებას უგზავნის დაკავშირებულ კლიენტებს, და დოკუმენტირებული მნიშვნელობები განასხვავებს იმავე სერვერზე ხელახლა დაკავშირებას სხვა დისტანციურ ჩანაწერზე გადასვლისგან. ეს ფართო აუდიტორიის მქონე სასიცოცხლო ციკლის სიგნალია.
მასში არაფერი ირჩევს თვითნებურ კლიენტს თვითნებურ მომენტში. მასზე ხელახალი დაკავშირების ღილაკად ყურება ერთდროულად აღწევს ყველა დაკავშირებულ სესიამდე.
სიგნალები მოქმედებენ პროცესზე და არა სესიაზე
SIGUSR1 სთხოვს მუშა პროცესს თავისი კავშირის გადატვირთვას კონფიგურაციის ხელახლა წაკითხვის გარეშე, და მდგრადობის პარამეტრები განსაზღვრავს, რა გადარჩება ამ გადატვირთვას. SIGHUP უფრო შორს მიდის: ის ხელახლა კითხულობს კონფიგურაციის ფაილს და ხელახლა ხსნის თავის რესურსებს. SIGTERM და SIGINT ითხოვენ მოწესრიგებულ გამორთვას. ეს პროცესის დონის ოპერაციებია: მრავალკლიენტიან სერვერზე ისინი ეხებიან ყველა სესიას, რომელსაც პროცესი ატარებს და არა ბილეთში დასახელებულს.
როცა პროცესი სერვისის მენეჯერის ქვეშ მუშაობს, გამოიყენეთ თავად მენეჯერის კონტროლი და არა პროცესების სიაში ნაპოვნ PID-ზე სიგნალის გაგზავნა. წაიკითხეთ ერთეული, რომ ნახოთ, რომელ სიგნალს აგზავნის მენეჯერი, რადგან გადატვირთვა და ხელახლა ჩატვირთვა სხვადასხვა რამეს აკეთებს იმავე დემონთან.
განსაზღვრეთ არეალი კონტროლის არჩევამდე
სამი კითხვა წყვეტს ამას. ვინ უნდა დაზარალდეს: ერთი მომხმარებელი, ერთი სერვერის ყველა კლიენტი, თუ დემონი და ყველაფერი, რასაც ის ატარებს. რა უნდა გადარჩეს: კონფიგურაცია, გვირაბის მდგომარეობა, თუ არც ერთი. ვის აქვს ამის უფლება: მართვის ინტეგრაციას, სერვისის მფლობელს, თუ ქსელის ოპერატორს, რომელიც აკონტროლებს გასვლის შეტყობინებას. უპასუხეთ ამათ და მხოლოდ ერთი კონტროლი შეესაბამება.
დაუმოწმებელი მართვის მსმენელის დამატება ხელახალი დაკავშირების ღილაკისთვის გადასცემს პორტამდე მისულ ყველას გაცილებით მეტს, ვიდრე ეს ღილაკია.
შეამოწმეთ ახალი სესია და არა გაწყვეტა
გაწყვეტის მოვლენა ამტკიცებს, რომ ძველი სესია დასრულდა. ის არაფერს ამბობს ახალ სესიაზე, რომელიც ავტორიზდება, იღებს მისამართს, აყენებს მარშრუტებს ან აღწევს იმ რესურსამდე, რაც მომხმარებელს სჭირდებოდა. შეამოწმეთ ახალი იდენტიფიკატორი, შემდეგ გვირაბის მდგომარეობა, შემდეგ ერთი რეალური რესურსი. ეს სამი ნაბიჯია განსხვავება ხელახალ დაკავშირებასა და მომუშავე კავშირს შორის.
ჩაწერეთ არეალი ცვლილების ჩანაწერში. „კლიენტი ხელახლა დავაკავშირე“ არ არის აღწერა, როცა კლიენტი იყო ერთი ორმოციდან საერთო სერვერზე.