Ubuntu下vsftpd传输模式选择指南
主动模式与被动模式的关键差异在于数据连接的建立方向:
PORT命令告知服务器该端口,服务器从自身的20端口向客户端端口发起连接。这种模式适用于客户端网络环境简单(无防火墙或允许入站连接)的场景。PASV命令向服务器请求一个临时端口,服务器告知客户端该端口,客户端主动向服务器端口发起连接。这种模式适用于客户端位于防火墙/NAT后(仅允许出站连接)的常见场景。在/etc/vsftpd.conf中启用主动模式及相关参数:
# 启用独立监听模式(必需)
listen=YES
# 允许服务器从20端口发起数据连接(主动模式核心)
connect_from_port_20=YES
配置完成后,重启vsftpd服务使更改生效:
sudo systemctl restart vsftpd
在/etc/vsftpd.conf中启用被动模式并设置端口范围(避免端口冲突):
# 启用被动模式(必需)
pasv_enable=YES
# 设置被动模式端口范围(建议选择1024-65535之间的未使用端口段)
pasv_min_port=50000
pasv_max_port=50100
配置完成后,重启vsftpd服务:
sudo systemctl restart vsftpd
无论选择哪种模式,都需要确保防火墙允许FTP相关流量:
pasv_min_port至pasv_max_port指定的端口范围(如50000-50100)。以Ubuntu默认的ufw防火墙为例,配置命令如下:
# 允许FTP控制连接
sudo ufw allow 21/tcp
# 允许被动模式端口范围(根据配置调整)
sudo ufw allow 50000:50100/tcp
# 启用防火墙
sudo ufw enable
sudo systemctl status vsftpd
若显示“active (running)”,则服务正常运行。/var/log/vsftpd.log日志文件定位具体原因(如端口未开放、配置错误)。