OpenVPN istemcisinin çalışma süresini up ve down kancalarıyla nasıl ölçersiniz
OpenVPN'de çalışma süresi sayacı yoktur. up kancasından bir epoch damgası saklayın, down sırasında silin, çıkarın ve yeniden başlatmalar ile örnekler arasında dürüst tutun.
Bir kontrol paneli bağlantının ne kadar süredir açık olduğuna dair bir sayı ister, ve OpenVPN bunu sağlamaz. İstemci tünelinin ne zaman kalktığını bilir, ama ancak biri oturum durumu kaybolmadan önce o anı kaydederse. Desteklenen yer up kancasıdır ve saklamaya değer değer biçimlendirilmiş bir dize değil, ham bir epoch saniyesidir. Sonrasındaki her şey aritmetiktir, artı sayının dürüst kalıp kalmayacağına karar veren birkaç sıralama kuralı.
Kancaların gerçekten çalıştığını doğrulayın
Etrafında bir şey tasarlamadan önce kancanın tetiklendiğini kanıtlayın. Asgari bir istemci yapılandırması script-security 2 ve açık yollar up ve down gerektirir; güvenlik satırı olmadan OpenVPN betiği çalıştırmayı reddeder ve bunu açıkça söyler. Aynı anda up-restart ve down-pre ekleyin, böylece yeniden başlatma ve sökme yolları öngörülebilir davranır.
Kancanın ilk sürümünü ortamını bir dosyaya ekleyen ve başka hiçbir şey yapmayan hale getirin. Bu size derlemenizin gerçekten dışa aktardığı değişken adlarını söyler, örneğin dev ve script_type, başka bir sürümden hatırladıklarınız yerine. Bir bağlantı ve bir bağlantı kesme çalıştırın, sonra dosyayı okuyun. Hiçbir şey görünmezse burada durun, çünkü hiç çalışmayan bir kanca üzerindeki zaman damgası tasarımı haftalarca izleme arızası gibi görünecektir.
Kancanın hangi kullanıcı olarak çalıştığını denetleyin. user ve group ayarlandığında OpenVPN betikleri çalıştırmadan önce ayrıcalıkları bırakır, bu yüzden root'un yazabildiği bir dizin kanca için kapalı olabilir. Yolu kendi kabuğunuzun değil, hizmetin bakış açısından seçin.
Tek bir epoch değeri kaydedin ve onu bilerek silin
up kancasının tek bir satıra ihtiyacı vardır, date +%s > /run/openvpn-client.started, yol her örnek için ayarlanmış olarak. Bir epoch değeri sonradan dil, saat dilimi ve biçim sorularını önler ve bir izleme aracısının kendi saatiyle karşılaştırabileceği aynı sayıdır.
Silmek yazmak kadar önemlidir. down kancası dosyayı boşaltmalı ya da kaldırmalıdır, ve down-pre bunu arayüz kapanmadan önce yapar, bu da dosyanın çoktan gitmiş bir tüneli tanımladığı pencereyi ortadan kaldırır. up-restart ardından damgayı iç yeniden başlatmada tazeler, özgün değeri yerinde bırakmak yerine. Bu çift olmadan ping zaman aşımından sonraki yeniden başlatma tünel yeniden kurulurken artmaya devam eden bir sayı üretir.
Doğru ömre sahip bir yer seçin. /run altındaki bir dosya yeniden başlatmada kaybolur, bu gerçekliğe uyar, oysa /tmp altındaki bir dosya öngörülemez biçimde temizlenebilir ve yapılandırma dizinindeki bir dosya yanıltıcı biçimde varlığını sürdürür. İzinleri yalnızca hizmet kullanıcısı ve izleme okuyucusu okuyabilecek şekilde ayarlayın.
Günlük satırlarına güvenmeden çalışma süresini hesaplayın
Saklanan saniyeyi okuyun, geçerli saniyeyi okuyun, çıkarın. Dosya yoksa ya da boşsa dürüst yanıt hiçbir tünelin etkin olmadığıdır, çalışma süresinin sıfır olduğu değil, çünkü bu iki durum farklı uyarılar üretmelidir. Ham saniyeleri izleme yükünde tutun ve günleri ve saatleri görüntüleme katmanında biçimlendirin. Dışa aktarıcı içinde yuvarlayan bir biçimlendirici, olay sırasında birinin isteyeceği kesinliği çöpe atar.
Günlük zaman damgalarını ayrıştırmak baştan çıkarıcı kısa yoldur ve üç şekilde başarısız olur: biçim hangi seçenekler ayarlıysa ona uyar, döndürme geçmişi kaldırır ve yeniden bağlanmalar tek bir sürekli tünel yerine ayrı oturumlar olarak görünür. Kanca olayı bir kez, gerçekleştiği anda kaydeder.
Denetim başka bir makinede çalıştığında süre yerine zaman damgasını gönderin, böylece okuyucu kendi saatini uygular. Küçük bir negatif sonuç o zaman bozuk kanca değil, saat kayması olarak okunur.
Yeniden bağlanmaları, yeniden başlatmaları ve birden çok örneği kapsayın
Bir makinede iki tünel iki dosya gerektirir, anahtar hizmetin zaten kullandığı örnek adıdır. Paylaşılan bir yol, en son bağlantının her profilin başlangıç zamanının üzerine yazması demektir ve belirti ikinci bir tünel başladığında geriye sıçrayan bir sayıdır.
Yeniden bağlanma davranışı kendi testini hak eder, çünkü makul görünen bir tasarımın sessizce yanlış olanı bildirdiği yer tam orasıdır. Eşi düşürerek ya da sürece sinyal göndererek yeniden başlatmayı zorlayın, sonra arayüz durumunu dosyayla karşılaştırın. Zaman damgası tünel geri döndüğü anda ileri gitmelidir.
Sunucu tarafında, durum dosyası her istemci için bir connected-since değeri taşır, bu farklı bir soruyu yanıtlar: sunucu o eşi en son ne zaman gördü. Onu değiştirme olarak değil çapraz denetim için kullanın, çünkü tanımladığı oturumla birlikte kaybolur. İki ölçüm de tünelin arkasındaki uygulamanın sağlığı hakkında hiçbir şey söylemez.
Sıralama hatalarını yakalayan üç denetimi çalıştırın
Normal bir bağlantıyı, zorunlu bir yeniden bağlanmayı ve temiz bir duruşu test edin, her birinden sonra arayüz listesini ve dosyayı birlikte okuyun. Temiz bir duruştan sonra hâlâ orada olan bir damga ya da arayüz listesinde bulunmayan bir tüneli iddia eden bir dosya doğrudan kanca sırasına işaret eder. Denetimleri hizmet kullanıcısı olarak ve hizmetin yollarıyla çalıştırın, çünkü bir root kabuğu başka bir dosya görüp kendinden emin yanlış bir yanıt verebilir. Sonra yavaş bir yoklayıcının dosyayı okumasına izin verin ve ona hiç yazmadığını doğrulayın.
Her altmış saniyede bir yoklama uyarıları kapsar ve hiçbir kanca o yoklayıcının yaşadığına güvenmemelidir. Bu iki sorumluluğu ayrı tutun ve taraflardan biri yeniden dağıtıldığında sayı güvenilir kalır.