一.启动停止

    firewalld 守护进程

    systemctl status/start/stop/restart firewalld来控制这个守护进程

    激活最新配置:

    1.systemctl restart firewalld  #重启 firewalld 服务

    2.firewall-cmd --reload #重载配置文件之后不会断掉正在连接的 tcp 会话

二.firewall-cmd命令

firewall-cmd --state                           ##查看防火墙状态,是否是running
firewall-cmd --reload                          ##重新载入配置,比如添加规则之后,需要执行此命令
firewall-cmd --get-zones                       ##列出支持的zone
firewall-cmd --get-services                    ##列出支持的服务,在列表中的服务是放行的
firewall-cmd --query-service ftp               ##查看ftp服务是否支持,返回yes或者no
firewall-cmd --add-service=ftp                 ##临时开放ftp服务
firewall-cmd --add-service=ftp --permanent     ##永久开放ftp服务
firewall-cmd --remove-service=ftp --permanent  ##永久移除ftp服务
firewall-cmd --add-port=80/tcp --permanent     ##永久添加80端口 
iptables -L -n                                 ##查看规则,这个命令是和iptables的相同的
man firewall-cmd                               ##查看帮助
runtime:当前正在生效
permanent:永久生效
当策略为永久生效时,必须执行--reload参数后才能立即生效,否则重启后生效

三.配置

irewall-cmd --add-service=mysql        # 开放mysql端口
firewall-cmd --remove-service=http        # 阻止http端口
firewall-cmd --list-services            # 查看开放的服务
firewall-cmd --add-port=3306/tcp        # 开放通过tcp访问3306
firewall-cmd --remove-port=80/tcp        # 阻止通过tcp访问80
firewall-cmd --add-port=233/udp            # 开放通过udp访问233
firewall-cmd --list-ports                # 查看开放的端口

     可以通过两种方式控制端口的开放,一种是指定端口号另一种是指定服务名。虽然开放 http 服务就是开放了 80 端口,但是还是不能通过端口号来关闭,也就是说通过指定服务名开放的就要通过指定服务名关闭;通过指定端口号开放的就要通过指定端口号关闭。还有一个要注意的就是指定端口的时候一定要指定是什么协议,tcp 还是 udp。知道这个之后以后就不用每次先关防火墙了,可以让防火墙真正的生效。

查看当前区域
firewall-cmd --get-default-zone
查看所以区域
firewall-cmd --get-active-zones 
查看网卡ens224区域
firewall-cmd --get-zone-of-interface=ens224
在public中分别查询ssh与http服务是否被允许
firewall-cmd --zone=public --query-service=ssh
firewall-cmd --zone=public --query-service=http
设置默认规则为DMZ:
 firewall-cmd --set-default-zone=dmz
让永久生效的配置文件立即生效
firewall-cmd --reload
启动/关闭应急状况模式,阻断所以网络连接:应急模式会禁止所有的网络连接,注意
firewall-cmd --panic-on
firewall-cmd --panic-off

允许http流量通过public区域,立即生效且永久生效
方法一:
firewall-cmd --zone=public --add-service=http  #当前生效
firewall-cmd --permanent --zone=public --add-service=http  #设置永久生效

方法二:
firewall-cmd --permanent --zone=public --add-service=http
firewall-cmd --reload

不允许https流量通过public区域,立即生效且永久生效
firewall-cmd --permanent --zone=public --remove-service=http
firewall-cmd --reload

允许8080与8081端口通过public区域,立即生效且永久生效
firewall-cmd --permanent --zone=public --add-port=8080-8081/tcp
firewall-cmd --reload

查看加入的端口是否生效
firewall-cmd --zone=public --list-ports
firewall-cmd --permanent --zone=public --list-ports

伪装IP
防火墙可以实现伪装IP的功能,端口转发会用到
(端口转发配置始终不生效,查询许多资料后,才发现需要开启IP伪装功能,这是个坑)
检测是否允许伪装IP
firewall-cmd --query-masquerade 
允许防火墙伪装IP
firewall-cmd --add-masquerade   
禁用防火墙伪装IP
firewall-cmd --remove-masquerade

端口转发功能:
firewall-cmd --permanent --zone=public --add-forward-port=port=888:proto=tcp:toport=22:toaddr=x.x.x.x
删除转发功能
 firewall-cmd --permanent --zone=public --remove-forward-port=port=888:proto=tcp:toport=22:toaddr=x.x.x.x
开启888端口
firewall-cmd --zone=public --add-port=888/tcp