Windows 7 / PuTTY neden çok kısa kesintilerde bile TCP bağlantılarını kesiyor?


15

Sabit bir WiFi üzerinde piggyback olan küçük bir yerel ağım var ve Linode, Hetzner ve diğer sunucularıma bağlantılar kurmak için Windows 7 Professional'da sshOS X -oServerAliveInterval=240ve PuTTY 0.62 ile kullanıyorum .

PuTTY ile ConnectionSending of null packets to keep session active240'ı seçiyorum Enable TCP keepalives (SO_KEEPALIVE option). Varsayılan olarak kapalıdır.

İnternetim geçici olarak yaklaşık bir dakika kapalı kaldığında (esir portalda yeniden kimlik doğrulaması yapmak zorunda), PuTTY neredeyse her zaman sahip olduğum tüm açık ssh oturumlarını ve özellikle herhangi bir faaliyetin olduğu, ancak OS X'te OpenSSH'yi kaybeder ssh içinde bir şey yazmaya çalışsam ve bağlantım tekrar aktif oluncaya kadar 60 saniye boyunca hiçbir yanıt görmeme rağmen, internetim yaklaşık bir veya iki dakika içinde geri döndüğü sürece hiçbir oturumu kaybetmez. (Bu yüzden NAT durumlarının her zaman korunduğundan eminim.)

Windows / PuTTY'nin iyi bağlantıları önleyici olarak atmasını engelleyebilir miyim?

Bana öyle geliyor ki, SO_KEEPALIVE veya Windows'ta varsayılan olarak bazıları açıktır ve eski bağlantıları algılamak için zaman aşımı çok küçüktür. Ben benzer kesintisi yüz saniye sadece birkaç ve değerinin altında bulunduğu sürece OS X sürece bu kısa geçici kesintileri bağışıklı nasıl, birkaç saniye daha başka birşeye arttırmak istiyoruz -oServerAliveInterval(kez ServerAliveCountMax).


Aynı sorunu yaşadığımı söylemek ve yazmak için yazıyorum ... bu soruyu izliyor olacak. Windows'ta ağ sürücüsü uygulamasıyla ilgili bir şey olduğunu varsayıyorum.
allquixotic

10 yıldır macun kullanıyorum ve başından beri buna bir çözüm arıyordum. Bu acı noktası sadece hafifletilebilir, çözülemez. Putty% 100.00 güvenilir bir internet bağlantısı ve% 0.00 bırakılan paketler gerektirir. Her yerde her zaman sivilceli internetin yeni dünyasında, macun yıllar geçtikçe gittikçe daha az kullanışlı hale geliyor, çünkü işiniz kesilmeden ve macunu yeniden başlatmak zorunda kalmadan önce sadece birkaç dakika çalışabilir. , kaldığınız yerden devam edin, bozuk dosyaları bozun ve bir sonraki kesintiden önce işinizi yapmaya çalışın.
Eric Leschinski

@EricLeschinski, yanılıyorsun. Bu soruda özetlenen bu hafifletme gayet iyi çalışıyor, IPv4 bağlantılarımın çok, çok uzun süredir kesilmediğini düşünüyorum. (Tüm IPv4 adresinin değiştiği veya uyku vb mosh.
Yaptığım

Yanıtlar:


8

http://www.chiark.greenend.org.uk/~sgtatham/putty/faq.html#faq-timeout


TcpMaxDataRetransmissions(REG_DWORD) bunu doğrudan etkiliyor gibi görünüyor . Değer eklenebilir HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parametersile regedit.exe(önce onu değiştirmek için eklemek zorunda anahtarı, varsayılan olarak eksik). Ayarlanmadığında - 5. ekleyin ve en az f(15) 'e ayarlayın ve yeniden başlatın.


Varsayılan 5 değeri, kısa ve geçici ağ kesintileri sırasında bağlantıları korumak için oldukça yetersiz görünmektedir; birkaç saniye içinde bir zaman aşımı elde edersiniz. Bu TcpMaxDataRetransmissionsanahtarı kayıt defterine ekledim ve değerini f(15) olarak ayarladım , makineyi yeniden sysctl net.inet.ip.forwarding=0başlattım ve PuTTY'ye bir karakter yazmadan hemen önce yönlendiriciyi yaptıktan sonra, yönlendirmeyi etkinleştirdikten sonra bana geri yankılandı 5 dakika bekledikten sonra yönlendiricimde (0x0000000c (12) değerinin, bir kesinti sırasında ilk paket gönderme girişiminden tam 7 dakika sonra bağlantının kesildiğini belirlemek için test ettim). Yeniden başlatmadan önce, PuTTY bağlantıyı birkaç saniye içinde zaman aşımına uğratır. Yeniden başlatmanın gerekli olduğunu unutmayın - en azından Windows 7 Professional'da,sadece kayıt defterini değiştirmenin ne mevcut ne de yeni bağlantılar üzerinde bir etkisi yoktur ! Windows'da hiçbir şey değişmez!

Ona iken, aynı zamanda ekleyebiliriz ve seti KeepAliveIntervaliçin 60000varsayılan ayarlanmazsa değerden ondalık (60 sn) 1000(1 sn), ancak TCP keepalives etkin değil çünkü o, yukarıdaki gibi benim belirli durumda herhangi bir etkisi olmaması gerek.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.