CentOS 7: NetworkManager Connection Restart

0

Não estou vendo essa pergunta em nenhum outro lugar que procurei. Para encurtar a história, o NetworkManager reduz a eth0 1 minuto e 1 segundo a cada hora pelo motivo de "remoção da conexão". Na maioria das vezes, a conexão volta a funcionar - embora obviamente desconecte tudo - dentro desse mesmo segundo. Em alguns casos distantes, ele não se recupera e, apesar de estar configurado com um endereço IPv4 estático, não será recuperado até que o serviço de rede seja reiniciado.

O servidor é uma máquina virtual em execução no KVM por um provedor de hospedagem remota e ocorre precisamente no primeiro segundo do primeiro minuto a cada hora. Este é um estoque recém-instalado, instalação mínima do CentOS 7 (experimentando pela primeira vez desde o CentOS 4) com apenas um aplicativo adicional instalado: Cockpit.

Aqui estão os registros desse segundo:

journalctl

link

/ 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

/ docker-cleanup

#!/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
    
por mrUlrik 03.02.2017 / 15:14

1 resposta

0

Limpei os arquivos ifcfg criados pela mídia de instalação do CentOS e usei o nmcli para criá-los do zero. O antigo e novo arquivo ifcfg acabou sendo quase exatamente o mesmo. As diferenças são a ordem do conteúdo, um novo UID gerado automaticamente e eu dei à conexão um nome personalizado de ext0 em vez de ser gerado. E agora funciona perfeitamente bem.

Então, no final, quem diabos sabe. O emoticon flip desk seria útil aqui.

Pelo que descobri, o NetworkManager separa completamente o dispositivo e a conexão. No meu caso, a cada hora, por algum motivo, o NetworkManager determinou que a eth0 não estava configurada apesar de ser assim e geraria uma nova conexão temporária que falharia. Portanto, soltando a conexão atual completamente, sem a temporária, e repita.

Talvez qualquer um desses dois itens sejam referências em outro lugar que eu não conheça, portanto, informar o NetworkManager de fato está em uso e controlado pelo NetworkManager (NM_CONTROLLED = yes não fez nada, para o registro).

No final, este é o meu 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
    
por 10.02.2017 / 00:27