在 CentOS 上放行 FTP(通常是 vsftpd)服务,需要根据你使用的是 firewalld(CentOS 7/8/Stream)还是 iptables 来操作,同时还要注意 主动模式 / 被动模式 的区别。
# 放行 ftp 服务(含 21 端口)
sudo firewall-cmd --permanent --add-service=ftp
# 重新加载防火墙
sudo firewall-cmd --reload
vsftpd 默认会开放一段端口范围,需要在防火墙放行。
编辑 /etc/vsftpd/vsftpd.conf:
pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000
重启 vsftpd:
sudo systemctl restart vsftpd
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
sudo firewall-cmd --reload
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 30000:31000 -j ACCEPT
service iptables save
# 或
iptables-save > /etc/sysconfig/iptables
如果 SELinux 是 enforcing 模式,FTP 可能被拦截:
# 允许 FTP 使用非标准端口
sudo setsebool -P ftpd_full_access on
# 如果家目录登录有问题
sudo setsebool -P ftp_home_dir on
查看状态:
getenforce
✅ FTP 端口 21
✅ 被动端口范围(如 30000-31000)
✅ firewalld / iptables 放行
✅ SELinux 布尔值开启
✅ vsftpd 服务已启动
如果你告诉我:
我可以给你精准命令。