回答:
アクティブとパッシブは、FTPを実行できる2つのモードです。
背景として、FTPは実際にはクライアントとサーバー間で2つのチャネルを使用します。コマンドチャネルとデータチャネルは、実際には個別の TCP接続です。
コマンドチャネルはコマンドと応答用で、データチャネルは実際にファイルを転送するためのものです。
このようにコマンド情報とデータを別々のチャネルに分離することで、現在のデータ転送が完了するのを待たずにサーバーにコマンドを送信できるようになります。RFCによると、これは、終了、現在の転送の中止、ステータスの取得など、コマンドのサブセットにのみ必須です。
では、アクティブモードでは、クライアントはコマンドチャネルを確立しますが、サーバーは、データチャネルを確立する責任があります。これは、たとえば、クライアントマシンがファイアウォールで保護されていて、外部の関係者からの不正なセッション要求を許可しない場合に、実際に問題になる可能性があります。
では、パッシブモードでは、クライアントが確立し、両方のチャネルを。アクティブモードでコマンドチャネルを確立することはすでに知っています。ここでも同じことが行われます。
ただし、その後、クライアントへの接続を確立しようとするのではなく、(コマンドチャネル上で)サーバーに(サーバーの裁量で)ポートのリッスンを開始するように要求します。
この一環として、サーバーは、リッスンするように選択したポート番号もクライアントに返します。これにより、クライアントは、サーバーへの接続方法を認識します。
クライアントはそれを知ると、データチャネルを正常に作成して続行できます。
詳細については、RFCをご覧ください:https : //www.ietf.org/rfc/rfc959.txt
最近、職場でこの質問に遭遇したので、もう少しここで言いたいと思います。前の回答の追加ソースとしてFTPがどのように機能するかを説明するために画像を使用します。
アクティブモード:
パッシブモード:
アクティブモード構成では、サーバーはランダムなクライアント側ポートへの接続を試みます。そのため、そのポートは事前定義されたポートの1つではない可能性があります。その結果、それに接続する試みはファイアウォールによってブロックされ、接続は確立されません。
パッシブ構成では、クライアントが接続を開始するため、この問題は発生しません。もちろん、サーバー側にファイアウォールを設定することも可能です。ただし、サーバーはクライアントと比較してより多くの接続要求を受信することが期待されているため、サーバー管理者が状況に適応し、選択したポートを開いてパッシブモードの構成を満たすことは論理的です。
したがって、パッシブモードのFTPをサポートするようにサーバーを構成することをお勧めします。ただし、パッシブモードでは、クライアントがランダムなサーバーポートに接続することになっているため、システムが攻撃に対して脆弱になります。したがって、このモードをサポートするには、サーバーで複数のポートを利用できるようにする必要があるだけでなく、ファイアウォールでそれらすべてのポートへの接続が通過できるようにする必要があります。
リスクを軽減するための適切な解決策は、サーバーでポートの範囲を指定し、ファイアウォールでその範囲のポートのみを許可することです。
詳しくは公式ドキュメントをご覧ください。
私の記事の編集バージョンFTP接続モード(アクティブvsパッシブ):
FTP接続モード(アクティブまたはパッシブ)。データ接続の確立方法を決定します。どちらの場合も、クライアントはFTPサーバーコマンドポート21へのTCP制御接続を作成します。これは、他のファイル転送プロトコル(SFTP、SCP、WebDAV)または他のTCPクライアントアプリケーション(Webブラウザーなど)と同様に、標準の送信接続です。 )。したがって、通常、制御接続を開くときに問題はありません。
FTPプロトコルが他のファイル転送プロトコルに比べて複雑なのはファイル転送です。他のプロトコルは、セッション制御とファイル(データ)転送の両方に同じ接続を使用しますが、FTPプロトコルは、ファイル転送とディレクトリリストに別々の接続を使用します。
では、アクティブモードでは、クライアントが(クライアントがFTPコマンドを送信し、サーバからの受信データ接続のためのランダムなポートでリッスンを開始しPORT
、それがリッスンしているポート上のサーバーに通知します)。今日では、クライアントがファイアウォール(組み込みのWindowsファイアウォールなど)またはNATルーター(ADSLモデムなど)の背後にあり、着信TCP接続を受け入れることができないのが一般的です。
このため、パッシブモードが導入され、現在ではほとんどが使用されています。複雑な構成のほとんどは、(おそらく)経験の浅いユーザーがクライアント側で個別に行うのではなく、経験豊富な管理者がサーバー側で一度だけ行うので、パッシブモードを使用することをお勧めします。
では、パッシブモードでは、クライアントが送信する制御接続を使用してPASV
サーバーにコマンドをし、その後、クライアントは、サーバのIPアドレスとサーバへのデータ接続を開くために使用するサーバーからサーバーのIPアドレスとサーバーのポート番号を受け取り、受信したポート番号。
パッシブモード、設定負担のほとんどは、サーバー側です。サーバー管理者は、以下の説明に従ってサーバーをセットアップする必要があります。
FTPサーバー側のファイアウォールとNATは、FTPポート21での着信接続を許可/ルーティングするだけでなく、着信データ接続用のポートの範囲も構成する必要があります。通常、FTPサーバーソフトウェアには、サーバーが使用するポートの範囲を設定する構成オプションがあります。また、同じ範囲をファイアウォール/ NATで開いてルーティングする必要があります。
FTPサーバーがNATの背後にある場合、それは外部IPアドレスであることを認識する必要があるため、PASV
コマンドへの応答でクライアントに提供できます。
では、アクティブモード、設定負担のほとんどは、クライアント側にあります。
クライアント側のファイアウォール(Windowsファイアウォールなど)およびNAT(ADSLモデムルーティングルールなど)は、着信データ接続のポートの範囲を許可/ルーティングするように構成する必要があります。Windowsでポートを開くには、[コントロールパネル]> [システムとセキュリティ]> [Windowsファイアウォール]> [詳細設定]> [受信ルール]> [新しいルール]に移動します。NATのポート(存在する場合)のルーティングについては、そのドキュメントを参照してください。
ネットワークにNATがある場合、FTPクライアントは、WinSCPがPORT
コマンドを使用してFTPサーバーに提供する必要のある外部IPアドレスを知る必要があります。サーバーがクライアントに正しく接続してデータ接続を開くことができるようにします。FTPクライアントには、外部IPアドレスを自動検出できるものもあれば、手動で構成する必要があるものもあります。
一部のファイアウォール/ NATは、FTP制御接続を検査してデータポートを自動的に開閉したり、制御接続トラフィックのデータ接続IPアドレスを変換したりします。
このようなファイアウォール/ NATを使用すると、プレーンな暗号化されていないFTPでは上記の設定は必要ありません。ただし、制御接続トラフィックは暗号化されており、ファイアウォール/ NATはそれを検査または変更できないため、これはFTPSでは機能しません。
アクティブモード:-serverは接続を開始します。
パッシブモード:-clientは接続を開始します。
アクティブモード-クライアントはサーバーにPORTコマンドを発行し、データ接続を開いてクライアントに戻すためのIPおよびポート番号を「アクティブに」提供することを通知します。
パッシブモード-クライアントはPASVコマンドを発行して、サーバーがIPおよびポート番号を提供するのを「パッシブ」に待機し、その後クライアントがサーバーへのデータ接続を作成することを示します。
上記の良い答えはたくさんありますが、このブログ投稿にはいくつかの役立つグラフィックが含まれており、かなりしっかりした説明を提供しています。https://titanftp.com/2018/08/23/what-is-the-difference-between-active-and -パッシブftp /