CentOS 이상한 네트워킹 문제를 디버깅하는 방법

CentOS 이상한 네트워킹 문제를 디버깅하는 방법

AWS/S3에 지속적으로 데이터를 복사하는 CentOS 7 시스템이 있습니다.
그러나 문제가 있으므로 디버깅 방법에 대한 제안을 주시면 감사하겠습니다.

S3에 대한 복사는 몇 시간/일 동안 계속되고 네트워크는 작동을 중지합니다. ( cron매분마다 네트워크에 대한 핑을 기록하는 작업과 S3 명령을 기록하는 작업이 있으므로 aws s3 cp복사가 발생한 정확한 분을 알 수 있습니다. ).

그 단계에서 NetworkManager데몬은 괜찮아 보이고, 이상한 것은 아무것도 표시하지 syslog않습니다 journalctl -xe. 그러나 네트워크 기능을 다시 만드는 유일한 방법은 재부팅입니다.

해당 머신의 어떤 사용자도 네트워크가 정상적으로 작동하지 않는 시간 동안 예약된(crontab) 작업을 하지 않고, 머신에 고정 IP가 있으며, 문제가 발생한 순간까지 머신과 네트워크가 문제 없이 작동합니다.

이 문제를 디버깅하는 방법에 대한 아이디어가 있습니까?

편집 1:

Artem Tashkinov의 제안에 따라 매분마다 다음을 수행하는 스크립트에 대한 호출을 crontab에 추가했습니다.

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

그리고 네트워크가 죽었을 때 네트워크를 되살릴 수 있는지 알아볼 것입니다.

편집 2:

스크립트를 사용해도 네트워크가 실패하면 다시 살아나지 않았습니다.

하지만 외부 NIC를 추가하면서 스크립트를 강화하여 문제가 해결되는지 확인했습니다.

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

답변1

하지만 네트워크 기능을 다시 작동시키는 유일한 방법은 재부팅뿐입니다.

과거에 이런 서버가 있었습니다.

내가 한 일은 알려진 IP 주소에 대해 ping을 보내는 작업을 crontab에 추가하는 것이었습니다. 접근이 불가능한 경우에는 네트워크를 종료하고 NIC를 담당하는 커널 모듈을 제거( rmmod module_name)한 후 다시 삽입( modprobe module_name)한 뒤 마지막으로 네트워크를 다시 시작했다. 꼭 시도해 보세요.

그것이 당신에게 효과가 있다면 반드시해야합니다버그 신고.

관련 정보