İstemci bağlanır, TLS anlaşması sırasında başarısız olur, bekler ve aynı sunucuyu aynı sonuçla yeniden dener. Başarısız bir süreci yeniden başlatan bir gözcü altında bu denemeler günlükte sonsuz bir döngüye dönüşür ve ilk tanılama satırı erişilemez bir yere kayar. OpenVPN, bu anlaşma başarısızlığını bir başka denemek yerine görünür bir çıkışa dönüştüren bir seçenek sunar. Bu bir tanılama ve gözetim ayarıdır, onarım değildir, bu yüzden onu sürecin gerçekten durmasına izin veren bir politikayla eşleştirin.

İlk hatayı saklayan döngü

Gördüğünüz şey tek bir başarısızlık değil, yinelenen bir bloktur: bir bağlantı denemesi, bir TLS hatası, bir duraklama ve ardından aynı dizi. Her yineleme özgün satırı günlükte daha yukarı iter. Birim hatada yeniden başlıyorsa, döngü kimse nedeni okumadan saatlerce sürebilir. Belirti döngüdür, oysa altta yatan kusur tek bir anlaşma sorunudur.

Etkileşimli oturumlar bunu tolere eder çünkü geçici bir hata sonraki denemede geçebilir. Otomatik bağlantılar aynı iyimserliği karşılayamaz: süreç durmalı ki bir insan ya da izleyici durumu görsün.

Herhangi bir şeyi değiştirmeden önce bir tam döngü yakalayın. Uzak adresi, hatada adı geçen TLS aşamasını ve sürecin hiç çıkıp çıkmadığını not edin.

Döngünün arkasındaki yeniden deneme mekanizması

Yeniden deneme varsayılandır çünkü birbiriyle ilgisiz birkaç zaman aşımı aynı mekanizmayı paylaşır. connect-retry bağlantı denemeleri arasındaki boşluğu belirler, connect-retry-max her uzak girdinin kaç kez deneneceğini sınırlayabilir, resolv-retry ise yinelenen ad aramalarını yönetir. TLS anlaşma hatası bu mekanizmaya bir taşıma olayı olarak ulaşır, bu yüzden istemci rapor vermek yerine bir deneme daha planlar. Varsayılan, dengesiz bir bağlantıda işe yarar ve iyileşemeyen bir kusurda zarar verir.

--tls-exit seçeneği yalnızca anlaşma durumunu değiştirir. Kılavuz onu TLS anlaşması başarısız olduğunda çıkmak olarak tanımlar, bu da her hatada çıkmaktan daha dardır. Zaman aşımları, çözümleyici hataları ve kimlik doğrulama redleri kendi davranışlarını korur.

TLS hatasında istemciyi çıkarmak

tls-exit seçeneğini istemcinin gerçekten yüklediği profile koyun ya da başlatırken --tls-exit verin ve bir kez ön planda çalıştırın. Çıkış durumunu ve günlüğün son satırını okuyun, çünkü gözcünün tepki verdiği şey durumdur. Anlaşma hatasından sonra sıfırdan farklı bir çıkış amaçlanan sonuçtur. Süreç bitmek yerine denemeye devam ediyorsa, seçenek istemcinin gerçekten yüklediği profilde değildir.

Bu çıkışın görünür olup olmayacağına gözcü karar verir. Restart=always veya Restart=on-failure içeren bir systemd birimi istemciyi yeniden başlatır, bu yüzden döngü sürer ve seçenek hiçbir şey yapmıyormuş gibi görünür. İstemciyi suçlamadan önce politikayı kontrol edin:

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

Restart=no sürecin durmasına izin verir, Restart=on-failure ise sıfırdan farklı bir durumdan sonra bile yeniden başlatır. Hatayı görünür ama hizmetin ilgisiz çökmelerden kurtulmasını istiyorsanız Restart=on-failure ayarlayın ve yeniden başlatma fırtınasını durdurmak için StartLimitBurst ile StartLimitIntervalSec kullanın. Ardından son çıkış kodunu doğrulamak için birimin durumunu okuyun: systemctl status onu bildirir ve günlük ilk hatayı yeniden başlatmaların üstünde tutar.

Kararı birime ya da profil notlarına yazın. TLS hatasında çıkan bir profil, neden kaydedilmediği sürece bir sonraki kişiye kaza gibi görünür. Hangi hataların süreci durdurması, hangilerinin yeniden denenmesi gerektiğini belirtin.

Tek kullanımlık bir uç noktayla kanıtlayın

Davranışı ona güvenmeden önce görmek için profili kopyalayın ve kopyayı TCP bağlantısını kabul eden ama hiçbir zaman OpenVPN konuşmayan bir uç noktaya yönlendirin. Yanıt verip sonra susan bir dinleyici yeterlidir. tls-exit ile istemci el sıkışma başarısız olduğunda sona ermelidir; o olmadan aynı profil dönmeye devam etmelidir. Kopyayı kullanın, asla çalışan profili değil.

İki çalıştırmayı çıkış durumuna ve ilk hata satırına göre karşılaştırın, her birinin ne kadar sürdüğüne göre değil. Durum seçeneğin tetiklenip tetiklenmediğini, ilk satır ise hangi aşamanın başarısız olduğunu söyler.

Bitirdiğinizde test profilini kaldırın. Kasıtlı olarak yanlış uç nokta içeren bir kopya, daha sonra dizindeki her profili başlatan herkes için bir tuzaktır.

Bu seçeneğin asla ulaşmadığı aşamalar

Kimlik doğrulama reddi daha sonraki bir aşamadır. Sunucu hesabı değerlendirip reddederse TLS zaten anlaşılmıştır, bu yüzden tls-exit tetiklenmez. Kimlik doğrulama yeniden deneme ayarları bakılacak sonraki yerdir ve sunucunun nedeni istemcinin son satırından daha önemlidir. Yanlış parola ve eksik sertifika istemci tarafında benzer mesajlar üretebilir.

Eksik rota, yanlış çözümleyici veya ulaşılamayan ağ geçidi de seçeneğin dışındadır, çünkü bunlar anlaşma hataları değildir. Sessiz paket kaybı en az belirgin durumdur: alışverişin ne kadar ilerlediğine bağlı olarak istemci bir anlaşma hatası bildirebilir ya da yalnızca zaman aşımına uğrayabilir.

Bu ayrımı notlarınızda tutun. Ayar onarımdan çok tanılama ve gözetim içindir, bu yüzden şifre uyuşmazlığını, sertifika sorununu ya da yanlış bağlantı noktasını düzeltmez. Önce başarısız anlaşmanın nedenini onarın, sonra hemen çıkışın dağıtıma hâlâ uygun olup olmadığına karar verin.

İlgili makaleler