Windows 7 / PuTTYが非常に短い停電でもTCP接続をドロップするのはなぜですか?


15

キャプティブWiFiに便乗する小さなローカルネットワークがあり、Windows 7 ProfessionalのsshOS X -oServerAliveInterval=240およびPuTTY 0.62でLinode、Hetzner、およびその他のサーバーへの接続を確立するために使用しています。

PuTTYでは、Connection→→ Sending of null packets to keep session active240 を選択しますEnable TCP keepalives (SO_KEEPALIVE option)。デフォルトではオフになっています。

インターネットが一時的に約1分間ダウンすると(キャプティブポータルで再認証する必要があります)、PuTTYはほとんどの場合、開いているすべてのsshセッションを失います。実際にsshで何かを入力しようとしても、接続が再びアクティブになるまで60秒ほど応答がない場合でも、インターネットが1〜2分以内に回復する限り、セッションが失われることはありません。(だから私は、NAT状態が常に保存されることを確信しています。)

Windows / PuTTYが適切な接続を先制的に破棄するのを停止できますか?

WindowsではSO_KEEPALIVEなどがデフォルトで実際にオンになっており、古い接続を検出するためのタイムアウトが小さすぎるように思えます。停止がほんの数百秒で値-oServerAliveInterval(times ServerAliveCountMax)を下回っている限り、OS Xがこれらの一時的な一時的な停止の影響を受けないように、数秒以上に増やしたいと思います。


私が同じ問題を抱えていると言って賛成票を投じるだけで、この質問を見ています。Windowsでのネットワークドライバーの実装と関係があると思います。
-allquixotic

私は10年間パテを使用していますが、最初からこれに対する解決策を探していません。この問題は緩和されるだけで解決されません。Puttyには、100.00%の信頼性の高いインターネット接続と0.00%のドロップパケットが必要です。いつでもどこでもインターネットに接続できるという新しい世界では、作業が中断される前に一度に数分しか動作せず、パテを再起動し、再接続する必要があるため、年が経つにつれてパテは次第に役に立たなくなります、中断した場所から再開し、破損したファイルを破損させずに、次の停止前に作業を完了させてください。
エリックレシンスキー14年

@EricLeschinski、あなたは間違っています。この質問で説明されているこの緩和策はうまく機能します。非常に長い間、IPv4接続が中断されたことはありません。(IPv4アドレス全体が変化する場合や、スリープなどを行う場合moshは別として、これらの場合には、より良い代替手段です。)
cnst 14年

回答:


8

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


ように思えるTcpMaxDataRetransmissions(REG_DWORD)が直接影響を与えます。値はHKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\services\Tcpip\Parameterswith に追加できますregedit.exe(デフォルトではキーが欠落しているため、変更するには最初に追加する必要があります)。設定解除時— 5.です。 追加して、少なくともf(15)に設定し、再起動します。


デフォルト値の5は、一時的かつ一時的なネットワークの停止中に接続を維持するのに非常に不適切と思われます。数秒でタイムアウトが発生します。このTcpMaxDataRetransmissionsキーをレジストリに追加し、その値をf(15)に設定し、マシンを再起動し、sysctl net.inet.ip.forwarding=0PuTTYで文字を入力する直前にルーターで実行した後、転送を有効にした後に文字をエコーバックしました5分間待ってからルーターでテストしました(0x0000000c(12)の値により、停止中にパケットを送信する最初の試行の7分後に接続が切断されることを確認しました)。再起動する前に、PuTTYはすぐに数秒以内に接続をタイムアウトします。再起動が必要であったことに注意してください-少なくともWindows 7 Professionalでは、レジストリを変更するだけでは、既存の接続にも新しい接続にも影響しません。Windowsで何も変わらない!

その間、デフォルトの未設定値(1秒)KeepAliveIntervalから6000010進数(60秒)を追加して設定することもできます1000が、TCPキープアライブが有効になっていないため、上記の特定のケースでは効果がありません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.