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

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

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

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

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

მიუთითეთ ის loopback-ზე და არა გვირაბზე

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

lo-ზე მისამართი ფილტრი არ არის. სერვისმა მაინც უნდა მოუსმინოს მას, და ჰოსტის ფაირვოლი მაინც აფასებს რეალურ შემომავალ გზას, რომელიც გვირაბის ინტერფეისზე მოდის. ვინც ფიქრობს, რომ loopback მხოლოდ ლოკალურს ნიშნავს, საბოლოოდ ან ლეგიტიმურ კლიენტებს ბლოკავს, ან იმას ამჟღავნებს, რაც არ განუზრახავს.

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

ip address show dev lo | grep 10.250.0.1
ip address add 10.250.0.1/32 dev lo

უბიძგეთ ერთი მარშრუტი და იგულისხმეთ ერთი დანიშნულება

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

შეამოწმეთ, რა დააინსტალირა კლიენტმა, სანამ სერვისს დაადანაშაულებთ.

ip route get 10.250.0.1

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

რა არ შეუძლია საერთო მისამართს

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

ის არ გადაიტანს ცოცხალ TCP სესიას, რადგან ახალი კავშირი მთავრდება სხვა ჰოსტზე, რომელმაც ძველზე არაფერი იცის.

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

შეინახეთ სერვისის იდენტობა სახელთან ერთად

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

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

თუ მოთხოვნა კვანძობრივი ლოკალური სერვისისთვის სტაბილური დანიშნულებაა, შაბლონი შეესაბამება და თითქმის არაფერი ღირს.

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

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

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