人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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コマンドは出来ます。
問題の切り分け方をご教授ください。

●質問者: gdwtseq
●カテゴリ:コンピュータ インターネット
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●100ポイント ベストアンサー

ここが参考になりません?
http://tameike.wordpress.com/2006/12/12/ftp-vsftp-%E3%82%92-selinux%E7%92%B0%E5%A2%83%E3%81%A7%E4%BD%BF%E3%81%86%E5%A0%B4%E5%90%88%E3%81%AE%E3%83%A1%E3%83%A2/

一応、概要、詳細の辺りも読んでみてから...


gdwtseqさんのコメント
ご回答ありがとうございます。IPTABLES_MODULES= は関係ないと考えています。 vsftpdサーバは社内の外にありまして、社内のCentOSサーバからftpコマンドで putしようとしています。 先程社内のwindows PCから ftpコマンドで put hoge.txt が成功しました。 ということは、社のfirewall か何かが社内のCentOSサーバに何番ポートかを 公開していないということになりますでしょうか?

gdwtseqさんのコメント
上記に追加です。 すみません、社のfirewall は関係ないと思いますので訂正します。 と言うのは、 外にもう一つCentOSサーバがあって、vsftpdが動いています。 それに対して、社内のCentOSからftpコマンドで put hoge.txtに成功するのです。 ということは、外の、RHELサーバとCentOSサーバの設定の違いによるのかと思います。 RHELサーバの /etc/sysconfig/iptables-config では、 IPTABLES_MODULES="" CentOSサーバの iptables-config では、 IPTABLES_MODULES="ip_conntrack_netbios_ns" となっております。 実はRHELサーバへ、私はUnixユーザ"user1" でログインしftpを試していますが、 このサーバは既に、客へftpサービスを公開しています。その客のUnixユーザは"user2" でしてuser2ではftp putが日々問題なく行われています。 #サーバ管理を任されたんですが、RHELサーバを構築した前任者がいないことで、今回はてなに質問したところでした。

a-kuma3さんのコメント
こういうことになってるんですよね。 社外の RHEL へ × 社内の CentOS から user1 で ○ 社外の ? から user2 で(顧客) ○ 社内の Windows から 社外の CentOS へ ○ 社内の CentOS から 送信できる社外の CentOS と、送信できない社外の RHEL で、パッシブモードで使えるポートの設定ってどうなってます? # 回答じゃなく、コメントにしておけば良かったなあ、と後悔しきり (^^;

gdwtseqさんのコメント
その通りです。 社外のRHEL のパッシブモード設定の件ですが。 /etc/vsftpd/vsftpd.conf設定項目のことかと推測します。 pasv_enable, pasv_min_port, pasv_max_port はいずれも設定させておりません。

a-kuma3さんのコメント
送信できる社外の CentOS の方の vsftpd.conf はどうです? pasv_enable が NO になってたりしません? Windows の ftp.exe で送信できてるのは、アクティブモードだから、なんて思ったりしてるのですが。

gdwtseqさんのコメント
社内CentOSのftpクライアントから put hoge.txt成功しました、一応。 ■やったこと vsftpd.conf に以下の設定を追加 ascii_upload_enable=YES パッシブモードoffで、 ftp> passive Passive mode off. 以上 しかし、成功した理由は理解していません。アドバイス頂けないでしょうか? また、参考サイトなどを教えていただけると幸いです。

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

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

質問者から

現在の考えを。
社内のCentOSの ftpコマンド putは ftp: connect: No route to hostエラー
社内のwindowsのftpコマンド putは 成功。
よって、問題は外のRHELのvsftpdサーバではなく、
社内のCentOSのftpクライアントとwindowsのftpクライアントとで通信のやり方の
違いなのかなと考えいます。


関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