vsftpdサーバに対して、外から ftpコマンドで putに失敗します。

会社のサーバ管理を任されました。OS:Red Hat Enterprise Linux ES release 4,
vsftpd-2.0.1-5.EL4.7 です。
外のCentOSサーバから ftpコマンドでRHELサーバにログインしましたが、putコマンドで
以下のエラーになります。
ftp> put hoge.txt
local: hoge.txt remote: hoge.txt
227 Entering Passive Mode (xxx,xxx,xxx,xxx,31,204)
ftp: connect: No route to host

ls, dirコマンドも上記のエラーになります。pwdコマンドは出来ます。
問題の切り分け方をご教授ください。

回答の条件
  • 1人5回まで
  • 登録:
  • 終了:2013/06/06 17:47:46
※ 有料アンケート・ポイント付き質問機能は2023年2月28日に終了しました。

ベストアンサー

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154

他6件のコメントを見る
id:a-kuma3

しかし、成功した理由は理解していません。アドバイス頂けないでしょうか?

普通にサーバの設定をいじって、試行錯誤できる方のようなので、どこまで分かってるのか分かりません(変な日本語)。
説明が冗長だったらごめんなさい。

ftp は、通信に socket を二つ使います。
コマンド用と、データ用です。
コマンド用は、クライアントからサーバにつなぎに行きます。
データ用は、モード(アクティブとパッシブ)によって、どちらからつなぎに行くかが違います。
アクティブモードは、サーバからクライアントに向かってつなぎに来ます。
パッシブモードは、逆に、クライアントからサーバに向かってつなぎに行きます。

また、データ用に使われるポートも、設定で変更はできますが、どのあたりを使うということはだいたい決まってます。

今回の場合、コマンドのやり取りはできていたので、社内のクライアントから社外の ftp サーバに向けて、ポート:21 で接続できていることが分かっています。
で、データを送信しようとすると、ソケットをつなごうとすると、ホストに到達できませんと言われているわけです。

IP アドレスで制限がかかっているわけではなさそう(コマンドが送信できているから)なので、ポートによる制限か、もしくは、更に接続する方向でも制限がかかっているか、ということが疑われます。

Windows の ftp.exe では、ファイル送信に成功してたということだったので、アクティブモードなら通信できるんだな、ということが想像ついたので、接続できるサーバとできないサーバの pasv_enable や、ポートの設定を比べて欲しい、というコメントを書きました。
# ftp.exe がパッシブモードをサポートしてない、というのは、前に調べたことがあって、知ってました

多分、gdwtseq さんの会社のファイアウォールの設定で、

  • 社内から、社外に接続できるポートが制限されている
  • 社外から、社内に接続できるポートは制限されているだろうが、well known なポートは、割りと許されている

ということになっているんだろうと、想像します。

アクティブモードとパッシブモードの違いが肝だと思うので、こんな辺りを参考にしてみたらどうでしょうか。
http://ameblo.jp/itboy/entry-10249857007.html
http://www.nina.jp/server/basic/ftp.html


かなり推測が入ってますし、自信をもって言い切れるほど分かっちゃあいません。
「コメントにすりゃあ、良かったかな」は、本音だったりします
# とりあえず、つながって良かった :-)

2013/06/05 21:48:54
id:gdwtseq

a-kuma3さん
アドバイスにとても感謝いたします。
また参考サイトも書いていだき、ありがとうございます。
ftpサーバを仕事で立てるのは初めてでした。
今後の参考にさせていただきたいと思います。
本当にありがとうございました。

2013/06/06 17:46:44

その他の回答0件)

id:a-kuma3 No.1

回答回数4973ベストアンサー獲得回数2154ここでベストアンサー

他6件のコメントを見る
id:a-kuma3

しかし、成功した理由は理解していません。アドバイス頂けないでしょうか?

普通にサーバの設定をいじって、試行錯誤できる方のようなので、どこまで分かってるのか分かりません(変な日本語)。
説明が冗長だったらごめんなさい。

ftp は、通信に socket を二つ使います。
コマンド用と、データ用です。
コマンド用は、クライアントからサーバにつなぎに行きます。
データ用は、モード(アクティブとパッシブ)によって、どちらからつなぎに行くかが違います。
アクティブモードは、サーバからクライアントに向かってつなぎに来ます。
パッシブモードは、逆に、クライアントからサーバに向かってつなぎに行きます。

また、データ用に使われるポートも、設定で変更はできますが、どのあたりを使うということはだいたい決まってます。

今回の場合、コマンドのやり取りはできていたので、社内のクライアントから社外の ftp サーバに向けて、ポート:21 で接続できていることが分かっています。
で、データを送信しようとすると、ソケットをつなごうとすると、ホストに到達できませんと言われているわけです。

IP アドレスで制限がかかっているわけではなさそう(コマンドが送信できているから)なので、ポートによる制限か、もしくは、更に接続する方向でも制限がかかっているか、ということが疑われます。

Windows の ftp.exe では、ファイル送信に成功してたということだったので、アクティブモードなら通信できるんだな、ということが想像ついたので、接続できるサーバとできないサーバの pasv_enable や、ポートの設定を比べて欲しい、というコメントを書きました。
# ftp.exe がパッシブモードをサポートしてない、というのは、前に調べたことがあって、知ってました

多分、gdwtseq さんの会社のファイアウォールの設定で、

  • 社内から、社外に接続できるポートが制限されている
  • 社外から、社内に接続できるポートは制限されているだろうが、well known なポートは、割りと許されている

ということになっているんだろうと、想像します。

アクティブモードとパッシブモードの違いが肝だと思うので、こんな辺りを参考にしてみたらどうでしょうか。
http://ameblo.jp/itboy/entry-10249857007.html
http://www.nina.jp/server/basic/ftp.html


かなり推測が入ってますし、自信をもって言い切れるほど分かっちゃあいません。
「コメントにすりゃあ、良かったかな」は、本音だったりします
# とりあえず、つながって良かった :-)

2013/06/05 21:48:54
id:gdwtseq

a-kuma3さん
アドバイスにとても感謝いたします。
また参考サイトも書いていだき、ありがとうございます。
ftpサーバを仕事で立てるのは初めてでした。
今後の参考にさせていただきたいと思います。
本当にありがとうございました。

2013/06/06 17:46:44
id:gdwtseq

現在の考えを。

社内のCentOSの ftpコマンド putは ftp: connect: No route to hostエラー

社内のwindowsのftpコマンド putは 成功。

よって、問題は外のRHELのvsftpdサーバではなく、

社内のCentOSのftpクライアントとwindowsのftpクライアントとで通信のやり方の

違いなのかなと考えいます。

  • id:taknt
    権限がないとか?
  • id:a-kuma3
    とりあえず、コマンド用のポートは接続できるが、データ用のポートが接続できない、というところまでは確か。
    Windows の ftp コマンドって、アクティブモードのみで接続だったと思う。
    社内 CentOS → 社外 RHEL でやるときに、アクティブモードにするとどうなります?
  • id:gdwtseq
    a-kuma3さん
    アクティブモードで転送を試せているか自信がないですが、以下を試しました。

    ftp> passive
    Passive mode off.
    ftp> put hoge.txt
    local: hoge.txt remote: hoge.txt
    200 PORT command successful. Consider using PASV.
    150 Ok to send data.

    #反応がないので、Ctrl+C で脱出。
    send aborted
    waiting for remote to finish abort
    226 File receive OK.

    RHEL該当ディレクトリで、hoge.txtファイルは作られましたが、
    ファイルサイズは0バイトでした。

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

回答リクエストを送信したユーザーはいません