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

რატომ არ არის სახელთა სივრცის გაზიარება გამორთვის გადამრთველი

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

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

რა ხდება სინამდვილეში, როცა კონტეინერი გადის

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

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

ააშენე მკაფიო გამავალი პოლიტიკა

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

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

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

შეამოწმე სასიცოცხლო ციკლი, და არა მხოლოდ გაწყვეტა

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

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

ჩაწერე წესები, რომ ტესტმა განახლებას გადაურჩეს

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

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

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