FTPサーバーへ接続出来る理由、出来ない理由
同一ネットワークの場合
サーバー、クライアントが同じネットワーク内にある場合、
接続に関してトラブルが起こることはまず有りません。
Passiveモード、Activeモードのどちらであっても、
通知された接続先IPアドレスへそのままデータコネクションを接続することが可能だからです。
クライアントがプライベートネットワーク内
クライアントがプライベートネットワーク内にある場合はActiveモードでは、
サーバからのデータコネクションの接続時にプライベートネットワーク内のクライアントに接続できないため、失敗してしまいます。
多くのFTPクライアントがPassiveモードを推奨するのはこのためです。
しかし、実際にActiveモードで通信を行っても正常に動作する場合があります。
これは、ルーターがFTPプロトコルの「PORT」コマンドを検出し、
接続先IPアドレスのすり替えと接続先ポートをプライベートネットワークへフォワードするようにしているためです。
この場合サーバーでは「PORT」コマンドにルータのIPアドレスがセットされ、
見かけ上ルーターと通信していると錯覚することになります。
ただし、ルーターの機能に頼りすぎるのは、大変危険です。
MagicMirrorのような短時間に大量のデータコネクションを作成するプログラムでは、
ルーターの能力が不足し、通信できなくなったり、ハングアップすることもあります。
Passiveモードで無難に切り抜けましょう。
サーバーがプライベートネットワーク内
逆にサーバーがプライベートネットワークにある場合はどうでしょうか?
この場合はPassiveモード、Activeモード共に正常に動作するでしょう。
これは、通常サーバーの管理者が中間のルーターやサーバー「PASV」コマンドのレスポンスなどを
適切に設定しているためです。
適切な設定がされている場合、
クライアントからは、接続先がプライベートネットワークにあるのか、直接接続をしているのかはわからないでしょう。
自宅のプライベートネットワーク内にFTPサーバーを構築すれば、
ルーターが自動変換をしてくれない限り、外部からPassiveモードでの接続は出来ないでしょう。
続きへ