linux(centos8):firewalld对于请求会选择哪个zone处理?
一,firewalld对一个请求会适用哪个zone?
当接收到一个请求时,firewalld具体使用哪个zone?
firewalld是通过三个步骤来判断的:
-
source,即:源地址
-
interface,即:接收请求的网卡
-
firewalld.conf中配置的默认zone
通常值为:DefaultZone=public
说明:三个步骤的优先级顺序降低
即:如果通过source匹配到了一个zone,
则不会再使用interface,
如果通过interface匹配到了zone,
则不会再使用默认zone
说明:刘宏缔的架构森林是一个专注架构的博客,
网站:https://blog.imgtouch.com
本文: https://blog.imgtouch.com/index.php/2023/05/22/centos8linuxfirewalld-dui-yu-qing-qiu-hui-xuan-ze-nei-ge-zone-chu-li/
对应的源码可以访问这里获取: https://github.com/liuhongdi/
说明:作者:刘宏缔 邮箱: 371125307@qq.com
二,zone的操作
1,列出当前激活的zone
[root@blog ~]# firewall-cmd --get-active-zones public interfaces: eth0 trusted sources: 121.122.123.105
2,列出缺省的zone
[root@blog ~]# firewall-cmd --get-default-zone
public
3,列出所有的zone
[root@blog ~]# firewall-cmd --get-zones
block dmz drop external home internal public trusted work
三,source和zone的绑定操作
1,得到一个source所属的zone
[root@blog ~]# firewall-cmd --get-zone-of-source=121.122.123.105 trusted
2,绑定一个source到zone
例子:把121.122.123.118绑定到trusted这个zone
[root@blog ~]# firewall-cmd --permanent --zone=trusted --add-source=121.122.123.118 success [root@blog ~]# firewall-cmd --reload success
3,一个source能否绑定到了两个zone?
当121.122.123.118已经被绑定到trusted这个zone后,
能否再被绑定到drop这个zone?
[root@blog ~]# firewall-cmd --permanent --zone=drop --add-source=121.122.123.118 Error: ZONE_CONFLICT: 121.122.123.118
报错,一个source不能同时绑定到两个zone
4,列出一个zone下绑定的source
[root@blog ~]# firewall-cmd --permanent --zone=trusted --list-sources 121.122.123.105
5,把一个source从zone下解除绑定
[root@blog ~]# firewall-cmd --permanent --zone=trusted --remove-source=121.122.123.118 success
6,查询一个source是否和指定的zone做了绑定?
[root@blog firewalld]# firewall-cmd --permanent --zone=drop --query-source=121.122.123.118 yes
四,interface和zone的绑定操作
1,得到一个interface所属的zone
[root@blog ~]# firewall-cmd --get-zone-of-interface=eth0
public
2,列出一个zone下绑定的interface
[root@blog firewalld]# firewall-cmd --zone=public --list-interfaces
eth0
3,列出所有的interface
[root@blog firewalld]# firewall-cmd --list-interfaces
eth0
4,查询一个zone下是否绑定了指定的interace?
[root@blog firewalld]# firewall-cmd --zone=public --query-interface=eth0
yes
5,一个interface能否同时属于多个zone?
[root@blog firewalld]# firewall-cmd --zone=trusted --add-interface=eth0 Error: ZONE_CONFLICT: 'eth0' already bound to a zone
6,从zone下移除interface
[root@blog firewalld]# firewall-cmd --permanent --zone=public --remove-interface=eth0
The interface is under control of NetworkManager and already bound to the default zone
The interface is under control of NetworkManager, setting zone to default.
success
说明:如果一个interface被NM绑定到了default zone,
则不能解绑,
五,如何修改默认的zone?
#--set-default-zone:设置缺省zone
[root@blog firewalld]# firewall-cmd --set-default-zone=public
success
说明:这个命令同时修改了配置文件
[root@blog firewalld]# grep DefaultZone /etc/firewalld/firewalld.conf DefaultZone=public
我们也可以手动修改配置文件
[root@blog firewalld]# vi /etc/firewalld/firewalld.conf
修改DefaultZone指令的值:
DefaultZone=public
然后重启firewalld
[root@blog firewalld]# systemctl restart firewalld.service
六,查看一个zone的target
1,得到zone的target
[root@blog firewalld]# firewall-cmd --permanent --get-target --zone=public default [root@blog firewalld]# firewall-cmd --permanent --get-target --zone=trusted ACCEPT [root@blog firewalld]# firewall-cmd --permanent --get-target --zone=drop DROP
说明:用--list-all参数也可以把指定zone的信息都打印出来
2,target的值通常有4个:
default
, ACCEPT
, REJECT
和 DROP
ACCEPT
:除了明确禁止的规则,默认会接受所有流入的数据包。
REJECT
:除了明确允许的规则,默认会拒绝所有流入的数据包,
但会给发出连接请求的机器回复被拒绝的消息
DROP:
除了明确允许的规则,默认会拒绝所有流入的数据包,
不会给发起连接
请求的机器回复任何消息
default:没有指定时,target的值是default:规则就是:每个没有匹配上的包将会拒绝
(
If the target is not specified, every packet not matching any rule will be rejected.)
文档地址:
https://firewalld.org/documentation/zone/options.html
七,查看firewalld的版本
[root@blog ~]# firewall-cmd --version 0.6.3
八,查看linux的版本
[root@blog ~]# cat /etc/redhat-release CentOS Linux release 8.0.1905 (Core)