Cómo depurar un problema de red extraño de CentOS

Cómo depurar un problema de red extraño de CentOS

Tengo una máquina CentOS 7 que copia datos continuamente a AWS/S3.
Sin embargo, tiene un problema y agradecería sugerencias sobre cómo depurarlo.

La copia a S3 continuaría durante horas/días y luego la red dejaría de funcionar (tengo un crontrabajo que registra un ping a la red cada minuto, así como el comando S3 aws s3 cp, así que sé el minuto exacto en que sucedió). ).

En esa etapa, el NetworkManagerdemonio se ve bien syslogy journalctl -xeno muestra nada fuera de lo común, pero la única forma de hacer que la red vuelva a funcionar es reiniciar.

Ningún usuario en esa máquina tiene trabajos programados (crontab) para el momento en que la red dejó de funcionar normalmente, la máquina tiene una IP estática y hasta el momento del problema, la máquina y la red funcionan sin problemas.

¿Alguna idea sobre cómo solucionar este problema?

Edición 1:

Según la sugerencia de Artem Tashkinov, agregué a crontab una llamada, cada minuto, a un script que hace lo siguiente:

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

Y veré si es capaz de revivir la red cuando muera.

Edición 2:

Incluso con el guión, la red no revivió cuando falló.

Sin embargo, mejoré el script al agregar una NIC externa para ver si resuelve el 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

Respuesta1

pero la única forma de hacer que la red vuelva a funcionar es reiniciar

He tenido servidores como este en el pasado.

Lo que hice fue agregar una tarea al crontab haciendo ping a una dirección IP conocida. Si es inaccesible, se cerró la red, se eliminó el módulo del kernel responsable de la NIC ( rmmod module_name) y se insertó nuevamente ( modprobe module_name) y por último se inició nuevamente la red. Por favor pruebalo.

Si te funciona definitivamente deberíasReportar un error.

información relacionada