練習&実験用途でさくらの専用サーバを契約し、FTPサーバーを稼動させようと思い、初期状態からiptablesをいくつか変更して21番ポートを開いているのですが、

ポート開放確認http://www.cman.jp/network/support/port.html
でチェックしてもアクセスできません。
もちろんvsFTPDを起動してFFFTP等でアクセスしても接続できません。

なぜ開かないのか、どうすればポートを開いてFTPサーバーを機能させられるでしょうか。
OSはCentOS4.5です。

vsFTPDに関しては下記のサイトを参考に設定しています。
http://safe-linux.homeip.net/other/linux-vsftp-01.html
http://centossrv.com/vsftpd.shtml

回答の条件
  • 1人10回まで
  • 登録:2007/12/19 18:54:02
  • 終了:2007/12/20 02:42:27

回答(7件)

id:tezcello No.1

tezcello回答回数457ベストアンサー獲得回数682007/12/19 21:22:18

ポイント40pt

FTPは、port21 だけでは通信出来ません。

最低でももうひとつポートが開いている必要があります。

それがどのポートかは、FTPサーバ及びクライアントの設定によります。

(ポートモード、パッシブモードというやつです)

ポートモードなら、port20 で実際のデータはやり取りするはずだったと思います。

(つまり、ポートモードなら、port20,21 の2つが開いていないと...)

id:surpriser

回答ありがとうございます。ポート20もiptablesで開いて試したのですが、やっぱりアクセス不可能でした。

FFFTPの設定はもちろん、パッシブモードを使用していません。(パッシブ用にポートを開けてもアクセスできませんでした。)

そもそもポート開放確認で21が開いていない、というのがおかしいのかなと思うのですがそういう認識で合っているのでしょうか。

2007/12/19 21:29:34
id:b-wind No.2

b-wind回答回数3344ベストアンサー獲得回数4402007/12/19 22:07:25

ポイント50pt

単純に設定が反映されてないとか。

iptables -L

で現在のフィルタが確認できるので、それを提示されてみては?


それと、そもそも FTP サーバーは起動できていますか?

chkconfig --list vsftpd

の結果を確認するのとローカルから

ftp localhost

としてプロンプトが帰ってくるかを確認してみてください。

id:surpriser

回答ありがとうございます。

iptables -Lの結果の一部ですが下記の通りで、ftpのポート20と21は開いていると思います。60000-60030はパッシブ用です。

==================================

ACCEPT tcp -- anywhere anywhere tcp dpt:ftp

ACCEPT tcp -- anywhere anywhere tcp dpt:ftp-data

ACCEPT tcp -- anywhere anywhere tcp dpts:60000:60030

==================================

また、chkconfigで確認したところ、2~5がonになっているので問題ないと思います。

最後にftp localhostを打つと

ftp: connect: Connection refused

ftp>

という表示になり、カーソルが点滅します。これって、プロンプトが帰ってきてるってことでしょうか?

ちなみにroot権限からやっても、接続可能なユーザーに登録しているユーザーでやっても同じく

ftp: connect: Connection refused

ftp>

という表示になりました。

設定が誤っているのでしょうか?

2007/12/19 22:18:38
id:b-wind No.3

b-wind回答回数3344ベストアンサー獲得回数4402007/12/19 22:26:44

ポイント50pt

ftp: connect: Connection refused

それはつながってない。


CentOS なら、/etc/xinet.d/vsftpd ファイルの中身と

chkconfig --list xinetd

も確認する必要があるかも。

id:surpriser

回答ありがとうございます。

/etc/xinet.d/vsftpd

ファイルですが、存在しておらず、新たに書き込んでいくようでした。設定の参考のサイトなどありますでしょうか?ググッたのですが、見つからず、もしありましたらご教示いただければ幸いです。vsftpd.confはhttp://safe-linux.homeip.net/other/linux-vsftp-01.htmlのページを参考に設定しています。

chkconfig --list xinetd

に関しては1~6まで全てoffになっていました。

onでないといけないのかなと思い、

chkconfig xinetd on

に設定し、service xinetd Startでスタートさせましたが、やはりFTPでのアクセスはできませんでした。

お手を煩わせ恐縮ですがよろしければもう少しお付き合いお願いいたします。

2007/12/19 22:56:37
id:tezcello No.4

tezcello回答回数457ベストアンサー獲得回数682007/12/19 22:26:46

ポイント40pt

> 初期状態からiptablesをいくつか変更して21番ポートを開いているのですが、

から、すでに解放出来ていると思ったのですが、

> そもそもポート開放確認で21が開いていない

かも知れないのですね?


まさか、FTPサーバが起動出来てなかったなんてオチは無いものと思いますが、自分自身への接続は可能でしょうか?

