Keepalive yeniden bağlanma değildir: yaşadığınız arızaya göre seçin
Tek bir paket eşlemeyi canlı tutar; yeniden bağlanma ilişkiyi yeniden kurar. Mekanizmayı arızayla eşleştirin, sonra gerçek bir istekle doğrulayın.
Keepalive ve yeniden bağlanma aynı solukta yapılandırılır ama farklı sorunları çözer, bu yüzden birini ayarlamak diğerini nadiren düzeltir. Keepalive, durum kaydını canlı tutmak veya eşin yanıt vermeyi bıraktığını fark etmek için küçük trafik gönderir. Yeniden bağlanma bozulanı yıkar ve anahtarlar, adresler ve rotalar dahil ilişkiyi yeniden kurar. Arızaya uyan mekanizmayı seçin, düğmesini zaten bildiğinizi değil. Bunu iki soru belirler: yol ölü mü, yoksa eşler arasında bir şey onu mu unutuyor?
Eşleme sorun olduğunda
Yalnızca dakikalarca sessizlikten sonra ölen tünel genellikle eşi değil çeviri kaydını kaybeder. WireGuard'ın PersistentKeepalive NAT ve güvenlik duvarı durumu için vardır ve projenin kendi notları da onu tam olarak böyle tanımlar, sağlık kontrolü olarak değil. Birkaç on saniyelik aralık kaydı sıcak tutar, oysa her saniye bir paket pil kararıdır, güvenilirlik kararı değil. OpenVPN aynı yere ping ve ping-restart üzerinden ulaşır; bunlar önce sessizliği fark eder, sonra ona göre davranır.
Bu ayarlar protokoller arasında da değiştirilemez. IKEv2'nin ölü eş ilkesi, OpenVPN'in ping zamanlayıcısı ve WireGuard'ın keepalive'ı aynı soruya üç farklı sözdizimi ve üç farklı varsayılan değerle yanıt verir, bu yüzden aralarında sayı kopyalamak ayar kılığına girmiş tahmindir.
İlişki gittiğinde
Eş adres değiştirirse, kimlik bilgisi sona ererse veya uzak uç yeniden başlarsa, küçük paketler onarım değildir. Yeniden bağlanma durumu yeniden kurmalıdır : adres almak, rotaları yeniden kurmak, anahtarları yeniden müzakere etmek ve bazı kurulumlarda kullanıcıyı yeniden kimlik doğrulamak.
Denetimsiz yeniden bağlanan istemciler bir sertifika veya saklanan bir sır tutar. İnsana soracak bir istemci tam da kimse yokken başarısız olur ve yeniden bağlanmanın önemli olduğu senaryo budur. Bu, aylar önce alınmış bir tasarım kararıdır, kesinti sırasında değiştirebileceğiniz bir ayar değil.
İkisinin de kanıtlamadığı şey
Tünel yeniden bağlanmış, anahtarları ve rotaları olabilir ama arkasındaki hizmet kapalı olabilir ve keepalive, sunucusu saatler önce gitmiş bir oturum için eşlemeyi açık tutabilir. Gerçekten önemsediğiniz şey kullanılamaz durumdayken iki mekanizma da başarı bildirebilir.
Bu yüzden test gerçek bir istekle biter. Önemsediğiniz aralıktan sonra tünelden bir şey gönderin, sonra tasarladığınız arızayı ayrı ayrı tetikleyin: eşleme durumunda boşta kalma süresi, yeniden bağlanma durumunda yeniden başlatma veya adres değişikliği.
Doğrudan trafiği engellemek ayrı bir karardır
Yeniden bağlanma döngüsü tamamen sağlıklı olabilirken bir uygulama sessizce olağan yolu kullanıyor olabilir ve bu arıza değil sızıntıdır. Gereksinim tünelin dışına hiçbir şeyin çıkmamasıysa bunu istemci yapılandırmasında açıkça söyleyin ve tüneli indirip hâlâ neyin bağlandığına bakarak kanıtlayın. İki mekanizmanın hiçbiri bu davranışı içermez ve hiçbir yeniden deneme disiplini bunu kurmaz.
Hangi mekanizmanın çalıştığını ve ardından yeni bir isteğin başarılı olup olmadığını kaydedin. Sonraki mühendisin ihtiyaç duyduğu bu iki gerçektir ve ikisi de durum simgesinde görünmez. İstemcinin yeniden bağlandığını söyleyen bir günlük satırı, çalışan bir istekle aynı şey değildir.
Politikayı yazın, yalnızca sayıyı değil
Çifti tek bir cümleye koyun: boşta kalma aralığı, canlılık eşiği, yeniden yapılanmayı ne tetikler , ve istemci yeniden denerken ne yapar. O cümle olmadan her gelecek olay, keepalive çok kısa mı yoksa yeniden bağlanma çok yavaş mı tartışmasını yeniden açar.
WireGuard'ın sınırlamalarla ilgili notları keepalive'ın ara kutular için bir dolambaç olduğunu, genel bir canlılık tasarımı olmadığını hatırlatır. Çözemeyeceği bir soruna yanıt olarak sıklığı artırmadan önce o sınırlamayı okuyun.