我正在从 Almalinux 8 (RedHat 8) 迁移到 Almalinux 9 (RedHat 9),并且出现了奇怪的行为防火墙。
以下是我的配置(由列出firewall-cmd --list-all-zones
):
public (active)
target: default
icmp-block-inversion: no
interfaces: eth0
sources:
services: cockpit dhcpv6-client
ports: 443/tcp
protocols:
forward: yes
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
ssh-4-me (active)
target: default
icmp-block-inversion: no
interfaces:
sources: 111.111.0.0/16
services: ssh
ports:
protocols:
forward: no
masquerade: no
forward-ports:
source-ports:
icmp-blocks:
rich rules:
目的是 - 仅允许来自受信任主机子网的 SSH。它在 Almalinux 8 上的工作方式与我预期的一样,但在 Almalinux 9 上,似乎一旦源适合111.111.0.0/16
区域,ssh-4-me (active)
则仅应用该区域中明确指定的规则 - 即我可以连接到 SSH,但无法连接到通过public
区域允许的 443。如果我明确将 443 添加到区域,连接就会开始工作ssh-4-me
,但这种方式假设我需要将所有内容从复制public
到ssh-4-me
,我不喜欢这种方法。
我想还存在一些我不知道的其他“配置选项”,可以防止public
在这种情况下应用区域。
如何修复?如何强制防火墙使用该public
区域,即使与source
另一个区域匹配?
答案1
我也遇到了这个问题。
这实际上是一种行为改变:https://firewalld.org/2020/01/allowzonedrifting
不幸的是,无法在 RHEL 9 及其衍生版本中启用 AllowZoneDrifting。我在 AlmaLinux 9 上测试过,但没有成功,Red Hat 文档确认此设置被忽略了。