我遇到了一些奇怪的行为,防火墙有 3 个接口,并且使用永久分配规则对接口进行区域分配
重启后,它会跳回到默认区域(在防火墙中设置为默认区域的区域)
firewall-cmd --permanent --zone=external --add-interface=eno16777736
或者
firewall-cmd --permanent --zone=internal --change-interface=eno16777736
他们似乎没有工作....
答案1
这是一个错误,您可能想访问:https://bugs.centos.org/view.php?id=7526
我发现目前只有一个方法可以解决这个问题
echo "ZONE=what_ever_zone_youd_like" >> /etc/sysconfig/network-scripts/ifcfg-eno16777736
firewall-cmd --complete-reload
systemctl restart firewalld.service
然后检查
firewall-cmd --list-all-zones
答案2
我找到了如何解决 CentOS 7 中 FirewallD、NetworkManager 和 Docker 的类似问题。
这似乎是 FirewallD 中的一个问题,我在这里报告了这个问题,并提出了一个解决方法,使其在重启后正常工作:https://github.com/t-woerner/firewalld/issues/195
答案3
我以前也遇到过同样的问题。在我们的基础设施中,我们发现有时某些接口会毫无理由地NetworkManager
超出定义的区域。(直到那时,我们在接口配置文件中配置了区域)
显然,在生产环境中这是不可接受的。
我们如何解决这个问题:
- 禁用 NetworkManager
- 在区域文件中配置接口区域
/etc/firewalld/zones/*.xml
语法如下:
<interface name="<interface_name>"/>
现在您就可以毫无困难地使用
restart
/ firewalld 了reload
否则,我怀疑如果你用下面的命令设置你的区域并且Networkmanager
禁用并且不运行它将正常工作
firewall-cmd --zone=<zone_name> --change-interface=<interface_name> --permanent
答案4
当系统使用网络管理器要处理接口配置(可能由空的或缺失的/etc/sysconfig/network-scripts/*
目录条目表示),请尝试以下步骤通过 NetworkManager 的配置系统设置区域:
- 验证 NetworkManager 是否正在运行:
systemctl status NetworkManager
$ systemctl status NetworkManager
● NetworkManager.service - Network Manager
Loaded: loaded (/usr/lib/systemd/system/NetworkManager.service; enabled; vendor preset: enabled)
Active: active (running)
- 如果是,请列出连接“个人资料名称”(可能不同于设备名称)使用:
nmcli
$ nmcli
vvvvvvvvvvvvvvvvvv "profile name"
eth0: connected to Wired connection 1
"Red Hat Virtio"
ethernet (virtio_net),
nmcli
使用配置文件名称设置所需的“区域” ,例如:
$ nmcli connection modify "Wired connection 1" connection.zone ZONE
区域更改应立即可见,firewall-cmd --get-active-zones
并在将来的重启后继续生效。