在 Linux 上使用 vsftpd(Very Secure FTP Daemon) 时,登录慢是一个非常常见的问题,通常不是网络本身慢,而是 vsftpd 在登录阶段做了某些“阻塞操作”。下面按最常见原因 → 排查方法 → 解决办法来说明。
vsftpd 默认会尝试对客户端 IP 做 反向 DNS 解析(PTR),如果 DNS 服务器响应慢或不可达,就会卡在登录前。
表现:
✅ 解决方法(强烈推荐)
# vsftpd.conf
reverse_lookup_enable=NO
然后重启:
systemctl restart vsftpd
vsftpd 使用 PAM 做用户认证,如果 PAM 中启用了:
pam_systemdpam_ldappam_ssspam_deny + 慢模块都会导致登录卡顿。
✅ 排查
cat /etc/pam.d/vsftpd
✅ 常见优化
auth required pam_unix.so
account required pam_unix.so
虽然这主要影响列目录慢,但某些客户端会在登录后立刻探测端口。
✅ 建议明确配置:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
并确保防火墙放行。
SELinux 可能导致 vsftpd 在认证或访问家目录时变慢。
✅ 快速判断:
getenforce
如果是 Enforcing,可临时测试:
setenforce 0
如果变快了,说明是 SELinux 策略问题。
ftpusers / user_list如果系统用户很多,vsftpd 每次登录都会扫描用户列表。
✅ 建议:
/etc/vsftpd/user_listuserlist_enable=NO
客户端用 PORT 模式时,服务器要反向连接客户端:
✅ 解决:
vsftpd 监听 IPv6,但客户端走 IPv4,或反过来。
✅ 可强制:
listen=YES
listen_ipv6=NO
# 1. 关闭反向解析
grep reverse_lookup_enable /etc/vsftpd/vsftpd.conf
# 2. 看日志
tail -f /var/log/vsftpd.log
tail -f /var/log/secure
# 3. 测试登录时间
time ftp localhost
vsftpd 登录慢,99% 是因为 DNS 反向解析 + PAM 认证阻塞。
✅ 第一步永远先做:
reverse_lookup_enable=NO
如果你愿意,可以把下面信息发我,我可以精准定位:
/etc/vsftpd/vsftpd.conf 内容(可脱敏)我可以直接帮你改好配置。