You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

关于firewalld区域分配逻辑及配置元素作用的技术咨询

关于firewalld区域分配逻辑及配置元素作用的技术咨询

我完全懂你反复啃手册还是一头雾水的感受——firewalld的Zone逻辑确实容易把「流量分配到Zone的匹配规则」和「Zone内部的流量处理规则」搞混,咱们一步步拆解清楚:

一、先搞懂:哪些配置是用来「把流量分配到对应Zone」的?

这是最核心的第一步,firewalld只会用两个维度来判断流量该归哪个Zone:

  • interfaces:流量进入的网卡接口(比如你例子里的eth0)
  • sources:流量的源IP/网段(比如1.2.3.4)

这里有个关键规则:firewalld会按Zone名称的字母顺序依次检查,只要流量满足某个Zone的所有匹配条件(如果Zone同时配置了interfaces和sources,流量必须同时符合这两个条件),就会被分配到这个Zone,后续不再检查其他Zone。

二、哪些配置是「流量进入Zone后,用来处理流量的规则」?

一旦流量被分配到某个Zone,剩下的配置项就是这个Zone对流量的处理规则,优先级从具体规则到默认策略:

  • services:预定义服务对应的端口/协议规则(比如http对应80/tcp)
  • ports:自定义的端口+协议(比如你例子里的123/tcp)
  • protocols:允许/拒绝的网络协议(比如tcp、udp)
  • forward-ports:端口转发规则
  • source-ports:基于源端口的过滤规则
  • icmp-blocks:指定要拒绝的ICMP报文类型
  • rich rules:更灵活的自定义规则(比如结合源IP、端口、日志的复杂规则)
  • target:Zone的默认 fallback 策略——如果流量不匹配上面任何一条允许规则,就执行target的动作:
    • ACCEPT:默认允许所有未匹配的流量
    • REJECT:拒绝并返回错误响应包
    • DROP:静默丢弃流量
    • %%REJECT%%:使用firewalld默认的拒绝类型处理

三、你的例子场景拆解

你配置了两个Zone:

  1. block Zone:绑定eth0接口,匹配源IP1.2.3.4,target设为%%REJECT%%
  2. other Zone:同样绑定eth0、匹配1.2.3.4,开放123/tcp端口,target设为ACCEPT

当1.2.3.4的流量访问123/tcp时:

  • 首先,firewalld按字母顺序检查Zone,block在other前面,所以流量先匹配到block Zone,直接进入这个Zone的规则流程
  • 进入block后,检查是否有允许该流量的规则:block里没有开放123/tcp的配置,所以流量不匹配任何允许规则,触发target%%REJECT%%,最终被拒绝

如果把other改名为another(字母顺序在block前面):

  • 流量会先匹配到another Zone,检查规则时发现开放了123/tcp,所以流量直接被允许,不会触发targetACCEPT(因为target只有在流量未匹配任何规则时才会生效)

四、所有配置项的明确分类

用于「Zone匹配(分配流量)」的配置:

  • interfaces
  • sources

用于「Zone内流量处理」的配置:

  • services
  • ports
  • protocols
  • forward-ports
  • source-ports
  • icmp-blocks
  • rich rules
  • target

备注:内容来源于stack exchange,提问作者artfulrobot

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 11:04:36