我有一个 RHEL8 系统,用作 Docker Swarm 工作节点。它已firewalld
启用,并且有一个docker
区域,其中分配了docker0
和接口。docker_gwbridge
$ cat /etc/firewalld/zones/docker.xml
<?xml version="1.0" encoding="utf-8"?>
<zone version="1.0" target="ACCEPT">
<short>docker</short>
<description>zone for docker bridge network interfaces</description>
<interface name="docker_gwbridge"/>
<interface name="docker0"/>
</zone>
重新启动、重启或重新加载后firewalld
,这些接口将出现在正确的区域中firewall-cmd --get-active-zones
。
$ firewall-cmd --get-active-zones
docker
interfaces: docker_gwbridge docker0
internal
interfaces: vethb6daacd veth0a3a13c veth3922477 veth1fc2c24 veth35f6f77 veth172d461 vethf457e97 vethed46b94 vethc3293eb vethe6c08de vethb1c5fb6 vethd6bcfd8 eth0
然而,几分钟后(通常不到一小时),它们就会转移到internal
区域,从而破坏容器内的网络。
$ firewall-cmd --get-active-zones
internal
interfaces: vethb6daacd veth0a3a13c veth3922477 veth1fc2c24 veth35f6f77 veth172d461 vethf457e97 vethed46b94 vethc3293eb vethe6c08de vethb1c5fb6 vethd6bcfd8 eth0 docker_gwbridge docker0 veth5686e56 vetha51060c vethde79c75
Afirewall-cmd --reload
又花了一小会儿时间修理它。
这个问题看起来相关,但这些接口(如果我解释正确的话)不由 NetworkManager 管理,所以我不认为这是错的。
$ nmcli device
DEVICE TYPE STATE CONNECTION
eth0 ethernet connected eth0
docker0 bridge connected (externally) docker0
docker_gwbridge bridge connected (externally) docker_gwbridge
veth5686e56 ethernet unmanaged --
vetha51060c ethernet unmanaged --
vethde79c75 ethernet unmanaged --
lo loopback unmanaged --
$ ls /etc/sysconfig/network-scripts/
ifcfg-eth0
我在 中找不到任何有趣的东西/var/log/firewalld
。我还有其他几个节点,理论上配置方式相同,不会发生此问题。
我没有设置节点,也不是系统管理员,但我正在尝试弄清楚!有什么明智的建议吗?
答案1
看起来 Chef 任务是造成这种情况的原因,Chef 在正常运行的服务器和损坏的服务器之间的配置莫名其妙地不同。