CentOS 7 防火墙

  当我们在 Linux 服务器安装了某个应用服务器后,可能发现其并没有起效,这或许是因为防火墙在搞鬼。。。

服务管理工具

  systemctl是 CentOS 7 服务管理工具中最主要的一个,它融合了之前servicechkconfig的功能于一体。

  下面是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
2
firewall-cmd --list-services
dhcpv6-client ssh

  比如打开 HTTP 服务的命令:

1
firewall-cmd --add-service=http --permanent

  之后重新载入使配置生效:

1
firewall-cmd --reload

0%