Networking

CentOS 7:NetworkManager 連接重啟

  • February 9, 2017

我沒有看到這個問題被問到我看過的其他任何地方。長話短說,由於“連接已移除”,NetworkManager 會在每小時 1 分 1 秒後關閉 eth0。大多數時候,連接會在同一秒內恢復——儘管它顯然會斷開所有連接。在極少數情況下,它不會恢復,儘管設置了靜態 IPv4 地址,但在網路服務重新啟動之前不會恢復。

伺服器是由遠端託管服務提供商在 KVM 中執行的虛擬機,並且在每小時第一分鐘的第一秒內精確執行。這是最近安裝的 CentOS 7 的最小安裝(自 CentOS 4 以來第一次嘗試),只安裝了一個額外的應用程序:Cockpit。

以下是那一秒的日誌:

日誌控制

http://pastebin.com/sAGEEkrx

/var/log/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.hourly

/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

/碼頭清理

#!/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

我清除了 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

引用自:https://unix.stackexchange.com/questions/342282