web-dev-qa-db-ja.com

奇妙な問題:ピアによる接続のリセット

CentOSを実行しているLinuxサーバーでSSHに問題があります。 Windows cmdからPuTTYまたはsshを使用してサーバーに正常に接続できます。セキュアFTPを使用する場合も同様です。サーバーに接続し、ファイルのリストを取得できます。すべて問題ありません。問題は、ネットワークを介して任意の量のデータを送信しようとすると発生します。

特定のしきい値を超えて何かを転送しようとすると、接続は失敗し、「ピアによって接続がリセットされました」というメッセージが表示されます。ホームディレクトリに約3 MBのsqlファイルがあります。 FTPで転送しようとすると、転送が開始され、約48kが転送された後に終了します。次に、新しい接続を開始し、さらに48kを転送します。 PuTTYを使用してセッションを開くと、接続してログインできます。 cat file.sql再び、接続が終了し、「ピアによって接続がリセットされました」というメッセージが表示されます。ローカルワークステーションからサーバーに移動する場合も同じです。サーバーでホストされているsvnリポジトリにコミットする必要のあるソースコードがかなりありますが、同じ「ピアによる接続リセット」メッセージが表示されます。

私は問題が私のローカルワークステーションにあることを知っています。私は妻のMacbookとサーバーへのSSHを問題なく使用できるからです。友人のLinuxボックスにssh(同じPuTTYインストールを使用)し、サーバーからサーバーにsftpしてファイルをダウンロードし、ボックスからサーバーに別のsshセッションを開いて、ファイルをcatします。だから、何かが起こっていますが、私は何がわかりません。誰かアイデアはありますか?

更新

私はこれをもう少し理解しようとしました、そして私が単一のsshセッションで転送できるデータの量のハード制限があるようです。やったらすぐに当たるcat file.sqlでも入力し続けることができますls -l一貫した回数で、「ピアによって接続がリセットされました」というメッセージも表示されます。私はもう試した:

  • 新しいSSHキーの生成
  • ルーターを再起動する
  • コンピュータを再起動する
  • リモートサーバーの再起動

私はリモートサーバーにtcpdumpを書きましたが、TCPが理解できないほど詳細なレベルで理解できません。sshでデバッグをオンにしたので、次の部分があります。リセットされる接続に至るまでのログ:

Jul 24 23:10:56 server sshd[4507]: debug1: permanently_set_uid: 500/503
Jul 24 23:10:56 server sshd[4507]: debug1: Entering interactive session for SSH2.
Jul 24 23:10:56 server sshd[4507]: debug1: server_init_dispatch_20
Jul 24 23:10:56 server sshd[4507]: debug1: server_input_channel_open: ctype session rchan 256 win 16384 max 16384
Jul 24 23:10:56 server sshd[4507]: debug1: input_session_request
Jul 24 23:10:56 server sshd[4507]: debug1: channel 0: new [server-session]
Jul 24 23:10:56 server sshd[4507]: debug1: session_new: init
Jul 24 23:10:56 server sshd[4507]: debug1: session_new: session 0
Jul 24 23:10:56 server sshd[4507]: debug1: session_open: channel 0
Jul 24 23:10:56 server sshd[4507]: debug1: session_open: session 0: link with channel 0
Jul 24 23:10:56 server sshd[4507]: debug1: server_input_channel_open: confirm session
Jul 24 23:10:56 server sshd[4507]: debug1: server_input_channel_req: channel 0 request pty-req reply 1
Jul 24 23:10:56 server sshd[4507]: debug1: session_by_channel: session 0 channel 0
Jul 24 23:10:56 server sshd[4507]: debug1: session_input_channel_req: session 0 req pty-req
Jul 24 23:10:56 server sshd[4507]: debug1: Allocating pty.
Jul 24 23:10:56 server sshd[4505]: debug1: session_new: init
Jul 24 23:10:56 server sshd[4505]: debug1: session_new: session 0
Jul 24 23:10:56 server sshd[4507]: debug1: session_pty_req: session 0 alloc /dev/pts/2
Jul 24 23:10:56 server sshd[4507]: debug1: server_input_channel_req: channel 0 request Shell reply 1
Jul 24 23:10:56 server sshd[4507]: debug1: session_by_channel: session 0 channel 0
Jul 24 23:10:56 server sshd[4507]: debug1: session_input_channel_req: session 0 req Shell
Jul 24 23:10:56 server sshd[4508]: debug1: Setting controlling tty using TIOCSCTTY.
Jul 24 23:10:59 server sshd[4507]: Read error from remote Host <my-ip>: Connection reset by peer
Jul 24 23:10:59 server sshd[4507]: debug1: do_cleanup
Jul 24 23:10:59 server sshd[4505]: debug1: do_cleanup
Jul 24 23:10:59 server sshd[4505]: debug1: PAM: cleanup
Jul 24 23:10:59 server sshd[4505]: debug1: PAM: deleting credentials
Jul 24 23:10:59 server sshd[4505]: debug1: PAM: closing session
Jul 24 23:10:59 server sshd[4505]: pam_unix(sshd:session): session closed for user <me>
Jul 24 23:10:59 server sshd[4505]: debug1: session_pty_cleanup: session 0 release /dev/pts/2

更新2:

約1週間前、次のWiki投稿を使用してサーバーのssh設定を変更しました: http://wiki.centos.org/HowTos/Network/SecuringSSH

ときどき仕事からサーバーにアクセスする必要があり、ファイアウォールでポート21が開いているため、sshポートを21に変更しました。この問題をさらに診断するために、ssh設定を元に戻してsshポートを22に戻しました。低く、見よ、ポート22を使用するときにIはエラーに遭遇しない。それを21に戻し、転送されたデータの48kにヒットしたときの時計仕掛けのように-接続リセットピア。

初期接続を取得でき、過去にポート21でftp接続を確立するのに問題がなかったことを考えると、ファイアウォールの構成に問題があるようには見えません。

少なくともこの時点では、サーバーのsshポートに問題が絞り込まれています。それを21にフリップすると、すぐに問題が発生し、22に戻します。まったく問題ありません...

リッスンポートが違いを生む理由を誰かが思いつくことができますか?繰り返しますが、問題が発生しているのは私のWindowsのみですXPボックス。問題の原因が何か考えられているかどうかお知らせください。

更新2:

問題を絞り込んだだけで問題は解決しました-これはファイアウォールの問題ですが、ルーターではなくWindowsファイアウォールの問題です。ポート21を使用してWindowsファイアウォールを無効にすると、「ピアによる接続のリセット」メッセージが表示されません。明らかな質問に答えるために、はい、ポート21はWindowsファイアウォールで開いています。

このコンピューターはルーターのファイアウォールの背後にあるので、今は無効にできますが、ここで何が起こっているのかを知りたいと思います。

9
proflux

このコマンドでコマンドラインを使用して解決できます(管理者としてこれを入力してください):

netsh advfirewall set global statefulftp disable

これは、FTPを処理しようとしているルーターに関連している可能性がありますNAT接続追跡を自動的に行います。22ではなく、ポート21でのみ発生します。確認してください http://www.faqs。 org/docs/iptables/complexprotocols.html

1
Ricardo Pardini