네트워크설정(netplan)
Linux 네트워크 설정 (/etc/network/interfaces & /etc/netplan) 완벽 가이드
1. 어떤 방식을 쓰는지 확인/선택
- Ubuntu 16.04 이하 / Debian →
/etc/network/interfaces
(ifupdown/ifupdown2) - Ubuntu 18.04+ →
/etc/netplan/*.yaml
(renderer:systemd-networkd
orNetworkManager
)
# netplan 사용 여부
which netplan && ls /etc/netplan
# 현재 렌더러 확인
networkctl --version
홈 k8s 서버라면: netplan + renderer: networkd 권장
2. 공통 운영 팁
- 원격 수정 시
netplan try
로 롤백 가능 - K8s 노드 IP는 고정 IP 또는 DHCP 예약 권장
- 오버레이 네트워크 MTU 조정 필요
- VLAN, bond 등으로 네트워크 분리 가능
3. /etc/network/interfaces
방식 예제
auto lo
iface lo inet loopback
# DHCP
auto enp3s0
iface enp3s0 inet dhcp
# Static IPv4
auto enp3s0
iface enp3s0 inet static
address 192.168.10.21/24
gateway 192.168.10.1
dns-nameservers 1.1.1.1 8.8.8.8
mtu 1500
# Static IPv6
iface enp3s0 inet6 static
address 2001:db8:1::21/64
gateway 2001:db8:1::1
dns-nameservers 2606:4700:4700::1111
적용:
sudo ifdown enp3s0 && sudo ifup enp3s0
# ifupdown2 설치 시
sudo ifreload -a
추가 예제
- 라우트 추가
up ip route add 10.10.0.0/16 via 192.168.10.254 metric 50
down ip route del 10.10.0.0/16 via 192.168.10.254 metric 50
- 여러 IP
up ip addr add 192.168.10.22/24 dev enp3s0
down ip addr del 192.168.10.22/24 dev enp3s0
- VLAN
auto enp3s0.100
iface enp3s0.100 inet static
address 192.168.100.21/24
vlan-raw-device enp3s0
- 브리지
auto br0
iface br0 inet static
address 192.168.10.40/24
gateway 192.168.10.1
bridge_ports enp3s0
bridge_stp off
bridge_fd 0
- 본딩(LACP)
auto bond0
iface bond0 inet static
address 192.168.10.30/24
gateway 192.168.10.1
bond-slaves enp2s0 enp3s0
bond-mode 802.3ad
bond-miimon 100
bond-lacp-rate 1
4. /etc/netplan
방식 예제
DHCP
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: true
Static IPv4/IPv6
network:
version: 2
renderer: networkd
ethernets:
enp3s0:
dhcp4: no
addresses: [192.168.10.21/24]
gateway4: 192.168.10.1
nameservers:
addresses: [1.1.1.1, 8.8.8.8]
mtu: 1500
dhcp6: no
addresses: [2001:db8:1::21/64]
routes:
- to: ::/0
via: 2001:db8:1::1
VLAN
network:
version: 2
renderer: networkd
ethernets:
enp3s0: {}
vlans:
enp3s0.100:
id: 100
link: enp3s0
addresses: [192.168.100.21/24]
브리지
network:
version: 2
renderer: networkd
ethernets:
enp3s0: {}
bridges:
br0:
interfaces: [enp3s0]
addresses: [192.168.10.40/24]
gateway4: 192.168.10.1
본딩
network:
version: 2
renderer: networkd
ethernets:
enp2s0: {}
enp3s0: {}
bonds:
bond0:
interfaces: [enp2s0, enp3s0]
addresses: [192.168.10.30/24]
gateway4: 192.168.10.1
parameters:
mode: 802.3ad
mii-monitor-interval: 100
5. 상황별 추천 패턴
- 단일 NIC 고정 IP
ethernets:
enp3s0:
dhcp4: no
addresses: [192.168.10.21/24]
gateway4: 192.168.10.1
mtu: 1450
- 관리/스토리지/인그레스 VLAN 분리
vlans:
mgmt.10:
id: 10
link: enp3s0
addresses: [192.168.10.21/24]
storage.20:
id: 20
link: enp3s0
addresses: [10.20.0.21/24]
ingress.30:
id: 30
link: enp3s0
addresses: [172.30.0.21/24]
- 본딩 + VLAN/브리지
- 스위치 LACP 지원 시 대역폭/이중화 확보
6. 검증 명령
ip addr
ip route
resolvectl status
networkctl status -a
bridge link
cat /proc/net/bonding/bond0
7. 주의사항
- cloud-init 사용 시 netplan 수동 설정 보호
- /etc/resolv.conf는 systemd-resolved가 관리
- 원격 변경 시 netplan try 필수
- MTU 조정 안 하면 오버레이 네트워크 불안 가능
8. netplan nameservers와 /etc/resolv.conf 관계
netplan
에서 지정하는:
nameservers:
addresses: [1.1.1.1, 8.8.8.8]
이는 결국 /etc/resolv.conf
에 들어갈 DNS 서버를 설정하는 것이며, 완전히 무관한 것이 아니라 최종적으로 /etc/resolv.conf
에 영향을 주는 설정입니다.
최근 Ubuntu에서는 /etc/resolv.conf
가 직접 수정 대상이 아니라 systemd-resolved
나 NetworkManager가 관리하는 파일이기 때문에, netplan에서 DNS를 설정하는 것이 올바른 방법입니다.
1. 관계 정리
- 전통 방식(ifupdown 시절)
/etc/network/interfaces
→dns-nameservers
옵션 →/etc/resolv.conf
직접 작성 - netplan + systemd-networkd / systemd-resolved
netplan의nameservers:
→ systemd-networkd 설정에 적용 → systemd-resolved가/etc/resolv.conf
생성 - netplan + NetworkManager
netplan의nameservers:
→ NM DNS 설정에 전달 → resolv.conf 업데이트
즉, netplan에서 지정한 nameservers
는 최종적으로 resolv.conf에 반영되지만, /etc/resolv.conf
를 직접 수정하면 systemd-resolved가 덮어쓸 수 있습니다.
2. resolv.conf 직접 수정이 불가한 이유
Ubuntu 18.04+ 대부분은:
$ ls -l /etc/resolv.conf
/etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
처럼 심볼릭 링크로 되어 있으며, 실제로는 /run/systemd/resolve/stub-resolv.conf
파일이 systemd-resolved에 의해 생성·관리됩니다.
이 상태에서 직접 수정해도 재부팅하거나 systemd-resolved가 리프레시하면 변경이 사라집니다.
3. 언제 netplan nameservers:
를 써야 하는가?
- DHCP가 아닌 static IP 설정을 할 때
DHCP를 사용하지 않으면 자동으로 DNS 서버 주소를 받아오지 않으므로 직접 지정 필요 - 내부 DNS 사용 시
회사/집 내부 네트워크의 프라이빗 DNS 서버나 Kubernetes CoreDNS 등 - 공용 DNS로 변경하고 싶을 때
Cloudflare(1.1.1.1), Google DNS(8.8.8.8), Quad9(9.9.9.9) 등 - 특정 네트워크 인터페이스만 다른 DNS를 쓰고 싶을 때
4. K8s 홈서버에서 추천 케이스
- 외부 공용 DNS 사용
nameservers:
addresses: [1.1.1.1, 8.8.8.8]
- 내부 DNS + 외부 DNS 병행
nameservers:
addresses: [192.168.10.1, 1.1.1.1]
- 검색 도메인 추가
nameservers:
addresses: [192.168.10.1, 1.1.1.1]
search: [home.local, cluster.local]
5. 정리
nameservers:
는 결국/etc/resolv.conf
에 들어가는 DNS 서버 목록을 설정하는 것- static IP 환경이나 특별한 DNS가 필요할 때 반드시 지정
- DHCP 사용 시에는 보통 DHCP 서버가 DNS를 제공하므로 netplan에 따로 설정하지 않아도 됨
/etc/resolv.conf
직접 수정은 권장하지 않으며, netplan이나 NetworkManager를 통해 설정하는 것이 안전