클릭하여 터미널 활성화

고정 IP 설정하는 방법 | DHCP → Static IP Netplan 설정

// WSL2 · Ubuntu · Network · Netplan · Static IP
DHCP 자동 할당 → 고정 IP 고정 — Netplan + resolv.conf 수동 설정

왜 고정 IP를 써야 하냐면

WSL2는 기본적으로 DHCP다. 재시작할 때마다 IP가 새로 할당된다.

"어제 잘 됐는데 오늘 갑자기 안 된다 — IP 바뀐 거다."

서버를 올려두거나, 방화벽에 IP를 등록해두거나, 다른 시스템에서 접근할 때 IP가 바뀌면 전부 다시 설정해야 한다. 귀찮은 걸 넘어서 운영 환경에서는 장애로 이어진다. 고정 IP는 선택이 아니다.

작업 환경
OS           : Ubuntu 24.04.4 LTS (WSL2)
커널        : Linux 6.6.87.2-microsoft-standard-WSL2
인터페이스  : eth0

변경 전 / 후

BEFORE — DHCP
IP      : 192.168.51.20 (유동)
서브넷 : 255.255.240.0 (/20)
GW     : 192.168.48.1
DNS    : 10.255.255.254 (자동)
AFTER — 고정 IP
IP      : 192.168.51.20 (고정)
서브넷 : 255.255.240.0 (/20)
GW     : 192.168.48.1
DNS    : 10.255.255.254, 8.8.8.8

기술 스택

NETWORK CONFIG
Netplan
Ubuntu 네트워크 설정 도구
DNS
resolv.conf
수동 DNS 설정
WSL CONFIG
wsl.conf
자동 생성 비활성화
INTERFACE
eth0
WSL2 기본 네트워크 인터페이스

구조

FILES
/etc/netplan/01-static-ip.yaml고정 IP + 라우팅 설정
/etc/wsl.confresolv.conf 자동생성 비활성화
/etc/resolv.confDNS 수동 설정

Netplan 설정 파일 생성

Netplan 설정 파일을 만든다. 파일명 앞에 숫자가 붙는 건 우선순위 때문이다. 숫자가 낮을수록 먼저 적용된다.

Ubuntu (WSL2)
user@HOME:~$ sudo vi /etc/netplan/01-static-ip.yaml
/etc/netplan/01-static-ip.yaml
network:
version: 2
renderer: networkd
ethernets:
eth0:
dhcp4: no ← DHCP 끄기
addresses:
- 192.168.51.20/20 ← 고정할 IP
routes:
- to: default
via: 192.168.48.1 ← 게이트웨이
nameservers:
addresses:
- 10.255.255.254 ← WSL2 내부 DNS
- 8.8.8.8 ← Google DNS (백업)

저장 후 파일 권한을 600으로 바꾼다. Netplan은 권한이 넓으면 경고 내고 적용 안 된다.

Ubuntu (WSL2)
user@HOME:~$ sudo chmod 600 /etc/netplan/01-static-ip.yaml
⚠️
YAML 들여쓰기 주의
YAML은 탭(Tab) 쓰면 오류 난다. 반드시 스페이스(Space)로 들여쓰기해야 한다. vi에서 붙여넣을 때 자동으로 탭이 들어가는 경우가 있으니 확인할 것.
01-static-ip.yaml 작성

WSL2 resolv.conf 자동생성 비활성화

WSL2는 기본적으로 /etc/resolv.conf를 자동으로 생성한다. 수동으로 DNS를 잡아도 재시작하면 덮어써진다. wsl.conf로 자동생성을 꺼야 한다.

Ubuntu (WSL2)
user@HOME:~$ sudo vi /etc/wsl.conf
/etc/wsl.conf — 추가
[network]
generateResolvConf=false ← resolv.conf 자동생성 끄기
wsl.conf 설정



resolv.conf 수동 설정

기존 /etc/resolv.conf는 심볼릭 링크다. 삭제하고 직접 파일을 만든다.

resolv.conf DNS 설정 이유

  nameserver 10.255.255.254   ← 1순위

  nameserver 8.8.8.8          ← 2순위 (백업)

  

10.255.255.254 를 1순위로 설정한 이유

  WSL2 전용 내부 DNS 서버입니다.

  - Microsoft가 WSL2를 위해 만든 가상 DNS 리졸버

  - Windows에 설정된 DNS를 그대로 WSL2에 전달해주는 역할

  - WSL2가 원래 자동으로 사용하던 DNS라 기존 환경과 동일하게 유지하기 위해 설정


  8.8.8.8 을 2순위로 설정한 이유

  Google의 공개 DNS 서버입니다.

  - 10.255.255.254가 응답 없을 때 자동으로 대체

  - WSL2 내부 DNS가 문제 생겨도 인터넷 연결 유지

Ubuntu (WSL2)
# 기존 심볼릭 링크 제거
user@HOME:~$ sudo rm /etc/resolv.conf
# resolv.conf 수동 생성
user@HOME:~$ sudo vi /etc/resolv.conf
/etc/resolv.conf
nameserver 10.255.255.254 ← WSL2 내부 DNS
nameserver 8.8.8.8 ← Google DNS (백업)
resolv.conf 수동 설정


Netplan 적용 및 확인

Ubuntu (WSL2)
# Netplan 설정 적용
user@HOME:~$ sudo netplan apply
# IP 확인
user@HOME:~$ ip addr show eth0
inet 192.168.51.20/20 brd 192.168.63.255 scope global eth0
   valid_lft forever preferred_lft forever
# 라우팅 확인
user@HOME:~$ ip route show
default via 192.168.48.1 dev eth0
고정 IP 적용 성공 확인 포인트
valid_lft forever 가 나오면 고정 IP 적용 완료다. DHCP였으면 숫자(남은 임대 시간)가 나온다.
netplan apply 후 ip addr show eth0



전체 흐름 요약

SETUP FLOW
01vi /etc/netplan/01-static-ip.yaml  고정 IP 설정 작성
02chmod 600 /etc/netplan/01-static-ip.yaml
03vi /etc/wsl.conf  generateResolvConf=false
04rm /etc/resolv.conf  심볼릭 링크 제거
05vi /etc/resolv.conf  DNS 수동 작성
06netplan apply
07ip addr show eth0valid_lft forever ✓

주의사항

⚠️
Windows 재부팅하면 IP가 다시 바뀔 수 있다
WSL2 특성상 Windows를 재부팅하면 Hyper-V DHCP가 다시 개입할 수 있다. 완전한 영구 고정을 원하면 Windows Hyper-V 관리자에서 해당 MAC 주소(00:15:5d:73:65:7f)에 IP를 예약해야 한다.
💡
Hyper-V에서 MAC 주소 IP 예약하는 방법
Windows 검색 → Hyper-V 관리자 실행
가상 스위치 관리자 → 해당 스위치 선택
DHCP 서버 설정 → MAC 주소 예약 추가
MAC: 00:15:5d:73:65:7f → IP: 192.168.51.20

Netplan으로 잡은 고정 IP는 WSL2 재시작에는 유지된다. Windows 재부팅까지 완벽하게 고정하려면 Hyper-V 예약까지 해야 진짜 영구 고정이다.

// 결론
재시작마다 IP 바뀌는 거 이제 끝났다.
Netplan + resolv.conf 수동 설정, 이게 전부다.
Tags: #WSL2 #Ubuntu #Netplan #고정IP #StaticIP #네트워크설정 #resolv.conf