web-dev-qa-db-ja.com

断片化されたパケットを送信するSSHを修正するにはどうすればよいですか

私のISPは時々IPフラグメントをドロップします。これはSSHに現れます。つまり、正常にログインして短い文字列を出力するコマンドを実行できますが、「psfax」などを実行するとリンクがロックされます。

PMTUは1500です。したがって、SSHはこれより大きいパケットを送信しようとしているようですが、パケットは断片化されて失われます。リモートMTUを簡単に減らすことはできません。また、MTUが正しい(1500)ため、減らすことには消極的です。

ここで何が起こっているのですか? TCPは、断片化を避けるためにMSSを正しい値に設定すると思いました。断片を取得するにはどうすればよいですか?

編集:リモートマシンはCentos6.4です。 「時々」とは、ISPがネットワークを壊し、実際にはフラグメントだけをドロップするという悪い日があることを意味しました。リンクの両端をスニッフィングすると、大きなpingからのパケットとフラグメントがシステムを離れますが、「メイン」パケットのみがターゲットに到着します。

この問題は上記のように現れ、RDPセッションにログインすると黒い画面が表示されました。この問題は修正されたので、再び発生するまでこれ以上テストを行うことはできません。

別のシステムでもう少しテストすると、SSHがDFビットを設定することがわかります。したがって、今は何が起こっているのか本当にわかりません。

ネットワークがイーサネットサイズ(1500)までのパケットを受け入れるため、フラグメンテーションが必要なICMPメッセージが表示されるかどうかをテストできませんでした(表示されるべきではありません)。そのため、自分のルーターがフラグメントが必要なメッセージを発行します。

私はISPに不平を言いましたが、これは仕様によるものであり、ネットワークでは「ping-s5000」のようなpingは許可されないことを彼らは私に納得させようとしました。もちろんそうではありません。特に彼らがそれを修正したことを考えると。

5
Neik

この場合、SSHセッションとRDPセッションがIPSECVPNを経由しているという事実を見落としていました。 PMTUまたはその近くにある大きなSSHパケットにより、IPSECパケットがMTUよりも大きくなり、フラグメント化が発生していました。これらのフラグメントは失われ、セッションはハングしました。

セッションは最終的にタイムアウトして回復すると思いますが、人間はより早くタイムアウトします。

1
Neik