最近、新しい(NAT)ファイアウォールアプライアンスが$ WORKにインストールされました。それ以来、特にサーバーが応答なしで少し考える必要がある操作(svn update、rsyncなど)で、多くのネットワークタイムアウトと割り込みが発生しています。 VPNを介したインバウンドSSHセッションも頻繁にタイムアウトします。
これは、これらのエラーを減らすために、問題のサーバーのTCP(およびssh)キープアライブ時間を調整する必要があることを明確に示しています。
しかし、私が使用すべき適切な値は何ですか?
ファイアウォールの両側に接続できるマシンがあるとすると、このファイアウォールのTCP接続の制限時間)を測定する方法はありますか?
理論的には、接続が失われるまで、間隔を徐々に増やしてパケットを送信します。役立つ可能性のあるツールはありますか(無料またはオープンソースが最適ですが、他の提案も受け付けています)?
アプライアンスは私の管理下にないので、値を取得することはできませんが、現在の値と、値を増やすことができるかどうかを尋ねようとしています。
いずれかのマシンでパケットキャプチャを実行しているときに、あるマシンから別のマシンに接続するだけでよいと思います。 FTP、HTTP、SSHなどのセッションを作成し、タイムアウトするまでそのままにしておきます。
「理論的には、接続が失われるまで徐々に間隔を広げてパケットを送信します」とはどういう意味かわかりませんが、接続する以外に何もする必要はないと思います。トラフィックを送信し、タイムアウトになるまでそのままにします。タイムアウトはアイドルセッションで発生し、データを相手側に送信すると、セッションがアイドル状態でなくなるため、タイマーがリセットされる可能性があります。
タイムアウトになった場合は、最初のパケット(3ウェイハンドシェイクの開始)から接続が終了するまで(RSTが表示される場合と表示されない場合があります)のキャプチャのタイムスタンプを確認します。
アプリケーション層のタイムアウトを除けば(接続の種類によって異なります)、これにより、タイムアウト設定がどのように構成されているかがわかります。
Sshアウトバウンド接続を作成しようとしましたが、そのままにしておく以上のことをしなければなりませんでした。インタラクションがないと、無期限に有効に見えますが、特定のアイドル時間の後に入力の受け入れを停止します。
だから私は走ってみました:
#for n in 60 90120180240300600900 1800 3600; do sleep $ n && echo "Still r unning $ n";完了 まだ実行中60 まだ実行中90 まだ実行中120 まだ実行中180 まだ実行中240
その後、5分以上アイドル状態になりました。この時点で、キーを押して次のようになりました。
リモートホストによってXXXへの接続が閉じられました。 XXXへの接続が閉じられました。
おそらく間隔と数秒を使用する必要がありましたが、タイムアウトは240〜300秒であると確信しています。
ネットワーク管理者は、タイムアウトが60分に設定されていると報告しましたが、これは明らかにそうではありません。リモート側ははるかに早く接続を閉じますが、アウトバウンド接続は私の側でハングします。これは、リモート側が応答する前に少し考えなければならないアウトバウンド接続(svn update、大きなリモートディレクトリを持つftpなど)にとって非常にイライラします。
おそらく、正しいタイムアウト値を知る最も簡単な方法は、ネットワーク管理者に、新しいNATアプライアンス?