投稿日:2006年09月12日 作成鷹の巣

No.20936 FTPのPASVモードについて



FTPのPASVモードについて

No.20936 投稿時間:2006年09月12日(Tue) 00:59 投稿者名:メロン URL:

皆様初めまして。
自宅にてFTPサーバを開設しようと思考錯誤している者なのですが、いろいろ調べましたが行き詰ってしまいましたので、皆様のご意見を頂きたく投稿させて頂きました。

本来のFTP標準設定でポートモードでの通信ですと、使用ポートは制御用ポートTCPの21番、データ用ポートTCPの21番と固定なので、ルーターのNAT変換等の理屈も分かり、ファイアウォールも除外設定でき、すんなり通信できました。

しかし、パッシブモードですと、制御用ポートはTCPの21番のままだが、データ用ポートはFTPサーバー側でTCPの1024番以降で適当(?)に決定され、その後データ通信のごとにポートが1つ増えていくと確認しました。
FTPを外部の人(知人宅)などから利用してもらうには、理論上(?)ポートモードでは知人宅側のルーターにNAT変換テーブルを設定したりしないといけないということから、パッシブモードでのFTP通信を可能にしたいと思っております。
調べていると、最近のルーターにはNAT越えが可能で、ポートモードでもそのまま利用できるとありますが、これもイマイチ理解できませんでした。

で、質問させて頂きたい項目を以下に挙げます。
(1)パッシブモードでのFTP通信を実現させるには、NAT変換やファイアウォールをどのように設定すれば良いかという点が分かりません。

(2)また、パッシブモードでの通信にて、データ用のポートを1024番以降で特定の番号に固定することは出来ないということでしょうか。これが出来れば(1)は設定すれば良いだけなので、おそらく固定はできないのだと理解しておりますが。

知識も内容もお粗末で、あまり文章もよろしくないかも知れませんが、どうぞご指摘・アドバイス等宜しくお願い致します。


Re: FTPのPASVモードについて

No.20937 投稿時間:2006年09月12日(Tue) 09:18 投稿者名:松元 URL:

> (1)パッシブモードでのFTP通信を実現させるには、NAT変換やファイアウォールをどのように設定すれば良いかという点が分かりません。
> (2)また、パッシブモードでの通信にて、データ用のポートを1024番以降で特定の番号に固定する

多くのルータではまったく何もしないでもパッシブモードで動作してたはず。
先日AR260sで組みましたがこれも平気だった気がします。
BRL-04FMX ではだめでした。
但しファイヤーウオールでそのポートを止めないように。

メロン様はどこのメーカーのどのルーターをお使いですか?

ルーターで対応されていない場合は、
A)(2)で質問されているようにポート範囲をあらかじめきめ
B)その範囲のポートをすべてサーバーにNAPTして
C)デーモンの設定でグローバルアドレスを渡すよう変更する
の3つ必要があります

メロン様は(C)をお忘れの用です。

ポート範囲をあらかじめ決める方法
デーモンにより異なり出来ない物もあります。 proftpdならPassivePorts だったと思う

グローバルアドレスを渡すよう変更する
デーモンによりプロバイダーが固定IPの場合は出来るのもあります。(proftpdならMasqueradeAddress)
非固定IPでも出来るのもありますが少ない
そこまでするならルーターを交換することをお勧めします。


Re^2: FTPのPASVモードについて

No.20939 投稿時間:2006年09月13日(Wed) 00:34 投稿者名:メロン URL:

松元様 ご返答有難う御座います!
> メロン様はどこのメーカーのどのルーターをお使いですか?
使用ルーターは、BaffaloのBBR-4MGです。HPより製品の仕様などを確認しましたが、NATの自動対応
であるものかどうか不明でしたので、メーカーHPより質問をさせて頂いております。

> C)デーモンの設定でグローバルアドレスを渡すよう変更する
> メロン様は(C)をお忘れの用です。
この設定については初めて知りました。一度調査してみます!


