经过前两天的学习大家已经对Centos7防火墙firewalld有了整体的理解,不过我们还没说具体怎么使用,今天学生就来给大家介绍一下Firewalld的命令结构以及frewall-cmd命令的命名规则。
Firewalld防火墙中所使用到的命令可以分为三大类:安装卸载、维护和策略操作。
安装卸载
在Centos7中默认已经安装了firewalld,如果需要自行安装,可以直接使用yum安装
~
# yum install firewalld
如果需要使用图形化配置工具还需要安装firewall-config
~
# yum install firewall-config
这样firewalld就安装完成了,不过要注意firewalld跟iptables不能同时使用,所以在使用firewalld之前首先需要将iptables停用。
卸载

卸载firewalld直接使用yum remove就可以了
~
# yum remove firewalld
维护命令
firewalld的维护相对来说是非常简单的,其命令主要分为三大类:启动停止和查询状态、设置开机自动启动以及更新规则。
在Centos7中默认将原来的服务管理工具service升级为了systemctl,其实原来的service只是一个脚本执行工具,而systemctl的功能非常强大,关于systemctl的详细用法大家可以阅读linux中国的一篇文章,地址是:
,这篇文章写的非常详细,所以学生就不再给大家做补充了,下面来说一说怎么用它来操作firewalld。
启动
~
# systemctl start firewalld
停止
~
# systemctl stop firewalld
重启
~
# systemctl restart firewalld
查询状态
~
# systemctl status firewalld
另外,对于firewalld来说还可以使用自身的firewall-cmd工具来查询运行状态
~
# firewall-cmd --state
设置开机自动启动也是使用systemctl来操作的,命令如下
启用开机自动启动
~
# systemctl enable firewalld
禁用开机自动启动
~
# systemctl disable firewalld
查看自动启动状态
~
# systemctl is-enabled firewalld
当然,systemctl的这些命令不只适用于firewalld,也适用于其他服务,使用时只要将firewalld换成相应服务的名称就可以了。
直接使用firewall-cmd修改的规则是不需要更新就可以直接生效的,但是如果加了--permanent参数,或者直接编辑xml文件之后就需要我们手动reload了,firewall-cmd提供了两个更新规则的参数:--reload和--complete-reload,前者只是更新需要更新规则,而且更新的过程中不会影响现有的连接,而后者在更新时会将所有的规则清除掉然后重建,而且为了安全考虑,在更新之前首先会将策略设置为DROP,等更新完成之后再恢复为ACCEPT,这样就会对现有连接造成影响,所以如果没有特殊需求我们应该尽量使用前者。具体命令如下
~
# firewall-cmd --reload
~
# firewall-cmd --complete-reload
策略操作
对于firewalld来说最重要的就是策略操作了,策略的操作主要有三种方法:使用firewall-config操作、使用firewall-cmd操作和直接编辑xml文件,firewall-config是图形化工具centos 开启防火墙之后 yum无法执行,firewall-cmd是命令行工具,这些在昨天的文章里学生已经给大家介绍过了,我们这里主要以命令行工具为主来给大家介绍。
firewall-cmd中关于规则的命令非常多centos 开启防火墙之后 yum无法执行,如果在这里全部罗列出来然后给大家解释一遍应该效果也不会太好,所以学生计划在后面讲到具体相关内容时再给大家讲相应的命令,比如讲到zone的时候给大家介绍跟zone相关的命令,这样大家会更容易理解和记忆。
firewall-cmd中的命令虽然非常多,但是有四大类使用频率非常高的命令:--add-xxx、--remove-xxx、--query-xxx、--get-xxx以及--list-xxx,这里前两个非常容易理解linux 输入法,一个是添加一个是删除,而后三个从名字上就不太容易区分了,下面学生给大家解释一下。
--query-xxx主要用于布尔值的查询,比如
~
# firewall-cmd --zone=public --query-service=ssh
这个命令用于查询在public这个zone中是否包含ssh这个服务。
--get-xxx主要用于获取特定的内容,比如
~
# firewall-cmd --get-zones
这样就可以获取到预设的zones,默认情况下返回结果为
block dmz drop external home internal public trusted work
--list-xxx主要用于按一定条件进行查询(不过有的list命名也不需要条件),比如
~
$ firewall-cmd --zone=public --list-services
这个命令可以返回public这个zone中所包含的services(关于zone和service的深入解释大家可以查阅学生昨天发的文章《5分钟理解Centos7防火墙firewalld》)。
query还是比较容易理解的,但是get和list从字面上并不容易区分,刚开始学生以为get命令用于获取单个结果,list用于获取多个结果,但后来发现并不是这样,get其实是获取特定的结果而list主要是按特定的条件进行查询。当然,我们在使用的时候按照文档中的说明来使用就可以了。
另外,在firewall-cmd中有一个比较特殊的参数:--permanent,他表示是否将修改后的规则保存下来,如果不加这个参数,那么所做的修改会当时立即生效,但是在firewalld重启之后就会丢失,而加上这个参数后所做的修改就会永久保存下来了,不过这时的修改不会立即生效而是需要reload后才可以生效。其实这个也非常容易理解,当不加--permanent修改规则时firewalld会实际修改运行时的规则,而如果加了这个参数firewalld其实是去修改的xml配置文件,和我们直接编辑xml文件一样RED HAT LINUX 9.0,所以就需要reload才可以生效。
firewalld的命令结构学生就给大家介绍到这里。到现在为止firewalld宏观的内容我们就学习完了,从明天开始学生来给大家介绍firewalld的具体组成部分,希望能对大家有所帮助。
