Firewalld多网卡隔离关键在于单网卡单区域绑定、source细化子网策略、各区域设REJECT默认目标、显式禁用FORWARD转发并用富规则控制跨区通信。

在 Firewalld 中实现多网卡隔离,关键不是给同一张网卡分配多个区域,而是让每张网卡(或其承载的子网)严格归属独立区域,并通过策略分层阻断跨网卡流量。核心逻辑是:区域绑定 → 默认拒绝 → 显式放行。
按网卡物理接口划分专属区域
每张网卡只绑定一个区域,避免策略混杂。例如 eth0 接办公网、eth1 接运维网、eth2 接 DMZ:
- firewall-cmd --permanent --zone=office --change-interface=eth0
- firewall-cmd --permanent --zone=mgmt --change-interface=eth1
- firewall-cmd --permanent --zone=dmz-web --change-interface=eth2
若需进一步细分(如单网卡承载多个 VLAN 子网),优先用 source 绑定替代多接口绑定,例如:
firewall-cmd --permanent --zone=office --add-source=192.168.10.0/24
firewall-cmd --permanent --zone=mgmt --add-source=192.168.20.0/24
为每个区域设定最小化信任策略
禁用默认宽松策略,每个区域从零构建规则:
- 清空默认服务:firewall-cmd --permanent --zone=office --remove-service=ssh --remove-service=dhcpv6-client
- 仅开放必需端口:firewall-cmd --permanent --zone=office --add-port=443/tcp
- 设默认动作为拒绝:firewall-cmd --permanent --zone=dmz-web --set-target=REJECT
不要复用 public 或 dmz 等预定义区域——它们的默认规则往往超出实际需要。
Zynq‑7000 / Zynq UltraScale+ 硬件调试技能。适用于 Xilinx Zynq(Cortex‑A9/A53 + FPGA)Linux 环境,调试 I2C、I2S、UART、GPIO 等外设。包括设备树配置、内核驱动、用户空间调试工具、交叉编译和常见问题排查,支持 PetaLinux 开发。
显式禁止跨网卡转发(最关键的隔离动作)
即使区域已分离,若未关闭 FORWARD 链的隐式通路,流量仍可能绕过区域边界:
- 确认系统未开启 IP 转发:sysctl net.ipv4.ip_forward 应返回 0;若为 1,执行 echo 0 > /proc/sys/net/ipv4/ip_forward 并写入 /etc/sysctl.conf
- 所有区域 FORWARD 默认策略设为 DROP:
firewall-cmd --permanent --direct --add-rule ipv4 filter FORWARD 0 -j DROP - 如需有限互通(如运维网访问管理 API),必须用富规则明确定义:
firewall-cmd --permanent --zone=mgmt --add-rich-rule='rule family="ipv4" source address="192.168.20.0/24" destination address="10.0.1.100" port port="22" protocol="tcp" accept'
切勿在任何区域启用 masquerade,否则可能造成 NAT 跳转,破坏隔离边界。
验证与清理冗余规则
隔离生效前务必检查潜在漏洞:
- 列出全部富规则:firewall-cmd --list-rich-rules
- 检查直接规则:firewall-cmd --direct --get-all-rules
- 确认各区域接口绑定:firewall-cmd --get-active-zones
- 重载后测试连通性:从 office 网段 ping mgmt 网段应不通,除非有明确富规则放行
没有业务依据的规则一律删除,保持策略精简可审计。

















