当使用被动模式时,如果我们将 pasv_max_port 设置为 10100,将 pasv_min_port 设置为 10090,这是否意味着 VSFTP 服务器只能同时为 10 个客户端提供服务?
我们可以将 pasv_max_port 和 pasv_min_port 设置为相同的端口号吗?如果可以,VSFTP 服务器可以同时处理多少个客户端?只能处理一个?
答案1
简化,我会说是的,你就应该这样考虑(在我看来)。
限制端口范围将根据您拥有的端口数量(介于最小值和最大值之间)限制同时客户端连接。这样您就可以避免出现奇怪的行为。
但事实上这并不属实,必须加以控制:-)
更深入、更准确地说:限制端口会影响数据通道的并发使用。
请注意,新的连接请求需要可用的数据通道。
我不知道所有使用数据通道的 FTP 命令,但基本上上传(STOR)
、下载(RETR)
、列表(LIST)
命令都需要数据通道。
为了说明这一点,我刚刚在实验室中使用我的 vsftpd 服务器和以下设置在以下设置进行了测试(您可以重现):
pasv_max_port=10100
pasv_min_port=10100
1.第一次测试:
- 我与 Client1 建立连接:ok
- 我与 Client2 建立连接,同时 Client1 仍处于连接状态:ok
- 我与 Client3 建立连接,同时 Client1 和 Client2 仍处于连接状态:ok
为什么 ?
- Client2 能够连接,因为 Client1 没有执行任何操作(空闲)并且没有使用数据通道,所以服务器已将端口分配给 Client2。
- Client3 能够连接,因为 Client1 和 Client2 处于空闲状态且未使用数据通道,因此服务器已将端口分配给 Client3。
2.第二次测试:
- 我连接 Client1 并开始上传文件:ok 文件上传正在进行中
- 我连接了 Client2,而 Client1 的上传仍在运行:错误:无法连接
- 我等待 Client1 上传完成
- 一旦 Client1 上传完成,我就可以连接 Client2。
为什么 ?
- 由于客户端 1 正在使用数据通道进行上传,客户端 2 无法连接,因为服务器端没有可用的端口为其提供服务。
- 一旦客户端 1 上传完成,服务器就会释放数据通道端口,客户端 2 就可以使用它进行连接。
3.第三次测试:
- 我与 Client1 建立连接:ok
- 我与 Client2 建立连接,同时 Client1 仍处于连接状态:ok
- 我从 Client1 开始上传到 ftp 服务器:ok,上传正在进行中
- 我从 Client2 开始上传到 ftp 服务器,而 Client1 的上传仍在运行:错误:服务器关闭连接。传输失败。
为什么 ?
测试 1 和测试 2 的混合:
- Client2 能够连接,因为 Client1 没有执行任何操作(空闲)并且没有使用数据通道,所以服务器已将端口分配给 Client2。
- Client1 能够上传文件,因为 Client2 处于空闲状态,所以服务器已将端口分配给 Client1 以供其上传。
- Client2 无法上传文件,因为 Client1 已使用数据传输端口进行上传
现在你可以理解为什么我在开始时谈论“奇怪”的行为。
希望它能有所帮助!