Como depurar um problema estranho de rede do CentOS

Como depurar um problema estranho de rede do CentOS

Eu tenho uma máquina CentOS 7 que copia dados continuamente para AWS/S3.
No entanto, há um problema, pelo qual ficaria grato por sugestões sobre como depurar.

A cópia para o S3 duraria horas/dias, e então a rede pararia de funcionar (tenho um crontrabalho que registra um ping na rede a cada minuto, assim como o comando do S3 aws s3 cp, então sei o minuto exato em que isso aconteceu ).

Nesse estágio, o NetworkManagerdaemon parece bem, sysloge journalctl -xenão mostra nada fora do comum, mas a única maneira de fazer a rede funcionar novamente é reinicializando.

Nenhum usuário nessa máquina possui trabalhos agendados (crontab) para o momento em que a rede parou de funcionar normalmente, a máquina possui um IP estático e, até o momento do problema, a máquina e a rede funcionam sem problemas.

Alguma idéia de como depurar esse problema?

Editar 1:

Por sugestão de Artem Tashkinov, adicionei ao crontab uma chamada, a cada minuto, para um script que faz o seguinte:

#!/bin/bash -xv
ping -c1 1.1.1.1 >/dev/null 2>&1
if [ $? -eq 0 ];
then
        echo Successful
else
        echo Fail
        systemctl stop NetworkManager
        rmmod r8169
        modprobe r8169
        systemctl start NetworkManager
fi

E verei se é capaz de reviver a rede quando ela morrer.

Editar 2:

Mesmo com o script, a rede não foi reativada quando falhou.

Porém, aprimorei o script ao adicionar uma NIC externa, para ver se isso resolveria o problema.

#!/bin/bash -xv
#
#kernel_module="r8169"  # on-board NIC
#kernel_module="e1000e" # add-on NIC

nic=$( ifconfig | grep -B1 10.60.100 | head -1 | awk -F: '{ print $1 }' )
kernel_module=$( ethtool -i $nic | grep driver | awk '{ print $NF }' )

ping -c1 1.1.1.1 >/dev/null 2>&1
if [ $? -eq 0 ];
#if [ $? -ne 0 ];
then
        echo Successful
else
        echo Fail
        systemctl stop NetworkManager
        rmmod $kernel_module
        modprobe $kernel_module
        systemctl start NetworkManager
fi

Responder1

mas a única maneira de fazer a rede funcionar novamente é reinicializando

Já tive servidores assim no passado.

O que fiz foi adicionar uma tarefa ao crontab fazendo ping em um endereço IP conhecido. Caso estivesse inacessível, a rede era desligada, o módulo do kernel responsável pela NIC era removido ( rmmod module_name) e inserido novamente ( modprobe module_name) e por último a rede era reiniciada. Por favor tente.

Se funcionar para você, você definitivamente deveriareportar um erro.

informação relacionada