パッシブモードでの VSFTP の接続数

パッシブモードでの VSFTP の接続数

パッシブ モードで作業しているときに、pasv_max_port を 10100 に、pasv_min_port を 10090 に設定すると、VSFTP サーバーは同時に 10 個のクライアントしか処理できないことを意味しますか?

pasv_max_port と pasv_min_port の両方に同じポート番号を設定できますか? 可能な場合、VSFTP サーバーは同時にいくつのクライアントを処理できますか? 1 つだけですか?

答え1

簡単に言うと、私はそう言うでしょう、そしてそれはあなたがそれをそのように考えるべきだと(私の意見では)思います。

ポート範囲を制限すると、最小と最大のポート数に応じて同時クライアント接続が制限されます。これにより、異常な動作を回避できます。

しかし、実際にはそれは真実ではなく、抑制されなければなりません :-)

さらに深く、より正確に言うと:ポートの制限はデータチャネルの同時使用に影響する

新しい接続要求には利用可能なデータ チャネルが必要であることに注意してください。

データ チャネルを使用するすべての FTP コマンドについては把握していませんが、基本的にアップロード(STOR)、ダウンロード(RETR)、リスト(LIST)コマンドにはデータ チャネルが必要です。


これを説明するために、私は自分の vsftpd サーバーと次の設定を使用してラボでテスト (再現可能) を実行しました。

pasv_max_port=10100
pasv_min_port=10100

1. 最初のテスト:

  • クライアント1に接続します: OK
  • クライアント1がまだ接続されている間にクライアント2に接続します: OK
  • クライアント1とクライアント2がまだ接続されている間にクライアント3に接続します: OK

なぜ ?

  • クライアント 1 は何もせず (アイドル状態)、データ チャネルを使用していなかったため、クライアント 2 は接続できました。そのため、サーバーはポートをクライアント 2 に割り当てました。
  • クライアント 1 とクライアント 2 がアイドル状態でデータ チャネルを使用していなかったため、クライアント 3 は接続できました。そのため、サーバーはポートをクライアント 3 に割り当てました。

2. 2回目のテスト:

  • クライアント1に接続し、ファイルのアップロードを開始します。ファイルのアップロードが進行中です。
  • クライアント1のアップロードがまだ実行されている間にクライアント2に接続しました: エラー、接続できません
  • クライアント1のアップロードが完了するのを待ちます
  • クライアント1のアップロードが完了すると、クライアント2に接続できるようになりました。

なぜ ?

  • クライアント 1 がアップロードにデータ チャネルを使用していたため、サーバー側にクライアント 2 にサービスを提供できるポートがなくなり、クライアント 2 は接続できませんでした。
  • クライアント 1 のアップロードが完了すると、サーバーはデータ チャネル ポートを解放し、クライアント 2 はそれを使用して接続できるようになりました。

3. 3回目のテスト:

  • クライアント1に接続します: OK
  • クライアント1がまだ接続されている間にクライアント2に接続します: OK
  • クライアント1からFTPサーバーへのアップロードを開始します: OK、アップロード進行中
  • クライアント 1 のアップロードがまだ実行されている間に、クライアント 2 から FTP サーバーへのアップロードを開始します: エラー: サーバーによって接続が閉じられました。転送に失敗しました。

なぜ ?

テスト 1 とテスト 2 の組み合わせ:

  • クライアント 1 は何もせず (アイドル状態)、データ チャネルを使用していなかったため、クライアント 2 は接続できました。そのため、サーバーはポートをクライアント 2 に割り当てました。
  • クライアント 2 がアイドル状態であるため、サーバーはアップロード用にクライアント 1 にポートを割り当てており、クライアント 1 はファイルをアップロードできます。
  • データ転送ポートがすでにクライアント1によってアップロードに使用されているため、クライアント2はファイルをアップロードできません。

これで、私が最初に「奇妙な」行動について話していた理由がお分かりいただけると思います。

役に立つことを願っています!

関連情報