Linux'ta VPN ve proxy hizmetlerini sırayla kapatma
Yol hâlâ varken tüketiciyi, ardından proxy'yi, en son da tüneli sahibi üzerinden durdurun. ExecStop ve TimeoutStopSec'i bilinçli kullanın, geniş çaplı bir kill değil.
Proxy çalışırken kapanmanın takılması, ekranda görünen son şey VPN olsa bile nadiren bir VPN hatasıdır. Proxy'nin arkasındaki uygulamalar hâlâ kaybolmak üzere olan bir yolu bekler ve tünelin sahibi olan unit henüz onu kapatması için çağrılmamıştır. Yavaş bir hizmet gibi görünen şey genellikle bir sıralama sorunudur. Sıralama, bunların çoğunu herhangi bir timeout değişikliğinden daha fazla çözer.
Ters sırayla dışa doğru ilerleyin: önce tüketiciler, sonra proxy, sonra tünel — her biri onu başlatan bileşen tarafından durdurulur.
Bir şeyi durdurmadan önce unit'leri listeleyin
Normal bir çalışmada yer alan uygulama unit'ini, proxy unit'ini ve VPN sahibini yazın. Kendi kapanışı olan herhangi bir çözümleyici veya yardımcı bileşen ekleyin, çünkü gece ikide unutulanlar tam da bunlardır. Bu liste olmadan yazdığınız ilk durdurma komutu rastgele bir kurban seçer.
İsimler zayıf kanıttır. Bir kullanıcı proxy'si, bir sistem proxy'si ve başka bir hesabın tüneli aynı adı paylaşabilir ama tamamen ilgisiz yaşam döngülerine sahip olabilir.
Önce işi bitirin, sonra tüketiciyi durdurun
Planlı bir durdurma uygulamayla başlar: isteklerini tamamlamasına veya iptal etmesine izin verin, ardından proxy'yi hizmet unit'i üzerinden durdurun. Uygulamanın tünel gittikten sonra çalışmaya devam etmesi gerekiyorsa, bunu kaybolmak üzere olan bir rotaya bağlı bırakmak yerine bilinçli olarak düzenleyin.
Durdurma sırasında uçuşta olan istekler kayda aittir, çünkü bir sonraki başlatmadaki yeniden deneme fırtınası tam olarak oradan gelir.
ExecStop ve ExecStopPost farklı araçlardır
ExecStop= — bu, eşzamanlı durdurma işlemidir; ExecStopPost= — bu, başarısız bir başlatmadan sonra bile çalışan temizliktir. Bir sürece yalnızca sinyal gönderip dönen bir durdurma komutu, tüketici hâlâ veri boşaltırken systemd'nin ilerlemesine izin verir. Koşulsuz gerçekleşmesi gereken her şey son varyanta, durdurmayı engellemesi gereken her şey eşzamanlı olana aittir. Etkin unit'i ve drop-in dosyalarını, paket dosyasını yerinde düzenlemek yerine inceleyin.
Bir bağımlılık grafiği durdurma işlerini sıralar. Eşzamansız bir betiği eşzamanlı hale getirmez ve uzak bir uygulamayı verilerini kaydetmeye zorlamaz.
Durdurmayı sınırlayın ve bu sınırın maliyetini bilin
TimeoutStopSec= hem durdurma komutunu hem de hizmetin kendi sonlanmasını sınırlar ve süre dolduğunda systemd zorla öldürmeye geçer. Değeri uygulamanın gerçek boşaltma davranışına göre seçin ve sınır devreye girdiğinde nelerin kaybolabileceğini yazın. Makine daha hızlı kapanmalı diye seçilen bir sayı, kılık değiştirmiş bir veri kaybı ayarıdır.
Bir durdurma hâlâ yavaşsa unit'i, alt süreçlerini, günlük aralığını ve timeout sonucunu kaydedin. Tüm timeout'ları kısaltmak veya geniş çaplı bir öldürmeye uzanmak, temiz kapanmaların bir sonraki açılışta bozuk duruma dönüşme biçimidir.
Sahibi üzerinden bağlantıyı kesin, sonra üç durumu test edin
Tüketiciler indikten sonra tünelin sahibi olan yöneticiden bağlantıyı kesmesini isteyin: systemd örneği, etkin NetworkManager bağlantısı veya satıcı hizmeti. İlgisiz bir OpenVPN sürecini öldürmek, rotayı sağlayan oturumu mutlaka kaldırmaz ve yeniden başlatma politikası olan bir proxy, siz yolu sökerken bir isteği yeniden oluşturabilir. Bu politikayı başlamadan önce planlı durdurmayla koordine edin.
Normal bir durdurmayı, etkin istekli bir durdurmayı ve tünelin önce başarısız olduğu bir durdurmayı test edin. Son teslim tarihi olan tekrarlanabilir bir sıra, bir kez çalışan hızlı bir kapanıştan daha iyidir.