データポートを1つのポートのみにロックする場合の複数の同時FTPセッションの問題に関する明確で技術的な説明は、私が最も深く知りたいと思っていることです。いつ機能するか、いつ機能しないか、なぜ推奨されないかなど。
私はそれをテストしていないので、これはワイルドな推測になります。自分で試してみて、見逃したかもしれない他の問題があるかどうかを確認する必要があります。
パッシブポートの範囲を1つのポートに制限できると思います。実際、この質問では、実際には小さなポート範囲が使用されていることがわかります。理論的には、複数の同時接続をサポートするには、ローカルIP、ローカルポート、リモートIP、リモートポートの4つの値のみが必要です。これは、異なる接続を識別する方法です。
サーバー上のポートを単一の値にロックダウンした場合、残っている変数はクライアントが使用するポートのみです。クライアントが選択できる無料の一時ポートの十分なプールを持っている限り、これは問題ではありません。重いNATを実行していない限り、これについて心配する必要はありません。さて、これは純粋に理論的なものであることに注意してください:サーバーで複数のポートを使用した場合、有効にすることで仮想の同時接続数を増やすことができますnumber of ports in range
クライアント側の1ポートあたりの接続。しかし、これをサポートするFTPクライアントの実装があるとは思えないので、実際には起こりません(あまり意味をなさないため)。さらに、クライアントがこのように一時ポートを共有する必要があり、新しいポートを開くことができない場合、対処する必要のある重大な問題がはるかに多くなります。したがって、この観点から、単一のポートを使用して完全に安全である必要があります。
単一のポートでは不十分な理由を考えてみましょう。
まず最初に、本当にバグの多いFTPサーバーの実装が、クライアントのデータ転送を識別する方法としてローカルポート番号のみを使用する状況を考え出すことができました。繰り返しますが、まともなFTPdがそれを行うとは思いません。
実際の問題(はい、上記をすべて主要な余談として無視できます ;-))は、パッシブポートの範囲が非特権範囲にあることです。
つまり、選択したポート番号は それ自体予約されておらず、実際には、FTPサーバーが実行する前に(root権限を必要としない)任意のユーザープロセスがそれを取得できます。選択できるポートのプールが豊富な場合は、ランダムな空きポートを取得するだけです。使用するのが1つだけで、すでに使用している場合は、転送を適切に処理できません。
答えが少し推測しすぎているように思える場合は、申し訳ありません。正直に言うと、単一のポートを使用しない理由を見つけるために一生懸命努力しましたが、最後のビットを除けば、それに対する確固たる証拠は考えられませんでした。それにもかかわらず、あなたが提起する興味深い挑戦的な質問。