Ubuntu를 새로 설치하면 기본적으로 DHCP로 IP를 자동 할당받지만, 서버로 운영하거나 고정된 주소로 접근해야 하는 환경이라면 정적 IP를 직접 설정해야 한다. Ubuntu 24.04 LTS는 이전 버전과 몇 가지 차이가 있다. Desktop 설치본은 기본 렌더러가 networkd에서 NetworkManager로 바뀌었고, Netplan 자체도 v1.0으로 올라가면서 YAML 파일을 직접 열지 않고도 netplan set/netplan status 같은 명령으로 설정을 확인·변경할 수 있게 됐다. 이 글에서는 Ubuntu 24.04에서 정적 IP를 설정하는 방법과, 이전 버전과 달라진 부분을 정리한다.
핵심 개념 — Netplan의 렌더러 구조
Netplan은 그 자체가 네트워크를 직접 제어하지 않는다. /etc/netplan/*.yaml에 작성한 선언적 설정을 읽어, 실제 네트워크 관리를 맡을 백엔드(렌더러)용 설정 파일로 변환해주는 역할만 한다. 이 백엔드가 systemd-networkd이거나 NetworkManager다.
| 구분 | 기본 렌더러 | 기본 설정 파일 위치 |
|---|---|---|
| Ubuntu 24.04 Server (subiquity 설치) | networkd | /etc/netplan/00-installer-config.yaml |
| Ubuntu 24.04 Server (클라우드 이미지) | networkd | /etc/netplan/50-cloud-init.yaml |
| Ubuntu 24.04 Desktop | NetworkManager | /etc/netplan/01-network-manager-all.yaml |
어떤 렌더러를 쓰든 YAML 문법과 netplan apply 절차는 동일하다. 다만 클라우드 이미지처럼 cloud-init이 부팅 때마다 네트워크 설정 파일을 다시 쓰는 환경에서는, 그 파일을 직접 고치면 다음 재부팅이나 재프로비저닝 시 되돌아갈 수 있으므로 별도 파일로 분리하는 편이 안전하다(뒤에서 다시 다룬다).
실전 코드
먼저 실제 인터페이스 이름을 확인한다. 가상머신이냐 베어메탈이냐, NIC 종류에 따라 eth0, ens33, enp0s3 등으로 이름이 제각각이므로 설정 파일을 작성하기 전에 반드시 확인해야 한다.
$ ip a
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
link/ether 08:00:27:aa:bb:cc brd ff:ff:ff:ff:ff:ff
inet 192.168.1.50/24 metric 100 brd 192.168.1.255 scope global dynamic enp0s3
인터페이스 이름을 확인했다면 /etc/netplan/00-installer-config.yaml을 열어 dhcp4: true로 되어 있는 부분을 정적 주소 설정으로 바꾼다.
network:
version: 2
renderer: networkd
ethernets:
enp0s3:
dhcp4: false
addresses:
- 192.168.1.100/24
routes:
- to: default
via: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
이전 버전에서 흔히 쓰던 gateway4 키는 Netplan v0.104부터 지원이 종료(deprecated)됐고, Ubuntu 24.04에서는 routes 아래 to: default/via 조합으로 기본 게이트웨이를 지정해야 한다. gateway4를 그대로 쓰면 경고와 함께 적용은 되지만, 향후 버전에서는 아예 제거될 예정이므로 새로 작성하는 설정은 routes 방식을 쓰는 편이 좋다.
YAML 문법 오류가 있으면 netplan apply가 네트워크를 끊어버릴 수 있으므로, 곧바로 적용하지 말고 netplan try로 먼저 테스트하는 것이 안전하다. 120초 안에 Enter로 확정하지 않으면 자동으로 이전 설정으로 롤백된다.
sudo netplan try
# 새 설정으로 정상 접속되는지 확인 후 Enter로 확정, 문제 있으면 그냥 대기(자동 롤백)
확정한 뒤에는 netplan apply로 최종 반영하고, 새로 추가된 netplan status로 실제 적용 상태를 바로 확인할 수 있다.
sudo netplan apply
sudo netplan status enp0s3
● 2: enp0s3 ethernet UP (networkd: enp0s3)
MAC Address: 08:00:27:aa:bb:cc
Addresses: 192.168.1.100/24
Routes: default via 192.168.1.1 (static)
DNS Addresses: 8.8.8.8, 8.8.4.4
Netplan v1.0부터는 YAML을 직접 열지 않고도 netplan set 명령으로 같은 설정을 넣을 수 있다. 자동화 스크립트에서 텍스트를 직접 편집하지 않고 값만 바꾸고 싶을 때 유용하다.
sudo netplan set ethernets.enp0s3.dhcp4=false
sudo netplan set ethernets.enp0s3.addresses="[192.168.1.100/24]"
sudo netplan apply
설정을 바꾸기 전과 후에 실제 시스템 상태가 YAML과 어긋나 있지 않은지 확인하고 싶다면 netplan status --diff를 쓴다. 파일에는 있지만 실제로 적용되지 않은 값이나 그 반대의 경우를 찾아준다.
sudo netplan status --diff
주의사항
원격 SSH 세션에서는 반드시 netplan try부터: 원격 서버에 SSH로 접속한 상태에서 netplan apply를 바로 실행했다가 IP나 게이트웨이가 잘못 적히면 즉시 접속이 끊기고 콘솔 접근 없이는 복구가 안 된다. netplan try의 자동 롤백 기능을 꼭 거쳐야 한다.
클라우드 이미지는 cloud-init이 설정을 덮어쓴다: /etc/netplan/50-cloud-init.yaml을 직접 수정해도, 다음 부팅이나 이미지 재생성 시 cloud-init이 원래 값으로 되돌려버릴 수 있다. 영구적으로 값을 바꾸려면 /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg에 network: {config: disabled}를 넣어 cloud-init의 네트워크 관리를 끄거나, 더 높은 우선순위 파일 이름(예: 99-custom.yaml)으로 별도 설정을 추가해야 한다.
Desktop은 NetworkManager가 기본이다: Ubuntu 24.04 Desktop에서는 Netplan YAML을 직접 고치는 대신 설정 → 네트워크 화면이나 nmcli로 바꾸는 게 더 안전하다. YAML을 직접 수정했다면 sudo netplan apply 후 NetworkManager가 해당 변경을 인식하도록 sudo systemctl restart NetworkManager가 필요할 수 있다.
YAML 들여쓰기 오류에 주의: Netplan 설정은 YAML이라 탭 대신 스페이스만 써야 하고, 들여쓰기가 한 칸만 어긋나도 netplan apply가 파싱 에러를 내며 실패한다. 편집 후에는 sudo netplan generate로 문법 오류만 먼저 가볍게 검증해볼 수 있다.
마무리
Ubuntu 24.04에서 정적 IP를 설정하는 기본 골격(YAML 작성 → apply)은 22.04와 크게 다르지 않지만, gateway4 대신 routes를 쓰도록 바뀐 문법, Desktop의 기본 렌더러 전환, 그리고 netplan try/status/set 같은 v1.0의 새 CLI 도구는 꼭 알아두는 편이 좋다. 특히 원격 서버를 다룰 때는 netplan try로 먼저 검증하는 습관이 실수로 인한 접속 두절을 막아준다.
참고
Introducing Netplan v1.0 (Ubuntu Blog)