ftp localhost (または、ftp 127.0.0.1)とやると、FTPが起動出来ていれば接続出来るはずです。


また、短時間だけ iptables を止めてみたらどうでしょうか?

チェインが問題なら、止めている間は通信出来るような気がします。

iptables については、まだ勉強中で詳しくないです。申し訳ない。

id:surpriser

回答ありがとうございます。2の回答でiptablesの確認内容を記載しましたが、ftp(21)は開いていると思っていますが、ポート開放確認では「アクセスできません」と出ます。

FTPサーバーは

service vsftpd start

でOKと表示されるので、起動できていると思いますが、3の回答で書きましたとおり、ftp localhostを打つと

ftp: connect: Connection refused

ftp>

という表示になります。

ここに問題があるようですが、具体的にどうすればよいかがまだわかりません。。。

2007/12/19 23:08:12
id:y-kawaz No.5

y-kawaz回答回数1419ベストアンサー獲得回数2252007/12/19 23:27:05

ポイント100pt

これまでの質問と回答を見ている限り、iptables以前にvsftpが起動していない気がします。

・ps auxf などで vsftpd のプロセスが起動しているか確認。

・netstat -lnpt で 21 番ポートが LISTEN されているか確認。

・/var/log/messages などにエラーログが出ていないか確認。tail -f しながら vsftpd を restart してログの出力を観察する。

id:tezcello No.6

tezcello回答回数457ベストアンサー獲得回数682007/12/19 23:30:39

ポイント40pt

Connection refused

と返るのでしたら、状況からして vsFTPD が起動出来ていない気がします。


> /etc/xinet.d/vsftpd

> ファイルですが、存在しておらず、

起動スクリプトは、

/etc/xinet.d/vsftpd

ではなく、

/etc/rc.d/init.d/httpd

かも知れませんね。

id:bayan No.7

bayan回答回数99ベストアンサー獲得回数132007/12/20 02:02:23

ポイント100pt

service hogehoge start で [ OK ] と出ていても、設定や環境に

問題があって、実はコケているということが結構あります。

試しに /etc/vsftpd/vsftpd.conf の末尾にデタラメな記述 (xxx) をして起動してみます。

[root@dokoka ~]# service vsftpd start

Starting vsftpd for vsftpd: [ OK ]

status を調べると止まっているらしい。。。

[root@dokoka ~]# service vsftpd status

vsftpd dead but subsys locked

vsftpd を直接実行すると、エラーになっていることがわかりました。

root@dokoka ~]# /usr/sbin/vsftpd

500 OOPS: missing value in config file for: xxx

また、5番さんのおっしゃるように ps や netstat でプロセスやポートを

確認するのがなんといっても確実です。

netstat -lntp の例として、CentOS 4.3で vsftpdをスタンドアローンで

起動している場合ですが、次のような具合でした。

tcp        0      0 0.0.0.0:21                  0.0.0.0:*                   LISTEN      2169/vsftpd


なお、6番の方はきっと /etc/rc.d/init.d/vsftpd と書きたかったのだと思います。。。

id:surpriser

ありがとうございました!無事稼動し、FFFTPでもアクセスすることができました!感動です。

statusを確認すると、これがエラーだという風に出てきました。

原因はvsftpd.confファイルにpasv_addr_resolve=YESという記述があったためでした。

http://centossrv.com/vsftpd.shtml

こちらのサイトを参考に記述していましたが、なぜこれがダメなのかは今後勉強したいと思います。

また、この内容に限らず、今後に役立つようなログの確認方法まで提示いただいてありがとうございました!Linuxを触るのは初めての経験で、もっともっと勉強しようと思いました。

またどうしても解決できない場合は質問させていただくかもしれませんがその際はよろしくお願いいたします。

皆さん本当にありがとうございました!

2007/12/20 02:39:14
  • id:b-wind
    pasv_addr_resolve=YES これは自宅サーバーなどでルーターの NAT の後ろにサーバーがいる場合に必要な設定。
    今回のように専用サーバーでグローバルIPを直接持っている場合は必要ないはず。
  • id:surpriser
    b-windさま

    コメントありがとうございます!なるほど、そうだったんですね!
    回答が終了してからもお付き合いくださりありがとうございます。
    とてもよくわかりました!

    ずっと苦戦していたので、本当に助かりました。
    ありがとうございます。もっと勉強しようと思います。
  • id:tezcello
    > なお、6番の方はきっと /etc/rc.d/init.d/vsftpd と書きたかったのだと思います。。。
    その通りです。お恥ずかしい。
    起動スクリプトがどこにあるかを探していて、httpd なのを忘れてコピー&ペーストしてしまいました。

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

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

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

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません