在 CentOS 上放行 FTP(ftpserver)的防火墙,需要根据你使用的 FTP 模式(主动/被动) 和 CentOS 版本(firewalld / iptables) 来配置。下面以 CentOS 7/8 使用 firewalld(最常见)为例说明。
一、FTP 常见端口
- 21:FTP 控制端口(必须放行)
- 被动模式端口(Pasv):如 30000–31000(需在 FTP 服务端配置)
二、CentOS 7/8(firewalld)放行 FTP
1️⃣ 放行 FTP 服务(最简单)
sudo firewall-cmd --permanent --add-service=ftp
sudo firewall-cmd --reload
✅ 这会放行 21 端口及部分 FTP 相关模块
2️⃣ 放行被动模式端口(非常重要)
如果你使用 vsftpd,先编辑配置:
sudo vi /etc/vsftpd/vsftpd.conf
添加或修改:
pasv_min_port=30000
pasv_max_port=31000
然后防火墙放行:
sudo firewall-cmd --permanent --add-port=30000-31000/tcp
sudo firewall-cmd --reload
3️⃣ 加载 FTP 防火墙模块(防止被动模式失败)
sudo firewall-cmd --permanent --add-module=ftp
sudo firewall-cmd --reload
三、SELinux 也要放行(很多人忽略)
sudo setsebool -P ftpd_full_access on
查看状态:
getsebool ftpd_full_access
四、CentOS 6 / 使用 iptables 的情况
iptables -A INPUT -p tcp --dport 21 -j ACCEPT
iptables -A INPUT -p tcp --dport 30000:31000 -j ACCEPT
service iptables save
service iptables restart
五、验证
ftp localhost
# 或从其他机器
ftp 服务器IP
如果你能告诉我:
- FTP 软件(vsftpd / proftpd / pure-ftpd)
- CentOS 版本
- 主动还是被动模式
我可以给你精确配置命令。