> ポート範囲をあらかじめ決める方法
> デーモンにより異なり出来ない物もあります。 proftpdならPassivePorts だったと思う
WarFTPというサーバーソフトを使用しております。こちらのソフトで可能か見てみます。

だいぶ理解が出来てきましたので、アドバイス頂きました事柄を調べて、再度設定してみます!
的確なご指示、有難う御座います!!


Re^3: FTPのPASVモードについて

No.20941 投稿時間:2006年09月13日(Wed) 12:58 投稿者名:松元 URL:

> 使用ルーターは、BaffaloのBBR-4MGです。HPより製品の仕様などを確認しましたが、NATの自動対応
> であるものかどうか不明でしたので、メーカーHPより質問をさせて頂いております。

メルコルーターは対応しているのじゃないかな。あそこのサービスセンターでそのような事を教えてくれるかな?
対応ルーターで今回のソフトの対応を付けると逆に動作出来ない事があるので良く見極めること。


ルータの 「FTP サーバ対応」 とは

No.20938 投稿時間:2006年09月12日(Tue) 10:27 投稿者名:通-行-人 URL:

> 調べていると、最近のルーターにはNAT越えが可能で、ポートモードでもそのまま利用できるとありますが、これもイマイチ理解できませんでした。

まず、 PASV コマンドが発行されてからデータポートの接続が完了するまでの (NAT ルータを介さない) FTP の動作について再確認。

1. クライアントが、 制御用ポートを用いて 「PASV」 というコマンドをサーバへ送信。
2. サーバは、 データ用に使うポート番号 (1024 番以上) を決め、 そのポートを待ち受け状態にする。
3. サーバは 「227 Entering Passive Mode(aaa,bbb,ccc,ddd,eee,fff).」 の形式で応答し、 準備ができたことを告げる。 aaa.bbb.ccc.ddd がサーバの IP アドレス、 eee と fff はポート番号から算出される。
4. クライアントは、 3. で指示されたアドレス ・ ポートへ接続を掛ける。
5. 接続が確立すれば、 めでたしめでたし。 次にクライアントが発行するコマンドにより、 データがこの接続を流れることとなる。

で、 サーバが NAT ルータの配下にゐた場合、 何が問題となるかを考えてみます。

1. クライアントが、 制御用ポートを用いて 「PASV」 というコマンドをサーバへ送信。
2. サーバは、 データ用に使うポート番号 (1024 番以上) を決め、 そのポートを待ち受け状態にする。
3. サーバは 「227 Entering Passive Mode(aaa,bbb,ccc,ddd,eee,fff).」 の形式で応答し、 準備ができたことを告げる。
……次の 2 点がネックとなって、 クライアントからは接続できない。

◎ サーバは aaa,bbb,ccc,ddd に自身のプライベート IP を指定するので、 クライアントにプライベート IP への接続を指示する結果となる。 (松元様が No. 20937 で 「忘れている」 と指摘されている部分)
◎ サーバが eee,fff で指示されるポートで待ち受けていたとしても、 ルータの NAT 変換の設定がなされていない。

最近のルータは、 LAN 側に FTP サーバを設置した場合の NAT 越えに対応しています。
この 「対応」 とは、 一体どういう動作なのか?

1. クライアントが、 制御用ポートを用いて 「PASV」 というコマンドを送信。 これは、 そのままルータを通り、 サーバへ届く。
2. サーバは、 データ用に使うポート番号 (1024 番以上) を決め、 そのポートを待ち受け状態にする。
3. サーバは 「227 Entering Passive Mode(aaa,bbb,ccc,ddd,eee,fff).」 の形式で応答し、 準備ができたことを告げる。 aaa.bbb.ccc.ddd はサーバのプライベート IP、 eee と fff はサーバのポート番号。
4. この応答文字列がルータを通るときに、 ルータの内部で次の作業が行われる。
4.1. 応答文字列の aaa,bbb,ccc,ddd の部分を、 ルータのグローバル IP に書き替える。
4.2. ルータの WAN 側で使用していないポートを探し、 サーバが指示したプライベート IP ・ ポートに向けた NAT 変換の設定を行う。
4.3. eee,fff の部分は、 NAT 変換の設定を行ったポート番号に書き替える。
4.4. 書き替えた応答文字列を、 クライアントに送る。
5. クライアントは、 4.4. で指示されたアドレス ・ ポートへ接続を掛ける。 接続先の IP アドレスはルータのグローバル IP であり、 NAT 変換の設定も済んでいるので、 問題は起こらない。
6. 接続が確立すれば、 めでたしめでたし。

