在FirewallD自带的CentOS 7中,启用HTTP访问非常简单:
firewall-cmd --permanent --zone=public --add-service=http
然而,
firewall-cmd --permanent --zone=public --add-service=ftp
不起作用:该规则适用,但除禁用FirewallD之外,我无法以任何方式访问FTP。
一些诊断信息:
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
我没有彻底地研究过这个问题,所以我不明白这些细节,但是这似乎与如何为服务器和客户机上的vsftpd(例如:Filezilla)设置主动 – 被动连接有关。
基本上你需要:
pasv_enable=Yes pasv_max_port=40000 pasv_min_port=40000
systemctl restart vsftpd.service
firewall-cmd --permanent --add-port=40000/tcp firewall-cmd --reload
lftp
。 要设置Filezilla使用主动模式检查http://www.itzgeek.com/how-tos/linux/centos-how-tos/enable-passive-mode-in-ftp-on-centos-7-rhel-7-换FileZilla的-和winscp.html#axzz3X4loTCMi 尝试:编辑/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客户端可以工作
尝试用端口号代替服务名称:
firewall-cmd --permanent --add-port=21/tcp firewall-cmd --reload