네트워크설정(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 or NetworkManager)
# 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. 상황별 추천 패턴

  1. 단일 NIC 고정 IP
ethernets:
  enp3s0:
    dhcp4: no
    addresses: [192.168.10.21/24]
    gateway4: 192.168.10.1
    mtu: 1450
  1. 관리/스토리지/인그레스 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]
  1. 본딩 + 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/interfacesdns-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를 통해 설정하는 것이 안전