某些centOS7版本可能会因为是最小发行版没有集成firewall管理工具,而有的就有。

今天在某虚拟主机上发现部署了某服务却始终连接不上,但是另一个较为精简的centOS7上却完美运行。最终发现是防火墙的策略问题。

在防火墙默认运行的主机上放行必要的端口,再reload,你的服务即可使用了~

执行:

  1. firewall-cmd --permanent --add-port=12345/tcp
  2. firewall-cmd --reload

这样就放行了12345端口~


好的正文来了

CentOS7 firewalld service

一、centOS7的防火墙启动关闭重启命令

centOS7已经开始使用systemd工具来管理,推荐两篇学习systemd的不错的博文,感谢原作者。

  1. Systemd 入门教程:命令篇 - 阮一峰的网络日志Systemd 入门教程:命令篇
  2. Systemd 入门教程:实战篇 - 阮一峰的网络日志Systemd 入门教程:实战篇

注意:下面命令中的firewalld省略了「.service」,但实际使用并不影响,使用tab键一般会补全
启动:
systemctl start firewalld

停止:
systemctl stop firewalld

重启:
systemctl restart firewalld

设置开机自启:
systemctl enable firewalld

查看是否已设置开机自启:
systemctl is-enabled firewalld

查看程序是否处于活跃状态:
systemctl is-active firewalld

查看程序运行状态:
systemctl status firewalld

二、放行一个端口的通讯

firewall-cmd --zone=public --add-port=520/udp --permanent
说明:
--zone 作用域范围
--add-port=520/udp 添加基于何种传输协议的端口,tcp或udp。基于udp的520端口用于选路信息协议(RIP)
--permanent 永久生效,不使用该option重启后刚才的设置会失效

三、放行多个端口

firewall-cmd --zone=public --add-port=6000-6050/tcp --permanent
四、查看已经放行的端口
firewall-cmd --zone=public --list-ports

centOS7以下使用netstat -ant
centOS7开始,使用ss -ant
五、删除端口

firewall-cmd --zone=public --remove-port=12345/tcp --permanent
注意:删除或新增后需要重载firewall-cmd或重启firewalld服务以生效。
六、添加服务

firewall-cmd --add-service=ftp --permanent
说明:永久添加ftp服务
七、删除服务

firewall-cmd --remove-service=ftp --permanent
说明:永久移除ftp服务
八、firewall-cmd 服务重载

firewall-cmd --reload
九、其他常用命令

查看防火墙状态:
firewall-cmd --state

列出支持的zone信息:
firewall-cmd --get-zones

列出支持的、已经配置的服务:
firewall-cmd --get-services

查询ftp服务是否已经配置或被支持,返回值布尔类型,yes 或 no:
firewall-cmd --query-service ftp

查看帮助:
man firewall-cmd



end.