Ubuntu Netplan 네트워크 설정

Ubuntu 서버의 정적 IP, 본딩, 브리지, VLAN, WiFi 설정을 포함하는 Netplan YAML 구성 템플릿입니다.

Gist
# /etc/netplan/00-network.yaml
# Ubuntu Netplan 네트워크 설정
# 적용: sudo netplan apply
# 검증: sudo netplan try (60초 후 자동 롤백)
# 디버그: sudo netplan --debug apply

network:
  version: 2
  renderer: networkd  # systemd-networkd 사용 (서버용 권장)
  # renderer: NetworkManager  # 데스크탑 환경에서는 NetworkManager 사용

  # ============================================================
  # 이더넷 인터페이스 설정
  # ============================================================
  ethernets:

    # ----------------------------------------------------------
    # eth0: 정적 IP 설정 (WAN/공인 IP 인터페이스)
    # ----------------------------------------------------------
    eth0:
      # DHCP 비활성화 (정적 IP 사용)
      dhcp4: false
      dhcp6: false

      # 정적 IP 주소 (CIDR 표기법)
      addresses:
        - 203.0.113.10/24       # IPv4 공인 주소
        - 2001:db8::10/64       # IPv6 주소

      # 기본 게이트웨이
      routes:
        - to: default
          via: 203.0.113.1      # IPv4 기본 게이트웨이
          metric: 100           # 낮을수록 우선순위 높음
        - to: default
          via: 2001:db8::1      # IPv6 기본 게이트웨이
          metric: 100

      # DNS 서버 설정
      nameservers:
        search:
          - example.com         # 도메인 검색 접미사
          - internal.example.com
        addresses:
          - 1.1.1.1             # Cloudflare DNS (Primary)
          - 1.0.0.1             # Cloudflare DNS (Secondary)
          - 2606:4700:4700::1111 # Cloudflare IPv6

      # MTU 설정 (점보 프레임: 데이터센터 내부망에서 성능 향상)
      mtu: 1500

    # ----------------------------------------------------------
    # eth1: DHCP 자동 설정 (내부 관리 인터페이스)
    # ----------------------------------------------------------
    eth1:
      dhcp4: true               # DHCP로 자동 IP 할당
      dhcp4-overrides:
        use-dns: false          # DHCP DNS 무시 (위 DNS 설정 유지)
        use-routes: false       # DHCP 라우트 무시
      dhcp6: false

    # ----------------------------------------------------------
    # 본딩용 슬레이브 인터페이스 (본딩 설정 시 IP 없음)
    # ----------------------------------------------------------
    eth2:
      dhcp4: false
    eth3:
      dhcp4: false

  # ============================================================
  # 본딩 설정 (고가용성 및 대역폭 향상)
  # bond0: eth2 + eth3 묶음
  # ============================================================
  bonds:
    bond0:
      # 본딩에 포함할 물리 인터페이스
      interfaces: [eth2, eth3]

      # 정적 IP (본딩 인터페이스에 할당)
      addresses:
        - 10.0.0.10/24

      routes:
        - to: 10.0.0.0/8
          via: 10.0.0.1

      parameters:
        # mode: active-backup = 하나 장애 시 자동 전환 (고가용성)
        # mode: 802.3ad      = LACP 링크 집계 (대역폭 확장, 스위치 지원 필요)
        # mode: balance-rr   = 라운드로빈 분산
        mode: active-backup
        primary: eth2           # 기본 활성 인터페이스
        mii-monitor-interval: 100  # 링크 상태 확인 주기 (ms)
        fail-over-mac-policy: active  # 페일오버 시 MAC 주소 정책

  # ============================================================
  # 브리지 설정 (가상화/컨테이너 환경, KVM/LXC 호스트)
  # ============================================================
  bridges:
    br0:
      # 브리지에 연결할 인터페이스 (VM이 이 브리지를 통해 외부 접속)
      interfaces: []            # 물리 인터페이스 없이 순수 소프트웨어 브리지
      addresses:
        - 192.168.100.1/24
      parameters:
        stp: false              # STP 비활성화 (단순 환경에서 지연 감소)
        forward-delay: 0        # 포워딩 지연 없음
        max-age: 12

  # ============================================================
  # VLAN 설정 (네트워크 분리)
  # eth0 물리 인터페이스에 여러 VLAN 태깅
  # ============================================================
  vlans:
    # VLAN 10: 운영 서비스 네트워크
    vlan10:
      id: 10
      link: eth0                # 부모 물리 인터페이스
      addresses:
        - 172.16.10.1/24
      nameservers:
        addresses: [172.16.10.53]

    # VLAN 20: 관리 네트워크 (모니터링, 백업 등)
    vlan20:
      id: 20
      link: eth0
      addresses:
        - 172.16.20.1/24

  # ============================================================
  # WiFi 설정 (무선 인터페이스, 서버보다 워크스테이션에 주로 사용)
  # ============================================================
  wifis:
    wlan0:
      dhcp4: true
      access-points:
        # WPA2-Personal 네트워크
        "MyNetwork":
          password: "supersecretpassword"

        # WPA2-Enterprise (802.1X, 기업 WiFi)
        "CorpNetwork":
          auth:
            key-management: eap
            method: peap
            identity: "user@example.com"
            password: "enterprisepassword"
            ca-certificate: /etc/ssl/certs/corp-ca.pem