잘 돌던 우분투 서버가 어느 날 아침부터 1분 간격으로 네트워크가 끊겼다 붙었다를 반복한 원인과, netplan 설정을 제대로 고정하는 방법입니다.
IDC 에서 연락이 왔습니다. 서버 한 대가 아침 7시부터 핑이 붙었다 안 붙었다 한다는 내용이었습니다.
들어가서 보니 서버가 약 45초마다 자기 IP 를 잃었다가 다시 붙이고 있었습니다. 몇 시간 동안 백 번이 넘게 반복했고, 그 서버에 기대던 다른 서비스들까지 줄줄이 재시작되고 있었습니다.
이상한 건 그 서버의 네트워크 설정을 한 달 넘게 아무도 건드리지 않았다는 점이었습니다. 원인은 한 달 전에 들어간 설정 실수였고, 그날 아침 자동 업데이트가 네트워크 서비스를 재시작하면서 처음 드러난 것이었습니다.
- netplan 은 /etc/netplan 아래 모든 yaml 을 합쳐서 최종 설정을 만든다
- 한 파일에 고정 IP 를 넣어도, 다른 파일의 dhcp4: true 가 살아 있으면 DHCP 도 같이 켜진다
- DHCP 서버가 없는 IDC 에서는 DHCP 실패로 IP 를 떼었다 붙였다 반복한다
- 설정을 고친 뒤 실제로 적용해서 확인하지 않으면 다음 재시작 때 터진다
1. 설정 파일이 여러 개면 전부 합쳐진다
우분투 서버의 네트워크 설정은 /etc/netplan 폴더의 yaml 파일로 합니다. 설치할 때 만들어진 파일이 하나 있고, NetworkManager 로 설정을 바꾸면 90-NM-...yaml 같은 파일이 따로 생기기도 합니다.
netplan 은 이 파일들을 이름 순서대로 읽어서 하나로 합칩니다. 같은 항목이 겹치면 뒤 파일 값이 이기고, 겹치지 않는 항목은 양쪽 것이 전부 살아남습니다.

문제의 서버가 이 상태였습니다. 뒤 파일에 고정 IP 를 넣었으니 고정 IP 로 바뀌었다고 생각했지만, 앞 파일의 dhcp4: true 는 뒤 파일에 반대 값이 없으니 그대로 남았습니다. 합친 결과는 "고정 IP 도 쓰고 DHCP 도 켠다"가 됩니다.
2. 왜 한 달 동안 멀쩡했나
설정 파일을 고친다고 바로 네트워크가 바뀌지는 않습니다. 적용 명령을 실행하거나, 네트워크 서비스가 다시 시작될 때 비로소 새 설정을 읽습니다.
이 서버는 설정을 고친 뒤 적용 없이 그대로 돌고 있었고, 그동안은 예전에 잡힌 IP 가 그대로 유지됐습니다. 겉보기에는 아무 문제가 없었습니다.
그러다 그날 아침 자동 보안 업데이트가 NetworkManager 패키지를 업그레이드하면서 서비스를 재시작했고, 그 순간 한 달 묵은 설정을 처음으로 읽었습니다.
- DHCP 가 켜져 있으니 DHCP 서버에 주소를 요청한다
- IDC 에는 DHCP 서버가 없어서 응답이 오지 않는다
- 일정 시간 뒤 실패로 판정하고 연결을 내리면서 IP 도 뗀다
- 다시 연결을 올리고, 또 실패하고, 이걸 45초 간격으로 반복한다
IDC 가 본 "1분 간격으로 붙었다 끊겼다"가 바로 이 반복이었습니다.
3. 합쳐진 최종 설정을 확인하는 법
파일을 하나씩 열어보면 각각은 멀쩡해 보여서 원인을 찾기 어렵습니다. 합친 결과를 직접 보는 게 빠릅니다.

netplan get 은 모든 파일을 합친 최종 설정을 보여주고, nmcli 로는 NetworkManager 가 실제로 쓰고 있는 방식을 볼 수 있습니다. 고정 IP 로 쓰려는 서버라면 여기서 manual 이 나와야 하는데, 이 서버는 auto(DHCP) 로 나왔습니다.
로그에서도 DHCP 요청이 시간 초과로 끝나는 줄이 반복해서 찍혀 있었습니다.
4. 고치는 순서
nmcli 로 방식만 manual 로 바꾸면 될 것 같지만, 다음에 netplan 이 파일을 다시 합치면 또 auto 로 돌아갑니다. 원본 파일의 dhcp4: true 를 직접 꺼야 합니다.

원격으로 작업한다면 조심할 게 하나 있습니다. 네트워크를 다시 올리는 순간 SSH 가 끊길 수 있어서, 명령이 중간에 멈추면 서버가 IP 없는 상태로 남을 수 있습니다. 명령들을 systemd-run 으로 넘겨 접속이 끊겨도 서버 안에서 끝까지 실행되게 하는 편이 안전합니다.
고친 뒤에는 몇 분 동안 핑을 걸어두고 한 번도 빠지지 않는지, 로그에 DHCP 시도가 더는 없는지 확인했습니다. 재부팅은 하지 않았습니다.
5. 다시 안 겪으려면
이번 일은 설정 실수 자체보다 고친 설정을 적용해 보지 않은 것이 컸습니다. 적용했다면 그 자리에서 바로 이상을 봤을 겁니다.
- netplan 파일을 고쳤으면 그 자리에서 적용하고 확인한다
- 고정 IP 서버는 모든 파일에서 dhcp4 가 어디에 남아 있는지 찾아본다
- 설정 파일이 여러 개면 하나로 정리하고, 안 쓰는 파일은 치운다
- 자동 업데이트가 켜진 서버라면 네트워크 서비스 재시작이 언제든 일어날 수 있다고 본다
6. 정리
한 달 동안 아무 일 없던 서버가 갑자기 끊기면 최근 변경부터 찾게 되는데, 실제 원인은 오래전에 들어가 적용만 안 된 설정인 경우가 있습니다.
- netplan 은 여러 yaml 을 합쳐서 쓴다
- 한 파일의 고정 IP 가 다른 파일의 dhcp4: true 를 지우지 않는다
- 확인은 netplan get 과 nmcli 로 합친 결과를 본다
- 고칠 때는 원본 파일의 dhcp4 를 직접 끈다
- 원격 작업은 systemd-run 으로 끊겨도 끝까지 돌게 한다
자동 업데이트가 서비스를 재시작하는 건 정상적인 동작이지만, 그 순간 숨어 있던 설정이 한꺼번에 드러난다는 점은 알아두면 좋습니다. 고정 IP 서버라면 설정 파일을 한 번쯤 전부 열어 합쳐진 결과를 확인해 보시길 권합니다.
여기까지 우분투 netplan 설정 병합으로 고정 IP 가 풀리는 문제에 대해서 작성해봤습니다. 여기까지 읽어주셔서 감사합니다!