当我们在 Linux 服务器安装了某个应用服务器后,可能发现其并没有起效,这或许是因为防火墙在搞鬼。。。
服务管理工具
systemctl是 CentOS 7 服务管理工具中最主要的一个,它融合了之前service和chkconfig的功能于一体。
下面是systemctl工具的相关命令:
| 命令 | 说明 |
|---|---|
systemctl start servicename |
启动某个服务 |
systemctl stop servicename |
停止某个服务 |
systemctl restart servicename |
重启某个服务 |
systemctl status servicename |
显示某个服务的状态 |
systemctl enable servicename |
开机时启用某个服务 |
systemctl disable servicename |
开机时禁用某个服务 |
systemctl is-enabled servicename |
查看服务是否开机启动 |
| systemctl list-unit-files | grep enabled | 查看已启动的服务列表 |
systemctl --failed |
查看启动失败的服务列表 |
防火墙相关配置
下表显示了防火墙的启动与关闭等命令:
| 命令 | 说明 |
|---|---|
systemctl start firewalld |
启动 |
systemctl stop firewalld |
关闭 |
systemctl status firewalld |
查看状态 |
systemctl enable firewalld |
开机启用 |
systemctl disable firewalld |
开机禁用 |
启动防火墙后,需要通过下面命令来操作:
| 命令 | 说明 |
|---|---|
firewall-cmd --version |
查看版本 |
firewall-cmd --help |
查看帮助文档 |
firewall-cmd --state |
显示防火墙状态 |
firewall-cmd --zone=public --list-ports |
查看所有打开的端口 |
firewall-cmd --reload |
更新防火墙规则 |
firewall-cmd --get-active-zones |
查看区域信息 |
firewall-cmd --get-zone-of-interface=eth0 |
查看指定接口所属区域 |
firewall-cmd --panic-on |
拒绝所有包 |
firewall-cmd --panic-off |
取消拒绝状态 |
firewall-cmd --query-panic |
查看是否拒绝 |
端口的开启与删除
| 命令 | 说明 |
|---|---|
firewall-cmd --zone=public --add-port=端口号/tcp --permanent |
添加某个端口 |
firewall-cmd --zone=public --query-port=端口号/tcp |
查看某个端口状态 |
firewall-cmd --zone= public --remove-port=端口号/tcp --permanent |
删除某个端口 |
其中参数--permanent代表永久生效,没有此参数防火墙重启后该规则失效。
修改相关配置后,需要使用下面命令重新载入防火墙以使规则生效:1
firewall-cmd --reload
注:若使用了云服务器(如阿里云),请在安全组添加相关端口规则。
服务的开启
有时候开启了端口也不行,因为你没有打开相关服务。
查看服务规则命令为firewall-cmd --list-services,举个栗子:1
2firewall-cmd --list-services
dhcpv6-client ssh
比如打开 HTTP 服务的命令:1
firewall-cmd --add-service=http --permanent
之后重新载入使配置生效:1
firewall-cmd --reload