要点は次の 2 点。

◎ ルータが FTP の制御用通信を監視し、 必要に応じ内容を書き替えている。
◎ データ用ポートの設定は、 ルータが自動で行ってくれる。

> (1)パッシブモードでのFTP通信を実現させるには、NAT変換やファイアウォールをどのように設定すれば良いかという点が分かりません。

まず、 サーバ側のルータが、 FTP サーバ開設に対応しているかどうかを判定することが必要です。
LAN 外のクライアントから 「PASV」 コマンドを送ったときに、 返ってくる IP アドレスがプライベート IP か、 グローバル IP かで判断すればよいでしょう。
LAN 内だけで調べるのは、 ほぼ不可能です。

ルータが 「対応」 していれば、 NAT 変換の設定は制御用ポート 21 番のみで済みます。
ファイアウォールは自動では穴をあけてくれないので、 うまく設定しましょう。

> (2)また、パッシブモードでの通信にて、データ用のポートを1024番以降で特定の番号に固定することは出来ないということでしょうか。これが出来れば(1)は設定すれば良いだけなので、おそらく固定はできないのだと理解しておりますが。

FTP サーバ開設に 「対応」 していないルータ配下で使用するために、 一部の FTP サーバソフトは次のような動作を行うための設定項目を有しています。

◎ PASV に対する応答の aaa,bbb,ccc,ddd に入れるべき IP アドレスを指定できる。
◎ データポートとして使用するポート番号の範囲を指定できる。 ここで指定した番号のポート全てについて、 ルータで NAT 変換の設定を行う。 複数のクライアントから同時に利用されることなどを考慮し、 ある程度余裕を見た数量のポートを用意する。

aaa,bbb,ccc,ddd は、 LAN 外のクライアントに対してはグローバル IP が、 LAN 内に対してはプライベート IP が入るよう設定する必要があるなど、 設定は多少面倒です。

以下おまけ:
> FTPを外部の人(知人宅)などから利用してもらうには、理論上(?)ポートモードでは知人宅側のルーターにNAT変換テーブルを設定したりしないといけないということから、パッシブモードでのFTP通信を可能にしたいと思っております。

NAT 変換の設定を行う必要があるのは事実です。
ただ、 サーバの場合と同様、 配下のクライアントが PORT モードを使用したときも、 多くのルータでは自動で設定を行ってくれます。


Re: ルータの 「FTP サーバ対応」 とは

No.20940 投稿時間:2006年09月13日(Wed) 00:47 投稿者名:メロン URL:

通行人様 ご返答・アドバイス有難う御座います!

FTPの通信の流れから詳細を頂きまして、私が調査・設定していく点が明確になってきました!
これでとにかく前へ進めそうです!

(1)ルーターがNAT越えに対応する機種がどうか?
(2)(1)が×の場合、FTPサーバ側でPASVコマンドの返答を、デーモンの設定によりグローバルアドレスとして
返答できるようにする。
(3)サーバー側のファイアウォール設定を通せるようにする。(とりあえずは一時的に無効にして通るかを見てみます。)
(4)上記で駄目な場合、FTPサーバソフトで、PASVコマンド返答時のIPアドレス、データポートを指定できるものを探す。

という具合で進めていこうと思います。
FTPの通信について、詳細にわたりご記入頂き有難うございました!


目次掲示板過去ログ目次▲頁先頭