クライアントとサーバーがデータソケットを確立する方法は、アクティブとパッシブの 2 つです。アクティブモードでは、サーバーがクライアントの指定したポートへ 折り返し 接続します。クライアントが NAT の内側にいると問題が起きることがあります。代替はパッシブモードで、サーバーが追加のポートを開き、クライアントがそのポートへ接続します。アクティブ FTP とパッシブ FTP の概要は Active FTP vs. Passive FTP, a Definitive Explanation ↗ を参照してください。
パッシブモードでは、クライアントが接続すべきポートを FTP サーバーが伝えます。これは制御ソケット上の PASV コマンドで行われます。デフォルトでは、FTP サーバーは自身が待ち受けている IP アドレスを返します。公開 IP 上で直接動いているサーバーでは問題ありませんが、サーバーが NAT、ファイアウォール、Cloudflare Spectrum の内側にあると問題になります。
一方、より新しい FTP サーバーソフトウェアは FTP 拡張 ↗ をサポートし、クライアントが接続すべき IP アドレスを省略する EPSV コマンドを導入しています。代わりに、クライアントは制御プレーンと同じ IP に接続します。
動作するものとしないもの
Spectrum が保護できるのは、パッシブモードのみ で FTP トラフィックを提供するサーバーです。アクティブモードはサポートしません。オリジンサーバーから見ると、実際のクライアント IP ではなく Spectrum の IP がクライアントになるためです。クライアントが自身の IP で PORT コマンドを発行すると、2 つのアドレスが一致しないため FTP サーバーは拒否します。