我在其他地方都没有看到有人问过这个问题。长话短说,NetworkManager 每小时都会因“连接已删除”而关闭 eth0 1 分 1 秒。大多数时候,连接会在同一秒内恢复,尽管它显然会断开所有连接。在某些极少数情况下,它不会恢复,尽管设置了静态 IPv4 地址,但只有重新启动网络服务后才会恢复。
该服务器是由远程托管提供商在 KVM 中运行的虚拟机,并且恰好在每小时第一分钟的第一秒内发生。这是最近安装的 CentOS 7 的库存最小安装(自 CentOS 4 以来第一次尝试),仅安装了一个附加应用程序:Cockpit。
这是那一秒的日志:
日志控制
/var/日志/cron
Feb 3 08:01:01 hyaena CROND[1094]: (root) CMD (run-parts /etc/cron.hourly)
Feb 3 08:01:01 hyaena run-parts(/etc/cron.hourly)[1094]: starting 0anacron
Feb 3 08:01:01 hyaena run-parts(/etc/cron.hourly)[1103]: finished 0anacron
Feb 3 08:01:01 hyaena run-parts(/etc/cron.hourly)[1094]: starting docker-cleanup
Feb 3 08:01:01 hyaena run-parts(/etc/cron.hourly)[1111]: finished docker-cleanup
/etc/cron.每小时
/0anacron
#!/bin/sh
# Check whether 0anacron was run today already
if test -r /var/spool/anacron/cron.daily; then
day=`cat /var/spool/anacron/cron.daily`
fi
if [ `date +%Y%m%d` = "$day" ]; then
exit 0;
fi
# Do not run jobs when on battery power
if test -x /usr/bin/on_ac_power; then
/usr/bin/on_ac_power >/dev/null 2>&1
if test $? -eq 1; then
exit 0
fi
fi
/usr/sbin/anacron -s
/docker 清理
#!/bin/bash
# Do nothing if neither docker nor docker-latest service is running
if ! systemctl --quiet is-active docker-latest && ! systemctl --quiet is-active docker; then
exit 0
fi
# If there are no dead containers, exit.
DEAD_CONTAINERS=`docker ps -aq -f status=dead`
[ -z "$DEAD_CONTAINERS" ] && exit 0
# Try to cleanup dead containers
docker rm $DEAD_CONTAINERS
答案1
我清除了 CentOS 安装介质创建的 ifcfg 文件,并使用 nmcli 从头开始创建它们。旧的和新的 ifcfg 文件最终几乎完全相同。不同之处在于内容的顺序、自动生成的新 UID,以及我为连接指定了自定义名称 ext0,而不是自动生成。现在它工作得很好。
所以,最后,谁知道呢。翻转桌面表情符号在这里会很有用。
根据我的发现,NetworkManager 完全分离了设备和连接。就我而言,每小时都会由于某种原因 NetworkManager 确定 eth0 未配置(尽管如此),并且会生成一个临时的新连接,然后该连接会失败。因此,完全删除当前连接,使临时连接失败,然后重复。
也许这两个项目中的任何一个都是我不知道的其他地方的引用,因此通知 NetworkManager 它确实在使用中并由 NetworkManager 控制(NM_CONTROLLED=yes 没有执行任何操作,以记录)。
最后,这是我的 ifcfg-ext0:
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=yes
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=yes
NAME=ext0 # Arbitrary name given
UUID=<UUID generated by NetworkManager>
DEVICE=eth0
ONBOOT=yes
ZONE=drop
DNS1=<IPv4 DNS server>
DNS2=<IPv4 DNS server>
IPADDR=<static IPv4address>
PREFIX=24
GATEWAY=<static IPv4 gateway>
DOMAIN=<my domain>
DNS3=<IPv6 DNS server>
DNS4=<IPv6 DNS server>
IPV6_PEERDNS=yes
IPV6_PEERROUTES=yes
IPV6_PRIVACY=no