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

Dan*_*nin 4 centos ftp firewalld

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

firewall-cmd --permanent --zone=public --add-service=http
Run Code Online (Sandbox Code Playgroud)

然而,

firewall-cmd --permanent --zone=public --add-service=ftp
Run Code Online (Sandbox Code Playgroud)

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

一些诊断信息:

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


zgrep FTP /proc/config.gz
Run Code Online (Sandbox Code Playgroud)

CONFIG_NF_CONNTRACK_FTP=y
CONFIG_NF_CONNTRACK_TFTP=y
CONFIG_NF_NAT_FTP=y
CONFIG_NF_NAT_TFTP=y
Run Code Online (Sandbox Code Playgroud)

小智 8

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

基本上你需要: