「みんな教えて! 選手権!!」開催のお知らせ

FTPサーバーでパッシブモードを使うことに関してお伺いしたいことがあります。

最近になってFTPサーバーの構築に挑戦し始めたのですが、ソフトウェアには
vsFTPdを使い、パッシブモードで動かしています。
データ通信用ポートには60000~60030番を設定しており外部ネットワークからも
アクセスしたいので、ルーター側も21番と60000~60030番のポートを開放しました。
調べた限りでは、この設定でパッシブモードが使えるはずなのですが、なぜか外部からの
接続を受け付けてくれません。試行錯誤の末、ルーター側でポート20番も開放しないと
パッシブモードが使えないということを突き止めたのですが、僕が調べたどのサイトにも
パッシブモードを使用するために20番ポートを開放しなければならないとは書いていませんでした。
データ通信に使用しているポートを調べたところ、確かに60000~60030番のポート
を使っていたので、パッシブモードで動いているには違いないようなのですが
どうにも腑に落ちない内容なので、どなたかご教授いただけませんでしょうか?

よろしくお願いします。

A 回答 (3件)

>「外部からの接続側」というのはクライアント端末のことでしょうか?



そうです。

>そうであれば"netstat -n"でクライアントの使用しているポートも確認したのですが、ポートはシステムが決めたポート番号が
>ランダムに使用されているような状態でした。

クライアント側の制御ポートに流れるコマンドを……ということだったのですが…。
http://www.aconus.com/~oyaji/router/ftp.htm

クライアント側がPASVモードを指定するために発行したコマンドのレスポンスで指定されるポート番号が、
vsftpdで設定しているポート番号の範囲になっているか?
を確認します。
範囲外になっていた場合はルータが書き換えた可能性が高いです。
# 書き換えたんならルータが責任持ってポート変換して欲しいトコですけどね…。

ポート番号の算出はこちらとかが参考になるかと。
http://www.nina.jp/server/basic/ftp.html

>データ通信用ポートには60000~60030番を設定しており

一つのクライアントから31個もデータ通信用のコネクションが張られる…とも思えませんので、
もう少し減らしてもいいかと思われます。
# 私なら…せいぜい4個くらいでしょうかねぇ。
# まぁFTPサーバを外部公開していませんけど。

>ルーターにはAirMacを使っているのですが

http://blog.bluegold.me/2011/08/problem-of-airma …
FTPサーバ立てるのには…向かないっぽいですね。

opensshでsftpした方がいいかもしれません。
# SSHは非標準ポートへの変更を勧めますが。
    • good
    • 1
この回答へのお礼

返答遅れて申し訳ございません。
詳しい解説をありがとうございます。おかげさまで原因は掴めたようです。

説明いただいた内容をまだ十分に検証できていないのですが
どうやら、クライアントからのPASVコマンドの応答として
サーバから通知されるサーバのアドレスがプライベートアドレスで返されているようです。
ルーターにプライベートIPをグローバルIPに変換する機能も無いため
そのままパッシブモードでの通信が終了しているようです。

確認が取れていないのですが、パッシブモードで動作していると思っていた点については
どうやらパッシブモードの失敗後に、そのままポートモードに移行して動作していたので
うまくいっていると勘違いしていたように思われます。

ともあれ、私が所有しているルーター内でパッシブモード+SSLを使ったFTPサーバーは構築できないようなので
SFTPを使ってFTPサーバーの構築を試してみたいと思います。

非常に参考になるアドバイスで本当に助かりました。ありがとうございます。

お礼日時:2012/10/20 11:08

PSVモードでは20番は使いません。


PSVモードではPSVコマンドに応答(認証後)し、FTPサーバー側から待ち受けポートを知らせます。

で、まぁこのあたりの設定はvsFTPdで設定していると思うので問題は

>パッシブモードを使用するために20番ポートを開放しなければならないとは書いていませんでした。

はいそのの通りですね。

恐らく静的IPマスカレードはOKでしょう。
なのでパケットフィルタ設定を見直しましょう。

WAN側から順方向にftpを「通過」ですね。

この回答への補足

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

パケットフィルタの設定については、ルーター側に関しては質問文で申し上げたような設定をしています。
ルーターにはAirMacを使っているのですが、ルーターの設定画面をみても通信を制御する方向を指定するような
設定項目はないようです。

それと、サーバーOSにはCentOS6を使っています。しかしデーモンのiptableに関しては起動すらさせていないので
まず、この部分が原因になることも無さそうです。

補足日時:2012/10/15 19:42
    • good
    • 0

ルータ自体がFTPのコマンドを監視していて、データ通信用のポートを自前で制御している。


なんて場合もありますが、その辺りはどうなんでしょう?
# サーバからの返答をルータが書き換えてクライアントに送信する場合があります。
# まぁ、そういう場合はルータ自身に「FTP(コマンド)用のポート番号」を設定する項目があったりしますが…。

外部からの接続側でデータ用ポートがいくつになっているのか。を確認した方が良いかも知れません。

この回答への補足

ありがとうございますm(__)m
ルーターにはAirMacを使っているのですが、WEBサイトやルータの設定画面見た限り
「FTP(コマンド)用のポート番号」は見当たりませんでした。
でもなんとなく設定できないだけで「データ通信用ポートを自動制御」している
というのはありそうな気がします。ルーターが何かしている以外に考えられる原因がないんですよね。
CentOS側ではiptableをOFFにしちゃっていますし。。。

「外部からの接続側」というのはクライアント端末のことでしょうか?
そうであれば"netstat -n"でクライアントの使用しているポートも確認したのですが、ポートはシステムが決めたポート番号が
ランダムに使用されているような状態でした。

補足日時:2012/10/15 19:21
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


おすすめ情報

このQ&Aを見た人がよく見るQ&A