OpenVPN TLS xətasından sonra yenidən cəhd etməyə davam edir: necə dayandırmaq olar
TLS nasazlığı standart olaraq yenidən cəhd edilir, ona görə müştəri dövr edir və ilk xəta gözdən itir. tls-exit onu çıxmağa məcbur edir; nəyin onu yenidən başlatdığını yoxlayın.
Müştəri qoşulur, TLS danışıqları zamanı uğursuz olur, gözləyir və eyni serveri eyni nəticə ilə yenidən yoxlayır. Uğursuz prosesi yenidən başladan bir nəzarətçi altında bu cəhdlər sonsuz jurnal dövrünə çevrilir və ilk diaqnostik sətir gözdən itir. OpenVPN bu danışıq uğursuzluğunu növbəti cəhd yerinə görünən çıxışa çevirən bir seçim təqdim edir. Bu, təmir deyil, diaqnostika və nəzarət parametridir, ona görə onu prosesin həqiqətən dayanmasına imkan verən siyasətlə birləşdirin.
İlk xətanı gizlədən dövr
Gördüyünüz şey bir nasazlıq deyil, təkrarlanan blokdur: qoşulma cəhdi, TLS xətası, fasilə və sonra eyni ardıcıllıq. Hər təkrar orijinal sətri jurnalda daha yuxarı itələyir. Bölmə nasazlıqda yenidən başlayırsa, dövr heç kim səbəbi oxumadan saatlarla davam edə bilər. Simptom dövrdür, halbuki əsas qüsur tək bir danışıq problemidir.
İnteraktiv sessiyalar buna dözür, çünki keçici nasazlıq növbəti cəhddə keçə bilər. Avtomatlaşdırılmış qoşulmalar belə nikbinliyə imkan verə bilməz: proses dayanmalıdır ki, insan və ya monitor statusu görsün.
Nəyisə dəyişməzdən əvvəl bir tam dövrü qeyd edin. Uzaq ünvanı, xətada adı çəkilən TLS mərhələsini və prosesin ümumiyyətlə çıxıb-çıxmadığını qeyd edin.
Dövrün arxasındakı yenidən cəhd mexanizmi
Yenidən cəhd standartdır, çünki bir-biriylə əlaqəsiz bir neçə taym-aut eyni mexanizmi paylaşır. connect-retry qoşulma cəhdləri arasındakı fasiləni təyin edir, connect-retry-max hər uzaq qeydin nə qədər tez-tez yoxlanacağını məhdudlaşdıra bilər, resolv-retry isə təkrar ad axtarışlarını idarə edir. TLS danışıq uğursuzluğu bu mexanizmə nəqliyyat hadisəsi kimi çatır, ona görə müştəri məlumat vermək yerinə növbəti cəhdi planlaşdırır. Standart qeyri-sabit əlaqə üçün faydalı, sağalmayan qüsur üçün zərərlidir.
--tls-exit seçimi yalnız danışıq halını dəyişir. Təlimat onu TLS danışıq uğursuzluğunda çıxmaq kimi təsvir edir ki, bu da hər xətada çıxmaqdan daha dardır. Taym-autlar, həlledici nasazlıqları və autentifikasiya rəddləri öz davranışlarını saxlayır.
Müştərini TLS nasazlığında çıxmağa məcbur etmək
tls-exit parametrini müştərinin həqiqətən yüklədiyi profila qoyun və ya başladarkən --tls-exit verin və onu bir dəfə ön planda işə salın. Çıxış statusunu və son jurnal sətrini oxuyun, çünki nəzarətçinin təsir etdiyi şey statusdur. Danışıq uğursuzluğundan sonra sıfırdan fərqli çıxış nəzərdə tutulan nəticədir. Proses bitmək yerinə yenidən cəhd etməyə davam edirsə, seçim müştərinin həqiqətən yüklədiyi profilda deyil.
Nəzarətçi həmin çıxışın görünüb-görünməyəcəyini həll edir. Restart=always və ya Restart=on-failure olan systemd bölməsi müştərini yenidən başladır, ona görə dövr davam edir və seçim heç nə etmirmiş kimi görünür. Müştərini günahlandırmazdan əvvəl siyasəti yoxlayın:
systemctl show -p Restart -p RestartSec openvpn-client@office
journalctl -u openvpn-client@office -n 40 --no-pager
Restart=no prosesin dayanmasına imkan verir, Restart=on-failure isə sıfırdan fərqli statusdan sonra yenə başladır. Nasazlığın görünməsini, lakin xidmətin əlaqəsiz qəzalardan bərpa olunmasını istəyirsinizsə, Restart=on-failure təyin edin və yenidən başlama fırtınasını dayandırmaq üçün StartLimitBurst və StartLimitIntervalSec istifadə edin. Sonra son çıxış kodunu təsdiqləmək üçün bölmənin statusunu oxuyun: systemctl status onu bildirir və jurnal ilk xətanı yenidən başlamaların üstündə saxlayır.
Qərarı bölməyə və ya profil qeydlərinə yazın. TLS nasazlığında çıxan profil səbəb qeyd olunmayıbsa, sonrakı adam üçün qəza kimi görünür. Hansı nasazlıqların prosesi dayandırmalı, hansıların yenidən cəhd edilməli olduğunu göstərin.
Bir dəfəlik son nöqtə ilə sübut etmək
Davranışı ona güvənməzdən əvvəl görmək üçün profili kopyalayın və kopyanı TCP qoşulmasını qəbul edən, lakin heç vaxt OpenVPN danışmayan son nöqtəyə yönəldin. Cavab verib sonra susan bir dinləyici kifayətdir. tls-exit ilə müştəri əl sıxma uğursuz olduqda bitməlidir; onsuz eyni profil dövr etməyə davam etməlidir. Kopyadan istifadə edin, heç vaxt işlək profildən yox.
İki işə salmanı çıxış statusuna və ilk xəta sətrinə görə müqayisə edin, hər birinin nə qədər davam etdiyinə görə yox. Status seçimin işə düşüb-düşmədiyini, ilk sətir isə hansı mərhələnin uğursuz olduğunu deyir.
Bitirdikdən sonra test profilini silin. Qəsdən səhv son nöqtə olan kopya, sonralar qovluqdakı hər profili başladan hər kəs üçün tələdir.
Bu seçimin heç vaxt çatmadığı mərhələlər
Autentifikasiya rəddi daha sonrakı mərhələdir. Server hesabı qiymətləndirib rədd edirsə, TLS artıq danışılıb, ona görə tls-exit işə düşmür. Autentifikasiya üçün yenidən cəhd parametrləri növbəti baxılacaq yerdir və serverin səbəbi müştərinin son sətrindən daha vacibdir. Səhv parol və çatışmayan sertifikat müştəri tərəfində oxşar mesajlar yarada bilər.
Çatışmayan marşrut, səhv həlledici və ya əlçatmaz şlüz da seçimin xaricindədir, çünki onlar danışıq uğursuzluğu deyil. Səssiz paket itkisi ən az aydın haldır: mübadilənin nə qədər irəlilədiyindən asılı olaraq müştəri danışıq uğursuzluğu bildirə və ya sadəcə taym-auta düşə bilər.
Fərqi qeydlərinizdə saxlayın. Parametr təmir üçün deyil, diaqnostika və nəzarət üçündür, ona görə şifr uyğunsuzluğunu, sertifikat problemini və ya səhv portu düzəltmir. Əvvəlcə uğursuz danışığın səbəbini təmir edin, sonra dərhal çıxmağın hələ də yerləşdirməyə uyğun olub-olmadığını qərarlaşdırın.