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

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

დაამტკიცეთ, რომ კაუჭი ირთვება მანამ, სანამ მის გარშემო რამეს შეადგენთ. მინიმალურ კლიენტურ კონფიგურაციას სჭირდება script-security 2 და ცხადი ბილიკები up და down; უსაფრთხოების ხაზის გარეშე OpenVPN უარს ამბობს სკრიპტის შესრულებაზე და ამას პირდაპირ ამბობს. დაამატეთ up-restart და down-pre ერთდროულად, რათა გადატვირთვისა და დაშლის ბილიკები წინასწარმეტყველებად მოიქცეს.

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

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

ჩაწერეთ ერთი epoch მნიშვნელობა და განზრახ წაშალეთ ის

up კაუჭს სჭირდება ერთი ხაზი, date +%s > /run/openvpn-client.started, ბილიკით თითოეული ეგზემპლარისთვის მორგებული. Epoch მნიშვნელობა შემდგომში თავიდან აიცილებს ენის, დროის სარტყლისა და ფორმატის კითხვებს, და ეს არის იგივე რიცხვი, რომელიც მონიტორინგის აგენტს შეუძლია შეადაროს თავის საათს.

წაშლა ისეთივე მნიშვნელოვანია, როგორც ჩაწერა. down კაუჭმა უნდა გააცარიელოს ან წაშალოს ფაილი, და down-pre ამას აკეთებს ინტერფეისის დახურვამდე, რაც აქრობს იმ ფანჯარას, სადაც ფაილი აღწერს უკვე წასულ გვირაბს. up-restart შემდეგ აახლებს ნიშანს შიდა გადატვირთვისას, ნაცვლად იმისა, რომ საწყისი მნიშვნელობა ადგილზე დატოვოს. ამ წყვილის გარეშე გადატვირთვა ping-ის ვადის გასვლის შემდეგ იძლევა რიცხვს, რომელიც აგრძელებს ზრდას, სანამ გვირაბი ხელახლა აღდგება.

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

გამოთვალეთ მუშაობის დრო ჟურნალის ხაზების ნდობის გარეშე

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

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

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

დაფარეთ ხელახალი შეერთებები, გადატვირთვები და მრავალი ეგზემპლარი

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

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

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

გაუშვით სამი შემოწმება, რომლებიც რიგის შეცდომებს იჭერს

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

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

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