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

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

რას მოითხოვს სინამდვილეში local პარამეტრი

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

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

დაველოდოთ მისამართს თუ ხელახლა ვცადოთ მიბმა

ლოდინი ნიშნავს ExecStartPre-ს, რომელიც იკითხავს, სანამ მისამართი გამოჩნდება, შეზღუდული რაოდენობის ცდებით და არანულოვანი გასვლით, როცა დრო ამოიწურება. ხელახლა ცდა ნიშნავს მთავარ პროცესს მივცეთ ჩავარდნის უფლება და ვთხოვოთ სერვისების მენეჯერს ხელახლა გაუშვას ის, მაგალითად Restart=on-failure RestartSec=5-თან ერთად. პირველი აკლებულ წინაპირობას ჩავარდნილ ერთეულად აცნობს, ხოლო მეორე — გადატვირთვების სერიად, რომელიც საბოლოოდ ჩერდება; ეს ჟურნალში უფრო ხმაურიანია, მაგრამ უძლებს მისამართს, რომელიც გვიან მოდის თქვენთვის წარმოუდგენელი მიზეზებით.

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

რატომ არ არის საკმარისი network-online.target

network-online.target გვპირდება იმას, რასაც აქტიური ქსელური იმპლემენტაცია online-ში გულისხმობს, და მეტს არაფერს. systemd-networkd-ის შემთხვევაში systemd-networkd-wait-online წყვეტს, როდის მიიღწევა ეს სამიზნე, და მისი ნაგულისხმევი წარმოდგენა online-ზე შეიძლება დაკმაყოფილდეს თქვენი კონკრეტული მისამართის გაჩენამდე. NetworkManager-ის ქვეშ wait-online სერვისი საკუთარ წესებს იყენებს. სამიზნის შემდეგ დალაგება ჯანსაღი საფუძველია და არა გარანტია, რომ ერთი მისამართი, DNS პასუხი ან დისტანციური მეწყვილე მზადაა.

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

შეამოწმეთ მიბმა ცივი ჩატვირთვის შემდეგ

გადაამოწმეთ ნამდვილი ცივი ჩატვირთვით და არა სერვისის გადატვირთვით, რადგან გადატვირთვა მემკვიდრეობით იღებს მისამართს, რომელიც ჩატვირთვის მიმდევრობას უნდა შეექმნა. ჩატვირთვის შემდეგ ss -lntp ან ss -lunp გვიჩვენებს ლოკალურ მისამართს, რომელზეც თითოეული მსმენელი რეალურად მიბმულა, ხოლო journalctl -b -u openvpn-server@server გვიჩვენებს, ჩავარდა თუ არა პირველი ცდა. შეადარეთ მიბმული მისამართი პროფილში არსებულს, შემდეგ გაიმეორეთ შედარება ქსელის ხელახალი დაკავშირების შემდეგ.

თუ პროფილს არასდროს დასჭირდა ფიქსირებული მისამართი, local-ის მოცილება ლეგიტიმური გამარტივებაა, მაგრამ აქციეთ ის უსაფრთხოების გადაწყვეტილებად და არა პრობლემების მოგვარების ჩვევად.

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

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