EPSV 仍然会另开一条 FTP 数据连接。它改变的是端点信息,而不是连接数量。

传统的 PASV 应答给出地址和端口。该地址在服务器网络之外可能不可用。EPSV 给出端口,并使用与控制连接相关联的服务器地址。

经由代理时,要保留 FTP 服务器的逻辑身份。中间设备的监听地址并不自动就是拥有所返回数据端口的服务器。

数据连接还需要既定的代理路径,以及到达所选端口的权限。接受一条发往 FTP 控制端口的 CONNECT,并不等于放行随后的每一条数据连接。

在禁用 EPSV 之前,检查被动应答,以及为传输请求的服务器地址和端口。FTP 登录成功只建立控制连接;数据连接仍待验证。使用 Python ftplib 时,同时追踪两个 socket 构造器,而不是只依赖 PySocks 的默认行为。

相关文章