使用被动模式时,如果我们将pasv_max_port设置为10100,pasv_min_port设置为10090.这是否意味着VSFTP服务器只能同时服务10个客户端?
我们可以设置一个相同的端口号pasv_max_port和pasv_min_port? 如果可能的话,VSFTP服务器可以同时处理多less个客户端? 只有一个?
为了简化 ,我会说是的,这就是你应该考虑的(在我看来)。
限制端口范围将根据最小和最大端口之间的端口数限制同时连接的客户端连接。 这样你会避免怪异的行为。
但是,事实并非如此,必须加以处理:-)
进一步深入更准确地说: 限制端口会影响数据通道的共同使用 。
请注意,新的连接请求需要可用的数据通道。
我不知道所有使用数据通道的FTP命令,但基本上传(STOR) ,下载(RETR) ,列表(LIST)命令需要数据通道。
为了说明这一点,我刚刚用我的vsftpd服务器和这些设置在实验室(你可以重现)做一个testing:
pasv_max_port=10100 pasv_min_port=10100
1.第一次testing:
- 我连接到Client1:好的
- 当Client1仍然连接时,我连接到Client2:ok
- 我连接Client3而Client1和Client2仍然连接:好的
为什么?
- Client2能够连接,因为Client1什么都不做(空闲),并没有使用数据通道,所以服务器已经将端口分配给Client2。
- Client3能够连接,因为Client1和Client2空闲而没有使用数据通道,所以服务器已经将端口分配给了Client3。
2.第二次testing:
- 我连接到Client1并开始上传文件:正在上传文件
- 当Client1上传仍在运行时,我连接到Client2:ERROR无法连接
- 我等待Client1上传完成
- 一旦Client1上传完成,我就可以连接到Client2。
为什么?
- 由于Client1正在使用数据通道进行上传,因此Client2无法连接,因为服务器端没有更多的可用端口来为其服务。
- 一旦Client1上传完成,服务器释放数据通道端口和Client2就可以使用它来连接。
3.第三个testing:
- 我连接到Client1:好的
- 当Client1仍然连接时,我连接到Client2:ok
- 我从Client1开始上传到FTP服务器:确定上传正在进行中
- 当客户端1上传仍在运行时,我从客户端2开始上传到FTP服务器:错误连接被服务器closures。 Transfert失败。
为什么?
testing1和testing2的组合:
- Client2能够连接,因为Client1什么都不做(闲置),并且没有使用数据通道,所以服务器已经将端口分配给了Client2。
- Client1能够上传文件,因为Client2处于空闲状态,因此服务器已将端口分配给Client1以进行上载。
- Client2无法上传文件,因为Client1已经在使用数据传输端口进行上传
现在你可以明白为什么我一开始就在谈论“怪异”的行为。
希望它会帮助!