kukai88

垢 - やったことを残す -

アクティブモード/パッシブモード

アクティブモードとパッシブモードとは?

FTP 通信では 2 つのポートを使用して通信します。1 つは「制御用」、もう 1 つは「データ転送用」です。FTP 通信を行う際にクライアントとサーバでコネクションを確立します。
アクティブモードとパッシブモードでは、このコネクションの張り方・向きに違いがあります。

コネクションの向きの違い

データ転送用のコネクションの向きに違いがあります。アクティブモードはサーバーからですが、パッシブモードはクライアントからになります。

  • アクティブモード
    • 制御(FTP/FTPS 通信の開始):クライアント →→→ サーバー
    • データ転送:クライアント ←←← サーバー
  • パッシブモード
    • 制御(FTP/FTPS 通信の開始):クライアント →→→ サーバー
    • データ転送:クライアント →→→ サーバー


ポート番号の違い

データ転送用のポート番号に違いがあります。アクティブモードは 22 番ポートですが、パッシブモードは任意のポート番号を使用します。

  • アクティブモード
    • 制御(FTP/FTPS 通信の開始):クライアント →→ 21 番ポート →→ サーバー
    • データ転送:クライアント ←← 22 番ポート ←← サーバー
  • パッシブモード
    • 制御(FTP/FTPS 通信の開始):クライアント →→ 21 番ポート →→ サーバー
    • データ転送:クライアント →→ (任意のポート番号) →→ サーバー


任意のポート番号の指定方法

任意のポート番号を指定するには /etc/proftps/proftps.conf ファイル を下のように変更します。パッシブモードのポートを有効にして、使用するポート番号の範囲を指定します。

# PassivePorts          49152  65634
↓
PassivePorts          49152  65634

注:クライアントアプリの設定がパッシブモードになっている場合、上記の設定をしていないとデータ転送が行えません。(私の環境では Cyberduck のデフォルトはパッシブモードでした。)