我正在安装 FTP 服务器VSFTPD按照此教程,可以概括为:
apt-get install vsftpd
然后在配置文件中/etc/vsftpd.conf
取消注释行local_umask=022
和write_enable=YES
,并在末尾添加:lock_upload_files=NO chroot_local_user=YES force_dot_files=YES
并更改以下内容(随意将 8745 更改为您喜欢的端口):
pasv_enable=YES pasv_min_port=8745 pasv_max_port=8745
pasv_min_port
设置为与pasv_max_port
vsftpd 中相同的端口有什么影响?例如,它对性能有影响吗?
答案1
TL;博士:影响是您的 FTP 服务器一次仅支持 1 次传输。对于旨在为并发客户端提供服务的 FTP 服务器来说,这绝对是一个禁忌。对于仅一个人使用的私人 FTP 服务器可能没问题一次,只要该人愿意不允许同时进行多个传输即可。
FTP 协议(无论使用什么服务器软件,无论是它vsftpd
还是其他)以双通道方式工作。
第一个通道绑定到众所周知的端口 21,充当“控制通道”。该通道用于向服务器发送请求并接收服务器的回复。请求属于命令类型,例如“列出此目录”或“发送此文件”或“告诉我您支持的功能”等。回复属于与状态条件和简短、文本、易于解析的答案相关的类型。
第二个通道用于批量传输,例如构成发送或接收的文件的实际数据流,或构成目录列表的数据流。在最典型的使用场景中,建立这样的第二通道一经请求并持续只有一个操作,即每个传输的单个文件(或目录列表)都会在客户端和服务器之间从头开始建立一个新的通道(TCP 连接)。第一个通道(端口 21 上的通道)始终保持打开状态以用于控制目的。
在 FTP 被动模式下,服务器使用被动端口来选择一个端口进行侦听,同时等待来自请求文件传输/目录列表的客户端的临时第二通道(TCP 连接)。由于第二个通道不具有任何身份验证/标识,也不具有任何类型的“cookie”,因此服务器只能在其选择的端口和端口之间建立关联。具体的已请求的操作。那是:每个第二个通道紧密绑定到精确的文件或一个具体的请求的目录具体的客户。
因此,如果您只为服务器提供一个端口来选择第二个通道,则服务器一次只能支持一个“批量传输”。当前有多少客户端连接到端口 21 上的“控制通道”并不重要:在任何给定时刻,只有其中一个客户端会传输文件或列出目录,而在同一时刻请求传输的其他客户端将而是从服务器接收通知临时错误的回复。
换句话说,仅使用一个被动端口本质上就像一把大的互斥锁,用于坚持使用同一 FTP 服务器的 FTP 传输。