it-swarm-ja.com

FTPでは、パッシブモードと拡張パッシブモードの違いは何ですか?

パッシブモードFTP(PASV)と拡張パッシブモードFTP(EPSV)の違いを簡単に説明できますか?

17
CGCampbell

唯一の違いはPORT/PASVはIPv4に制限されていますが、EPRT/EPSV任意のネットワークプロトコルで動作します(実際にはIPv6のみが使用されます)。

FTP制御プロトコルの標準PORT(アクティブ)およびPASV(パッシブ)コマンドは、アドレスとポート情報を交換しますassix 1-byte decimals、そこから、もう一方の端は4バイトのIPアドレスと2バイトのTCPポート番号。

PORT <address[4]>,<port[2]>

PORT 132,235,1,2,24,131

しかし、その後、他のプロトコルが表示され始めました。IPv4は、「IPng」に置き換えられようとしており、かなりの数の競合する置き換え提案(OSI CLNP、TUBA、 SIP、SIPP、CATNIP –履歴のさまざまな時点で)、一部はより短く、より長く、さらにvariableホストアドレスサイズ、16バイトアドレスのIPv6が最終的に定義されるまで。

より多くのバイトを送信するだけではうまくいかなかったでしょう–サーバーとクライアントは、純粋にアドレス長に基づいて正しいプロトコルを知ることを期待できませんでした。 (たとえば、16バイトのアドレス+ 4バイトのポートを持つ1つのプロトコルと、12バイトのアドレス+ 12バイトのポートを持つ別のプロトコルがある場合はどうなりますか?)

その上、これは20年前はそれほど重要ではなかったにもかかわらず、最近ではインターネット上に何百万ものNATデバイスが存在し、FTP制御接続を検査して壊します。 「内部」ホストがRFC1918ローカルアドレスを送信した場合でも、「外部」ホストはグローバルIPv4アドレスしか認識しないことに注意してください。 NATがなくても、ステートフルファイアウォールは制御コマンドを監視して、手動ルールなしでデータ接続を自動的に許可することがよくあります。

これは基本的に、PORTまたはPASVを使用してより多くの数値を送信するだけで、多くの人が失敗することが保証されることを意味します。おそらく、一部のファイアウォールは、一部のアドレスバイトを静かにポートとして誤って解釈し、残りを静かに破棄します。他の人は接続を落とすか、単にクラッシュするかもしれません。

上記のようなさまざまな問題を回避するには、FTPでマルチプロトコルをサポートするための新しいコマンドを導入する必要がありました。

1993年に、RFC 1639(元々 RFC 1545 )が "long address" LPRTおよびLPSVコマンドは、PORTPASVのようでしたが、 可変アドレス長;プロトコルタイプ識別子も含まれています。 (ただし、構文は変更されませんでした。IPv6アドレス:ポートは、6ではなく21の数値として送信されます。)

LPRT <protocol>,<addr-length>,<address...>,<port-length>,<port...>

LPRT 4,4,132,235,1,2,2,24,131

LPRT 6,16,16,128,0,0,0,0,0,0,0,8,8,0,32,12,65,122,2,20,162

ただし、それでもサーバーに制御接続とは異なるプロトコルを使用するように要求するなど、いくつかの問題は修正されませんでした。 RFCもすぐに古くなりました。 IPv6が1年後に登場したとき、LPRTに割り当てられたLPRTプロトコル識別子がなかったため(さまざまな初期の提案のみ)、IPv6はLPRTでは使用できません

これを修正するには、1998年にRFC 2428EPRTを追加し、 EPSV、別名「拡張ポート」および「拡張パッシブ」。これには、両端がサポートするプロトコルをネゴシエートする方法もありました。 「拡張」コマンドはまた、人が読める形式でアドレスを送信します– IPv6の場合、これは一連の別々の10進数ではなく、16進数とコロン表記を使用することを意味します。

EPRT x<protocol>x<address>x<port>x

EPRT |1|132.235.1.2|6275|

EPRT |2|1080::8:800:200C:417A|5282|

結論として、IPv6サポートが唯一の違いです。

20
user1686

アクティブとパッシブの違いはすでに答えられています。エクステントパッシブ(EPSV)は、IPv4およびIPv6ではパッシブです。これは、PASVへの応答の構文がIPv4に固有であり、IPv6に新しいコマンドが必要だったためです。アクティブモードでのEPTR対PORTと同じです。 EPRTとEPSVには、ポートとPASVのようにIPとポートではなくポートのみを含めることができるという点で、わずかに異なる動作があります。したがって、データ転送は、制御接続を持つシステム間でのみ実行できます。 PORTとPASVを使用すると、他のシステム間でデータ接続を作成することができます(ただし、これは現在、悪い設計とセキュリティリスクと見なされています)。

1
Steffen Ullrich