Bir müşteri sitesinde, ağ ekibi istemci ile sunucu arasına bir güvenlik duvarı ekledi. Bu, yaklaşık 40 dakikalık boşta kalma süresinden sonra boşta kalan bağlantıların kesilmesine neden oluyor. Ağ insanları, güvenlik duvarının boşta bağlantı zaman aşımı olmadığını söylüyor, ancak gerçekte boşta olan bağlantıların kopması.
Bu sorunu aşmak için, önce sunucuyu (bir Linux makinesi) TCP tutmaları açık olarak tcp_keepalive_time = 300, tcp_keepalive_intvl = 300 ve tcp_keepalive_probes = 30000 ile yapılandırdık. Bu işe yarar ve bağlantılar günlerce veya daha uzun süre kullanılabilir kalır. Bununla birlikte, sunucunun ölü istemcileri algılamasını ve bağlantıyı öldürmesini de istiyoruz, bu yüzden ayarları zaman = 300, intvl = 180, problar = 10 olarak değiştirdik. (5 dakika) ve istemci bir ACK ile yanıt verir ve bu da güvenlik duvarının bunu boş bir bağlantı olarak görmesini ve onu öldürmesini önler. İstemci ölmüş olsaydı, 10 probdan sonra sunucu bağlantıyı keserdi. Şaşırtıcı şekilde, boş ama canlı bağlantılar yaklaşık 40 dakika sonra eskisi gibi öldürülür.
İstemci tarafında çalışan Wireshark, sunucuda keepalives etkinleştirilmiş olsa bile, sunucu ve istemci arasında hiçbir kalıcılık göstermez.
Burada ne olabilir?
Sunucudaki keepalive ayarları zaman = 300, intvl = 180, problar = 10 ise, istemci canlı ama boşta kalırsa, sunucunun 300 saniyede bir keepalive probları göndereceğini ve bağlantıyı yalnız bırakacağını ve istemci öldü, bağlantıyı öldürmeden önce her 300 saniyede bir, daha sonra her 180 saniyede 9 prob daha gönderecekti. Haklı mıyım?
Bir olasılık, güvenlik duvarının bir şekilde sunucudan tutucu probları durdurması ve bunları istemciye geçirmemesi ve bir prob alması, bağlantının aktif olduğunu düşündürüyor olmasıdır. Bu bir güvenlik duvarı için ortak davranış mıdır? Ne tür bir güvenlik duvarının dahil olduğunu bilmiyoruz.
Sunucu bir Teradata düğümüdür ve bağlantı bir Teradata istemci yardımcı programından veritabanı sunucusuna, sunucu tarafında 1025 numaralı bağlantı noktasına yapılır, ancak SSH bağlantısıyla aynı sorunu gördük, bu yüzden tüm TCP bağlantılarını etkilediğini düşünüyoruz.