在 FirewallD 中允许被动 FTP 连接(CentOS 7)

在 FirewallD 中允许被动 FTP 连接(CentOS 7)

在带有 FirewallD 的 CentOS 7 中,启用 HTTP 访问很容易:

firewall-cmd --permanent --zone=public --add-service=http

然而,

firewall-cmd --permanent --zone=public --add-service=ftp

不起作用:规则适用,但除了禁用 FirewallD 之外,我无法通过任何方式访问 FTP。

一些诊断信息:

  • 我已经检查了服务定义文件(ftp.xml),它使用了 nf_conntrack_ftp 模块。
  • 在我的 VPS 上,模块被编译到内核中(不是单独的),所以它无法通过 lsmod 找到,但我可以通过以下方式确认它在那里:


zgrep FTP /proc/config.gz

CONFIG_NF_CONNTRACK_FTP=y
CONFIG_NF_CONNTRACK_TFTP=y
CONFIG_NF_NAT_FTP=y
CONFIG_NF_NAT_TFTP=y

答案1

我没有彻底研究过这个问题,所以我不了解细节,但这似乎与服务器上的 vsftpd 和客户端(例如:Filezilla)的主动 - 被动连接的设置方式有关。

基本上你需要:

答案2

尝试:编辑/etc/vsftpd/vsftpd.conf

pasv_enable=YES
pasv_min_port=65400
pasv_max_port=65410

然后:

firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -p TCP --dport 21 --sport 1024:65534 -j ACCEPT
firewall-cmd --permanent --direct --add-rule ipv4 filter INPUT 1 -p TCP --dport 65400:65410 --sport 1024:65534 -j ACCEPT
firewall-cmd --reload
firewall-cmd --permanent --direct --get-all-rules

我使用 vsftp 服务器并且 FileZilla 客户端可以工作

相关内容