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

ციკლი, რომელიც პირველ შეცდომას მალავს

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

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

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

ციკლის უკან მდგარი ხელახალი ცდის მექანიზმი

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

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

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

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

ზედამხედველი წყვეტს, ხილული იქნება თუ არა ეს გასვლა. systemd ერთეული Restart=always ან Restart=on-failure-ით კლიენტს ხელახლა უშვებს, ამიტომ ციკლი გრძელდება და პარამეტრი თითქოს არაფერს აკეთებს. შეამოწმეთ პოლიტიკა სანამ კლიენტს დაადანაშაულებთ:

systemctl show -p Restart -p RestartSec openvpn-client@office
journalctl -u openvpn-client@office -n 40 --no-pager

Restart=no პროცესს გაჩერებულს ტოვებს, ხოლო Restart=on-failure მაინც ხელახლა უშვებს არანულოვანი სტატუსის შემდეგ. თუ გსურთ მარცხი ხილული იყოს, მაგრამ სერვისი ურთიერთდაუკავშირებელი ავარიებისგან აღდგეს, დააყენეთ Restart=on-failure და გამოიყენეთ StartLimitBurst და StartLimitIntervalSec გადატვირთვების ქარიშხლის შესაჩერებლად. შემდეგ წაიკითხეთ ერთეულის სტატუსი ბოლო გასვლის კოდის დასადასტურებლად: systemctl status იუწყება მას, ხოლო ჟურნალი პირველ შეცდომას გადატვირთვების ზემოთ ინახავს.

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

დაამტკიცეთ ერთჯერადი ბოლო წერტილით

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

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

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

ეტაპები, რომლებსაც ეს პარამეტრი არასდროს აღწევს

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

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

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

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