პირველი სესია იმარჯვებს: OpenVPN-ის შესვლების შეზღუდვა გამოძევებამდე
გვიანი შესვლის უარყოფა იგივე არ არის, რაც ძველის ჩანაცვლება. გადაწყვეტილება უნდა მიღებულ იქნას იმავე სახელის გამოძევებამდე, და სლოტის შემოწმება უნდა იყოს ატომური.
პოლიტიკა, რომელიც თითო ანგარიშზე ერთ სესიას უშვებს, მოგვარებულად გამოიყურება მანამ, სანამ მეორე შესვლა მოვა. ორი შედეგი შესაძლებელია: ახალმოსული ცვლის მიმდინარე სესიას, ან მიმდინარე სესია ინარჩუნებს სლოტს და ახალმოსულს უარყოფენ. მხოლოდ მეორეა პირველი სესია იმარჯვებს პოლიტიკა. კლიენტის ის პარამეტრი, რომელსაც უმეტესობა მიმართავს, თანადროულობას რთავს და ამიტომ ამ შედეგს არ იძლევა.
ერთი პარამეტრის მიღმა ორი ხელშეკრულება იმალება
თანადროულობის გამორთვისას, მეორე კავშირს იმავე სერტიფიკატის სახელით შეუძლია უკვე მოქმედი სესია განდევნოს. თანადროულობის ჩართვა რამდენიმე სესიას ერთდროულად უშვებს, რაც შეზღუდვის საპირისპიროა. არც ერთი მდგომარეობა არ არის უარყოფის პოლიტიკა, ამიტომ გადაწყვეტილება სულ სხვაგან უნდა მივიღოთ.
ჩაწერეთ ხელშეკრულება სანამ რამეს დანერგავთ: ვის უარყოფენ, რა მტკიცებულება იდენტიფიცირებს მიმდინარე სესიას და რა ხდება, როცა სესია ხვდება სუფთა გაწყვეტის გარეშე. პოლიტიკა, რომელიც არავის ასე ჩამოუყალიბებია, მოგვიანებით ვერ შემოწმდება.
გამოძევება თქვენს დაკავშირების კაუჭამდე ხდება
2.6 სერვერის კოდის გზაზე, ახალი კლიენტის ადრეული მომზადება შლის იმავე სახელის არსებულ ეგზემპლარებს, როცა თანადროულობა გამორთულია. ეს წაშლა ხდება მანამ, სანამ დაკავშირების დამმუშავებლების ჯაჭვი ამუშავდება. ამიტომ სკრიპტი, რომელიც დუბლიკატს ამჩნევს და წარუმატებლობას აბრუნებს, უარყოფს ახალმოსულს მას შემდეგ, რაც მიმდინარე სესია უკვე გაგდებულია - ზუსტად ის შედეგი, რომლის თავიდან აცილებაც პოლიტიკას სურდა. Upstream იმპლემენტაციაში callback-ების თანმიმდევრობა ერთადერთი სანდო პასუხია თქვენი build-ისთვის.
| Stage | Who can still refuse | Effect on the incumbent |
|---|---|---|
| Certificate check | Server trust configuration | None |
| Authentication decision | The authentication controller | None, because establishment has not run |
| Connect handler | A profile script | Already evicted in the same-name case |
| Post-establishment | Status tooling, monitoring | Both sessions already exist or one is gone |
სტატუსის ფაილის გამოკითხვაც არ არის კარიბჭე. ერთდროულად მოსული ორი მცდელობა შეიძლება ორივემ დაინახოს ცარიელი სლოტი მანამ, სანამ ერთი დაადასტურებს, და ორივე განაგრძობს.
გადაიტანეთ გადაწყვეტილება აუთენტიფიკაციაში
მართვის ინტერფეისს შეუძლია აიღოს აუთენტიფიკაციის გადაწყვეტილება სერტიფიკატის შემოწმების შემდეგ. ამ განლაგებაში კონტროლერი დამკვირვებელი არ არის: ის იღებს ყოველ დაკავშირებულ კლიენტის ეგზემპლარს და პასუხობს, შეიძლება თუ არა ამ ეგზემპლარს გაგრძელება. ვინაიდან პასუხი დამყარებამდე მოდის, უარყოფა მიმდინარე სესიას ხელუხლებელს ტოვებს. იგივე არხი აცნობებს გაწყვეტებს და ასე იგებს კონტროლერი, რომ სლოტი კანონიერად გათავისუფლდა.
ყოველმა ახალმა ეგზემპლარმა უნდა გაიაროს ეს კარიბჭე, მათ შორის ხელახალი დაკავშირებები და ნებისმიერი გზა, რომელიც მოთხოვნის გარეშე ხელახლა აუთენტიფიცირდება. კარიბჭე, რომელსაც ზოგიერთი ეგზემპლარი ვერასოდეს აღწევს, არაფერს იცავს, და ეს გამოტოვება უხილავი რჩება მანამ, სანამ ვინმე გვერდის ავლას სცდის.
ტოკენებს შეუძლიათ კარიბჭის გვერდით გავლა
მას შემდეგ, რაც ტოკენი გაიცემა, სერვერს შეუძლია შიდად გადაამოწმოს იგი და გამოტოვოს გარე აუთენტიფიკაცია ამ კავშირისთვის. მართვის გამოძახება არასოდეს ხდება, ამიტომ მხოლოდ იქ დანერგილი სლოტის შემოწმება ვერასოდეს ხედავს ახალ ეგზემპლარს. ეს ქცევა მოხერხებაა მომხმარებლისთვის და ხვრელი თანადროულობის პოლიტიკისთვის. აიძულეთ ტოკენით აუთენტიფიცირებული კავშირები გაიარონ ეკვივალენტური ავტორიტეტული შემოწმება, ან გამორთეთ ტოკენის გზა, როცა პოლიტიკა ყოველ კავშირზე გადაწყვეტილებას მოითხოვს.
ნუ ანაზღაურებთ ამას ყოველი ტოკენის უპირობო მიღებით. ვადაგასული ან არასწორი ტოკენი მაინც უნდა ჩავარდეს, და ის უნდა ჩავარდეს იმავე გადაწყვეტილების წერტილში, როგორც ყველაფერი დანარჩენი.
მიაბით ჯავშანი ეგზემპლარს, არა მისამართს
მისამართი სუსტი იდენტობაა: ხელახალი დაკავშირება იმავე ლეპტოპიდან შეიძლება სხვა მისამართიდან მოვიდეს, და კოპირებული სერტიფიკატი შეიძლება იმავე მისამართიდან მოვიდეს. მიაბით ჯავშანი იმ კლიენტის ეგზემპლარს, რომელსაც სერვერი ანიჭებს, რათა უკვე დაშვებული ეგზემპლარის ხელახალი აუთენტიფიკაცია მფლობელად იქნას აღიარებული. ახალმა ეგზემპლარის იდენტიფიკატორმა საკუთარი სლოტი პირველი იმარჯვებს გადაწყვეტილებით უნდა მოიპოვოს, მაშინაც კი, როცა იმავე ტოკენს წარადგენს.
გაათავისუფლეთ მხოლოდ წარუმატებელი მცდელობის ჯავშანი. ძველი მცდელობიდან დაგვიანებული გაწყვეტის მოვლენა არ უნდა წაშალოს უფრო ახალი მფლობელის სლოტი, ამიტომ გათავისუფლება ასახელებს ეგზემპლარს და არა ანგარიშს. კონტროლერის გადატვირთვის შემდეგ, სანამ ვინმეს დაუშვებთ, შეათანხმეთ ცოცხალი სესიები, და გამოიყენეთ იგივე წესი ყოველ კარიბჭეზე, რომელიც ანგარიშს ემსახურება.
ცალკე გადაწყვიტეთ, როგორ აღდგება ნამდვილად მოძველებული სლოტი. ადმინისტრატორს სჭირდება დოკუმენტირებული გზა მის გასასუფთავებლად, და ეს გზა არ უნდა იყოს ხელმისაწვდომი მომხმარებლისთვის, რომელიც უბრალოდ აჭერს ხელახლა დაკავშირებას.
შეამოწმეთ მნიშვნელოვანი წყვილები: ორი თითქმის ერთდროული შესვლა, ხელახალი დაკავშირება სუფთა გაწყვეტის შემდეგ, მიმდინარე სესიის ხელახალი აუთენტიფიკაცია, უარყოფილი ახალმოსული და კონტროლერის გადატვირთვა. ყოველ შემთხვევაში მიმდინარე სესია უნდა დარჩეს გამოსაყენებელი, ხოლო ახალმოსული უნდა იქნას უარყოფილი სხვა ანგარიშებისთვის ზიანის მიყენების გარეშე.