본문 바로가기

개발/리눅스 프로그래밍

CentOS7 NetworkManager 문제

  동적 네트워크 환경에서 네트워크 자동 설정 및 구성을 담당하는 데몬. 사용하는 네트워크 환경이 자주 바뀌는 경우(Wifi 연결 등) 바뀔 때마다 네트워크 환경을 바꿔주어야 하는데, 이런 환경에 최적화되어있는 프로그램이 NetworkManager입니다. 리눅스 환경에서 사용하는 데몬이며 노트북이나 스마트폰 등의 환경에서 주로 사용합니다.

  CentOS 6까지는 이 데몬을 선택적으로 설치해 사용할 수 있었지만, CentOS 7부터는 기본 네트워크 관리 데몬으로 사용합니다. 동적 네트워크 자동 설정, GUI를 사용한 네트워크 설정 및 네트워크 설정 기능 개선 등 장점이 많은 데몬이더라구요.

  하지만 이 데몬을 서버에서 사용하기에는 모호한 부분이 많았습다. 서버에서는 다른 여러 패키지를 설치해 함께 사용하는데, 충돌을 일으키는 패키지가 많은 것이죠. 아래는 검색을 통해 발견한 NetworkManager 문제 사례들입니다..

    1. apache+php+mysql로 웹서버를 만들어 운영하던 서버에서 Centos7로 바꾼 뒤 3~4일 주기로 모든 네트워크가 끊어지는 현상 발생

    2. GNOME 환경에서 네트워크 연결이 끊겼지만 ifconfig로 확인한 결과 인터페이스는 살아있었음
      -> NetworkManager에서 설정한 내용이 ifconfig에 반영되지 않음

    3. nmcli로 라우터를 추가하면 ntp 시간 동기화 실패
      -> ip route로 추가하면 ntp시간 동기화 성공

    4. service network start 실행 시 다음 오류 발생
  • 오류 : Failed to start LSB: Bring up/down networking

네 가지 오류 모두 NetworkManager를 종료하는 것으로 해결했다고 합니다.

 

제가 겪은 문제도, NetworkManager이 활성화되어있을 때 수행한 라우팅테이블 설정 작업에서 발생했습니다.

#include <stdlib.h>

int main( int args, char **argv ) {
	system("ifconfig enp0s3 down");
    system("ifconfig enp0s3 [ip] netmask [netmask] up");
    
    return 0;
}

  ifconfig로 인터페이스를 up하게 되면 자동으로 라우팅 테이블에 기본 라우터 정보가 설정됩니다. 그런데 NetworkManager가 활성화되어있을 때에는 안되더라구요..... 정확히는 Centos7에 어떤 패키지를 깔아야 한다는 조건도 있지만, 한방에 수 백개의 패키지를 설치했더니 어떤 패키지인지는 모르겠네요ㅠㅠㅠ

 

이거 찾으려고 오만 네트워크 설정을 다 해보고 로그를 뒤지고, 고생했지만 재밌는걸 발견해서 뿌듯하네요!!

오늘의 교훈 : CentOS 7 에서 네트워크 문제가 나면 NetworkManager부터 의심하자!!