我无法让 vsftpd 和firewalld 在 CentOS 7 上正常工作(没有向firewalld 添加被动范围)。看起来firewalld 忽略了连接跟踪(nf_conntrack_ftp 已加载但有 0 个用户)。firewalld 尚不支持连接跟踪,这是正确的吗?这里?
在firewalld中我已启用ftp服务,但虽然我可以登录和列出,但我无法上传文件,除非我停止防火墙或添加明确的被动范围。
Firewalld 命令:
firewall-cmd --permanent --add-service=ftp
生成的 iptables 规则:
-A IN_public_allow -p tcp -m tcp --dport 21 -m conntrack --ctstate NEW -j ACCEPT
连接跟踪模块:
# lsmod | grep conntrack_ftp nf_conntrack_ftp 18638 0
答案1
我在使用 CentOS 8 和 vsftpd 时也遇到了同样的问题。正如另一篇文章中提到的邮政你必须加载内核模块“nf_conntrack_ftp”(CentOS 8 中已经如此)并在内核设置中启用“nf_conntrack_helper”:
echo 1 > /proc/sys/net/netfilter/nf_conntrack_helper
添加此行/etc/sysctl.conf
(或/etc/sysctl.d/10-nf_conntrack_helper.conf
当/etc/sysctl.d/
存在时)以进行重新启动持久设置:
net.netfilter.nf_conntrack_helper=1
答案2
我认为你需要打开 ftp-data , tcp 端口 20