温馨提示×

centos ftpserver如何防火墙

小樊
48
2026-09-03 00:03:22
栏目: 智能运维

在 CentOS 上搭建 FTP 服务(如 vsftpd)后,防火墙配置是必须处理的一步,否则客户端无法连接。下面按常见场景说明。


一、FTP 模式简介(很重要)

FTP 有两种模式,防火墙配置不同:

  1. 主动模式(PORT)
    • 服务器用 20 端口连接客户端
  2. 被动模式(PASV)(推荐)
    • 客户端连接服务器的随机高端口(需防火墙放行)

二、CentOS 防火墙(firewalld)配置

1. 开启 FTP 服务(被动模式推荐)

# 开启 ftp 服务
firewall-cmd --permanent --add-service=ftp

# 重新加载防火墙
firewall-cmd --reload

这会开放:

  • 21(控制端口)
  • 被动端口范围(由 ftp 模块自动处理)

2. 主动模式(不推荐)

主动模式需要开放 20 端口:

firewall-cmd --permanent --add-port=20/tcp
firewall-cmd --reload

三、vsftpd 被动端口配置(关键)

编辑 vsftpd 配置:

vi /etc/vsftpd/vsftpd.conf

添加或修改:

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

然后重启 vsftpd:

systemctl restart vsftpd

防火墙放行端口范围:

firewall-cmd --permanent --add-port=30000-31000/tcp
firewall-cmd --reload

四、SELinux 相关(常见坑)

CentOS 默认开启 SELinux,需允许 FTP:

setsebool -P ftpd_full_access on

如果仍无法访问,可临时测试:

setenforce 0

五、确认服务状态

systemctl status vsftpd
firewall-cmd --list-all

六、iptables(老版本 CentOS)

如果是 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

七、推荐总结

生产环境建议

  • 使用 vsftpd
  • 使用 被动模式
  • 固定被动端口范围
  • firewalld + SELinux 正确配置

如果你愿意,可以告诉我:

  • CentOS 版本(7 / 8 / Stream)
  • FTP 软件(vsftpd / proftpd)
  • 是否公网 / 内网

我可以给你一份可直接复制执行的完整命令

0