被动模式下VSFTP的连接数

Ste*_*eng 5 linux ftp

使用被动模式时,如果我们将 pasv_max_port 设置为 10100,将 pasv_min_port 设置为 10090。是否意味着 VSFTP 服务器只能同时为 10 个客户端提供服务?

我们可以为 pasv_max_port 和 pasv_min_port 设置相同的端口号吗?如果可能,VSFTP 服务器可以同时处理多少个客户端?只有一个?

kri*_*sFR 6

为简化起见,我会说是的,这就是您应该考虑的方式(在我看来)。

限制端口范围将根据您在 min 和 max 之间拥有的端口数限制并发客户端连接。这样你就可以避免奇怪的行为。

但是,事实上这是不正确的,必须进行审核:-)

更深入更精确:限制端口会影响数据通道的并发使用

请注意,新的连接请求需要一个可用的数据通道。

我不知道所有使用数据通道的 FTP 命令,但基本上上传(STOR)、下载(RETR)、列表(LIST)命令需要数据通道。


为了说明这一点,我刚刚使用我的 vsftpd 服务器和这些设置在实验室(您可以复制)中进行了测试:

pasv_max_port=10100
pasv_min_port=10100
Run Code Online (Sandbox Code Playgroud)

1.第一次测试:

  • 我与 Client1 连接:好的
  • 当 Client1 仍然连接时,我与 Client2 连接:好的
  • 我与 Client3 连接,而 Client1 和 Client2 仍然连接:好的

为什么 ?

  • Client2 能够连接,因为 Client1 什么都不做(空闲)并且没有使用数据通道,因此服务器已将端口分配给 Client2。
  • Client3 能够连接是因为 Client1 和 Client2 空闲并且没有使用数据通道,因此服务器已将端口分配给 Client3。

2. 第二次测试:

  • 我与 Client1 连接并开始上传文件:文件上传正在进行中
  • 我在 Client1 上传仍在运行时与 Client2 连接:错误无法连接
  • 我等待 Client1 上传完成
  • 一旦 Client1 上传完成,我就可以与 Client2 连接。

为什么 ?

  • 由于 Client1 正在使用数据通道进行上传,Client2 无法连接,因为服务器端没有更多可用端口为其提供服务。
  • Client1 上传完成后,服务器释放数据通道端口,Client2 可以使用它进行连接。

3. 第三次测试:

  • 我与 Client1 连接:好的
  • 当 Client1 仍然连接时,我与 Client2 连接:好的
  • 我开始从 Client1 上传到 ftp 服务器:好的上传正在进行中
  • 我开始从 Client2 上传到 ftp 服务器,而 Client1 上传仍在运行:服务器关闭错误连接。转移失败。

为什么 ?

测试 1 和测试 2 的混合:

  • Client2 能够连接,因为 Client1 什么都不做(空闲)并且没有使用数据通道,因此服务器已将端口分配给 Client2。
  • 客户端 1 能够上传文件,因为客户端 2 处于空闲状态,因此服务器已将端口分配给客户端 1 以进行上传。
  • 客户端 2 无法上传文件,因为客户端 1 已在使用数据传输端口进行上传

现在你可以理解为什么我在开始时谈论“奇怪”的行为了。

希望它会有所帮助!