CentOS 下 vsftpd 连接超时的定位与解决
一、常见成因与快速判断
二、标准修复步骤
systemctl status vsftpd;未运行则 systemctl start vsftpdtelnet your_server_ip 21 或 nc -vz your_server_ip 21/etc/vsftpd/vsftpd.conf 增加(示例端口段 4000–5000):
pasv_enable=YESpasv_min_port=4000pasv_max_port=5000pasv_address=你的公网IP(避免回送内网地址)firewall-cmd --permanent --add-port=21/tcpfirewall-cmd --permanent --add-port=4000-5000/tcpfirewall-cmd --reload21 与 4000:5000 的 TCP 端口systemctl restart vsftpd/etc/vsftpd/ftpusers(黑名单,优先级高)/etc/vsftpd/user_list 配合 userlist_enable=YES/NO、userlist_deny=YES/NOchroot_local_user=YES 且需可写,添加 allow_writeable_chroot=YES,避免登录异常。setenforce 0;若恢复正常,永久调整:
setsebool -P ftp_home_dir ontail -f /var/log/vsftpd.log,关注 PASV 地址、拒绝原因与端口。三、关键配置示例
# /etc/vsftpd/vsftpd.conf 关键项
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
chroot_local_user=YES
allow_writeable_chroot=YES
pasv_enable=YES
pasv_min_port=4000
pasv_max_port=5000
pasv_address=你的公网IP # 多网卡/云主机强烈建议设置
idle_session_timeout=600
data_connection_timeout=120
connect_timeout=60
accept_timeout=60
firewall-cmd --permanent --add-port=21/tcpfirewall-cmd --permanent --add-port=4000-5000/tcpfirewall-cmd --reloadsystemctl restart vsftpd四、特殊场景与补充
modprobe ip_conntrack_ftp、modprobe ip_nat_ftp(部分环境需要)。