vsftpd 连接变慢通常与 DNS 解析、网络配置或 vsftpd 本身的设置有关。以下是几种常见原因及解决方案:
vsftpd 默认会尝试对客户端 IP 进行反向 DNS 解析,这可能导致连接延迟。
解决方案:
编辑 /etc/vsftpd.conf
文件:
reverse_lookup_enable=NO
被动模式(PASV)连接问题可能导致延迟。
解决方案:
在 /etc/vsftpd.conf
中添加:
pasv_enable=YES
pasv_min_port=60000
pasv_max_port=61000
pasv_address=你的服务器公网IP
确保防火墙允许 FTP 端口(21)和数据端口范围通过。
对于 iptables:
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 60000:61000 -j ACCEPT
SELinux 可能阻止 FTP 连接。
解决方案:
setsebool -P ftp_home_dir on
setsebool -P allow_ftpd_full_access on
编辑 /etc/sysctl.conf
:
net.ipv4.tcp_window_scaling = 1
net.ipv4.tcp_timestamps = 1
net.ipv4.tcp_sack = 1
然后执行 sysctl -p
使设置生效。
不正确的 MTU 设置可能导致数据包分片和延迟。
检查 MTU:
ping -M do -s 1472 目标IP
如果失败,逐步减小 1472 直到成功,然后设置合适的 MTU。
在 /etc/vsftpd.conf
中启用详细日志:
log_ftp_protocol=YES
xferlog_std_format=NO
然后检查日志 /var/log/vsftpd.log
查找问题。
确保使用最新版本:
yum update vsftpd # CentOS/RHEL
apt-get update && apt-get upgrade vsftpd # Debian/Ubuntu
使用 time
命令测试连接时间:
time ftp 服务器IP
应用这些更改后,记得重启 vsftpd 服务:
service vsftpd restart
# 或
systemctl restart vsftpd
如果问题仍然存在,可能需要检查网络基础设施或联系网络管理员进一步排查。