1.查看默认区域
[root@localhost r]# firewall-cmd --get-default-zone
public
2.查看网卡关联的区域
[root@localhost r]# firewall-cmd --get-zone-of-interface=ifcfg-ens160
external
3.设置网卡的默认区域修改为work
[root@localhost r]# firewall-cmd --zone=work --change-interface=ifcfg-ens160
success
[root@localhost r]# firewall-cmd --get-zone-of-interface=ifcfg-ens160
work
注意:第二条语句说明,和网卡ifcfg-ens160关联的区域已经改成work,而不是原来的external。默认的模式是--Runtime模式,也就是说上述配置规则重启电脑后会失效。
接下来,自己执行reboot重启系统,然后查询网卡ifcfg-ens160的关联区域,可以发现原来的配置规则已经失效了,网卡ifcfg-ens160的关联区域又变回了external,如下:
[root@localhost r]# firewall-cmd --get-zone-of-interface=ifcfg-ens160
external
[root@localhost r]#
4.下面用permanent模式(永久生效模式)修改网卡ifcfg-ens160的关联区域,发现修改后并不会立即生效,重启电脑(或者执行firewall-cmd --reload)后,修改才会永久生效
//下面这句用永久生效模式修改ifcfg-ens160的关联区域为work
[root@localhost r]# firewall-cmd --permanent --zone=work --change-interface=ifcfg-ens160
success
//下面这句查询了网卡ifcfg-ens160关联区域仍然没有改变成work,因为永久生效模式只有重启
//电脑或者执行了firewall-cmd --reload后才会生效
[root@localhost r]# firewall-cmd --get-zone-of-interface=ifcfg-ens160
external
//执行下面语句,作用是让永久生效的配置规则立即生效,并且覆盖当前的配置规则
[root@localhost r]# firewall-cmd --reload
success
//接下来再查询网卡ifcfg-ens160的绑定区域会发现:网卡ifcfg-ens160绑定区域已经换成work
[root@localhost r]# firewall-cmd --get-zone-of-interface=ifcfg-ens160
work
5.修改默认区域的关联网卡的时候,如果不使用--zone=<区域>指定区域,那么改变的是默认区域的关联网卡,如果想让指定的网卡和某个指定的区域关联,那么必须使用--zone参数指定区域。如下,没有指定区域,就改变默认区域的关联网卡:
[root@localhost r]# firewall-cmd --change-interface=ifcfg-ens160
success
[root@localhost r]# firewall-cmd --get-zone-of-interface=ifcfg-ens160
public
注意:这个使用的模式是默认模式runtime模式,也就是立即生效,重启电脑失效。如果想永久生效,那么就得显式使用--permanent参数。如下印证了自己的判断:
[root@localhost r]# firewall-cmd --get-zone-of-interface=ifcfg-ens160
public
//下面这句相当于重启电脑
[root@localhost r]# firewall-cmd --reload
success
[root@localhost r]# firewall-cmd --get-zone-of-interface=ifcfg-ens160
work
6.关于permanent参数的使用
不管是查询也好,设置也罢,permanent的意思是使用永久设置模式查询(设置)。加了permanent是表示查询或者设置的时候是永久模式下的。
[root@localhost r]# firewall-cmd --get-zone-of-interface=ifcfg-ens160
public
[root@localhost r]# firewall-cmd --permanent --get-zone-of-interface=ifcfg-ens160
work
7.看一个实验
8.紧急模式
9.查询ssh和https协议的流量是否是允许放行的。
用法:查询 协议1 对于 服务1 来说,是否是被允许的,可以用--query-service来指定协议,用--zone指定区域(如果指定,就是用默认区域).
//查询ssh协议的内容对于服务dmz来说是否是允许放行的
//注:ssh是一种协议,用于计算机之间的加密登录
[root@localhost r]# firewall-cmd --zone=dmz --query-service=ssh
yes
[root@localhost r]# firewall-cmd --zone=block --query-service=ssh
no
[root@localhost r]# firewall-cmd --zone=drop --query-service=ssh
no
10.设置https协议的流量对public区域是永久放行的,并且立即生效。
[root@localhost r]# firewall-cmd --permanent --zone=public --add-service=https
success
[root@localhost r]# firewall-cmd --permanent --zone=public --query-service=https
yes
[root@localhost r]# firewall-cmd --zone=public --query-service=https
no
//不想重启电脑就执行 firewall-cmd --reload
[root@localhost r]# firewall-cmd --zone=public --query-service=https
yes
11.把https的流量设置成永久拒绝的,并且立即生效
[root@localhost r]# firewall-cmd --permanent --zone=public --remove-service=https
success
[root@localhost r]# firewall-cmd --reload
success
12.把8080和8081端口的流量和策略设置为允许,但权限当前生效。
[root@localhost r]# firewall-cmd --zone=public --add-port=8080-8081
Error: INVALID_PORT: bad port (most likely missing protocol), correct syntax is portid[-portid]/protocol
[root@localhost r]# firewall-cmd --zone=public --add-port=8080-8081/tcp
success
[root@localhost r]# firewall-cmd --zone=public --list-ports
8080-8081/tcp
注意:上面的第一句代码中出现了错误,根据提示可以看出,指定端口必须是如下形式,每种形式都必须有协议:
port/protocol
port1-port2/protocol