无法将接口保留在指定的区域中,Centos7

无法将接口保留在指定的区域中,Centos7

我遇到了一些奇怪的行为,防火墙有 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超出定义的区域。(直到那时,我们在接口配置文件中配置了区域)

显然,在生产环境中这是不可接受的。

我们如何解决这个问题:

  1. 禁用 NetworkManager
  2. 在区域文件中配置接口区域/etc/firewalld/zones/*.xml
  3. 语法如下:

    <interface name="<interface_name>"/>
    
  4. 现在您就可以毫无困难地使用restart/ firewalld 了reload

否则,我怀疑如果你用下面的命令设置你的区域并且Networkmanager禁用并且不运行它将正常工作

firewall-cmd --zone=<zone_name> --change-interface=<interface_name> --permanent

答案4

当系统使用网络管理器要处理接口配置(可能由空的或缺失的/etc/sysconfig/network-scripts/*目录条目表示),请尝试以下步骤通过 NetworkManager 的配置系统设置区域:

  1. 验证 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)
  1. 如果是,请列出连接“个人资料名称”(可能不同于设备名称)使用:nmcli
$ nmcli

                   vvvvvvvvvvvvvvvvvv "profile name"
eth0: connected to Wired connection 1
        "Red Hat Virtio"
        ethernet (virtio_net),
  1. nmcli使用配置文件名称设置所需的“区域” ,例如:
$ nmcli connection modify "Wired connection 1" connection.zone ZONE

区域更改应立即可见,firewall-cmd --get-active-zones并在将来的重启后继续生效。

相关内容