一,firewalld对一个请求会适用哪个zone?

当接收到一个请求时,firewalld具体使用哪个zone?

firewalld是通过三个步骤来判断的:

  1. source,即:源地址

  2. interface,即:接收请求的网卡

  3. firewalld.conf中配置的默认zone

    通常值为:DefaultZone=public

说明:三个步骤的优先级顺序降低

即:如果通过source匹配到了一个zone,

则不会再使用interface,

如果通过interface匹配到了zone,

则不会再使用默认zone

说明:刘宏缔的架构森林是一个专注架构的博客,地址:https://www.cnblogs.com/architectforest

对应的源码可以访问这里获取: 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个:

defaultACCEPTREJECT 和 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)

最新文章

  1. activiti工作流的web流程设计器整合视频教程 SSM和独立部署
  2. 构建自己的PHP框架--实现Model类(2)
  3. alpha-beta剪枝搜索
  4. Manacher's Algorithm 马拉车算法
  5. velocity-tools-beta1.jar与velocity-tools.jar不兼容
  6. C# 中var as is 泛型集合
  7. mapred和mapreduce
  8. .Net Framwork类库
  9. HTTP概念进阶
  10. Previous operation has not finished; run 'cleanup' if it was interrupted
  11. C# 判断网站是否能访问或者断链
  12. OkHttp上传文件,服务器端请求解析找不到文件信息的问题
  13. 在android studio中配置运行时签名
  14. [UE4]判断2个向量是否相等
  15. LeetCode算法题-Minimum Depth of Binary Tree(Java实现)
  16. [android警告]AndroidManifest.xml警告 Not targeting the latest versions of Android
  17. stm32 启动文件 C和汇编交叉嵌入
  18. Serv-U精简版FTP服务端
  19. Spring Boot+CXF搭建WebService
  20. Bzoj3566/洛谷P4284 [SHOI2014]概率充电器(概率dp)

热门文章

  1. django之安装和项目创建
  2. [Leetcode]Sql系列3
  3. mysql主从模式部署
  4. C#实现创建、编辑NX表达式
  5. 【小白学PyTorch】13 EfficientNet详解及PyTorch实现
  6. 爬虫日志监控 -- Elastc Stack(ELK)部署
  7. 实践案例丨利用小熊派开发板获取土壤湿度传感器的ADC值
  8. APP自动化-环境安装
  9. Object.defineProperty和proxy
  10. 高并发场景-请求合并(二)揭秘HystrixCollapser-利用Queue和线程池异步实现