温馨提示×

centos ftpserver如何防火墙放行

小樊
41
2026-09-06 04:26:33
栏目: 智能运维

在 CentOS 上放行 FTP(通常是 vsftpd)服务,需要根据你使用的是 firewalld(CentOS 7/8/Stream)还是 iptables 来操作,同时还要注意 主动模式 / 被动模式 的区别。


一、使用 firewalld(CentOS 7 / 8 / Stream 默认)

1. 放行 FTP 服务(推荐)

# 放行 ftp 服务(含 21 端口)
sudo firewall-cmd --permanent --add-service=ftp

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

2. 如果使用了被动模式(PASV,最常见)

vsftpd 默认会开放一段端口范围,需要在防火墙放行。

(1)修改 vsftpd 配置

编辑 /etc/vsftpd/vsftpd.conf

pasv_enable=YES
pasv_min_port=30000
pasv_max_port=31000

重启 vsftpd:

sudo systemctl restart vsftpd

(2)防火墙放行被动端口

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

二、使用 iptables(老版本或自定义环境)

1. 放行 21 端口

iptables -A INPUT -p tcp --dport 21 -j ACCEPT

2. 放行被动端口

iptables -A INPUT -p tcp --dport 30000:31000 -j ACCEPT

3. 保存规则

service iptables save
# 或
iptables-save > /etc/sysconfig/iptables

三、SELinux 相关(很重要)

如果 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 服务已启动


如果你告诉我:

  • CentOS 版本
  • 使用的是 vsftpd 还是其他 FTP
  • 主动 / 被动模式

我可以给你精准命令

0