Ubuntu에서 Netplan 마스터하기: YAML을 활용한 네트워크 구성 완전 가이드

1. Ubuntu에서 Netplan 개요

Netplan이란?

Netplan은 Ubuntu 17.10부터 도입된 네트워크 구성 관리 도구입니다. 이전에는 ifconfig/etc/network/interfaces와 같은 도구를 사용했지만, Netplan은 네트워크 구성을 새로운 방식으로 제공합니다. Netplan의 가장 큰 장점 중 하나는 네트워크 설정을 YAML 파일로 기술한다는 점입니다. 이를 통해 구성 파일이 간단하고 일관되게 작성되며, 복잡한 네트워크 환경도 손쉽게 관리할 수 있습니다.

Netplan은 NetworkManagersystemd-networkd와 같은 백엔드를 지원하며, Ubuntu Desktop과 Server 에디션 모두에서 사용할 수 있습니다. 이를 통해 다양한 환경에서 통합된 네트워크 관리를 구현할 수 있습니다.

왜 Netplan을 사용해야 할까?

전통적인 네트워크 구성 방식에 비해 Netplan은 다음과 같은 장점을 제공합니다:

  1. 간단한 문법 : YAML 형식은 직관적이고 구조가 명확해 초보자도 쉽게 이해할 수 있습니다.
  2. 통합 관리 : 데스크톱과 서버 환경 모두에서 동작하므로, 다양한 네트워크 구성을 중앙에서 관리할 수 있습니다.
  3. 동적 변경 : 구성 파일을 편집하고 적용하면 네트워크 설정이 실시간으로 업데이트됩니다.

Netplan 기본 구조

Netplan 구성 파일은 일반적으로 /etc/netplan/ 디렉터리에 위치하며, 파일 확장자는 .yaml입니다. 이 파일들에는 네트워크 인터페이스 설정, IP 주소, DNS 서버 정보 등이 포함됩니다.

아래는 기본 Netplan 구성 예시입니다:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      dhcp4: true

위 예시에서는 enp3s0 이더넷 인터페이스가 DHCP를 통해 IP 주소를 자동으로 얻도록 설정되었습니다.

Ubuntu 18.04 LTS 이후 버전에서 Netplan의 역할

Netplan은 Ubuntu 18.04 LTS 및 이후 버전에서 기본으로 설치되며, 데스크톱 및 서버 환경 모두에서 네트워크 관리에 널리 사용됩니다. 특히 서버 환경에서는 다중 네트워크 인터페이스나 고정 IP 할당이 자주 필요하기 때문에 Netplan의 유연성이 큰 장점으로 작용합니다.

다음 섹션에서는 Netplan을 사용한 실제 네트워크 구성 예제를 살펴보겠습니다.

2. 기본 Netplan 구성

Netplan 구성 파일 위치

Netplan 구성 파일은 일반적으로 /etc/netplan/ 디렉터리에 저장됩니다. 이 .yaml 파일들을 편집하여 네트워크 설정을 변경할 수 있습니다. 50-cloud-init.yaml와 같은 파일명이 흔히 사용되지만, 환경에 따라 다를 수 있습니다.

구성 파일을 열려면 vi 또는 nano와 같은 텍스트 편집기를 사용합니다:

sudo vi /etc/netplan/50-cloud-init.yaml

동적 IP 주소 구성 (DHCP)

DHCP를 이용해 자동으로 IP 주소를 얻으려면 다음과 같은 YAML 구성을 사용합니다. 가장 간단한 설정이며 가정이나 사무실 환경에서 흔히 사용됩니다.

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      dhcp4: true

고정 IP 주소 구성

서버나 특정 장치에 고정 IP 주소를 할당해야 하는 경우가 있습니다. 아래 예시는 고정 IP 주소를 설정하는 방법을 보여줍니다.

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4

구성 적용

구성 파일을 편집한 후에는 아래 명령을 사용해 Netplan 구성을 적용합니다:

sudo netplan apply

구성 확인

Netplan 설정이 정상적으로 적용되었는지 확인하려면 다음 명령으로 네트워크 인터페이스 상태를 확인합니다:

ip a

3. 다중 네트워크 인터페이스 구성

다중 이더넷 인터페이스 구성

다중 네트워크 인터페이스를 가진 장치는 각 인터페이스에 서로 다른 설정을 할당할 수 있습니다. 아래 예시는 두 개의 이더넷 인터페이스를 구성하는 방법을 보여줍니다.

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      dhcp4: true
    enp4s0:
      addresses:
        - 192.168.1.150/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4

중복성을 위한 Bonding

Bonding은 여러 네트워크 인터페이스를 하나의 가상 인터페이스로 결합하여 중복성을 제공하고 가용성을 향상시킵니다. 아래 예시는 bond0라는 이름의 bond 인터페이스를 생성합니다:

network:
  version: 2
  renderer: networkd
  bonds:
    bond0:
      interfaces:
        - enp3s0
        - enp4s0
      addresses:
        - 192.168.1.200/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4
      parameters:
        mode: active-backup
        primary: enp3s0

Wi‑Fi 구성

Netplan은 Wi‑Fi 구성을 지원합니다. 다음 예시는 특정 SSID에 연결합니다:

network:
  version: 2
  renderer: networkd
  wifis:
    wlp2s0:
      access-points:
        "my_wifi_network":
          password: "password1234"
      dhcp4: true

VLAN 구성

가상 LAN(VLAN)은 네트워크를 논리적으로 분할할 수 있습니다. 아래 예시는 enp3s0에 VLAN을 생성합니다:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      dhcp4: true
  vlans:
    vlan10:
      id: 10
      link: enp3s0
      addresses:
        - 192.168.10.1/24

4. 고급 Netplan 구성

정적 라우팅 구성

여러 라우터를 통해 네트워크를 연결할 때는 정적 라우팅이 필요합니다. 아래 예시는 특정 네트워크에 접근하기 위한 경로를 지정합니다:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      addresses:
        - 192.168.1.100/24
      routes:
        - to: 10.0.0.0/24
          via: 192.168.1.1

이 구성은 기본 게이트웨이 192.168.1.1을 통해 10.0.0.0/24 네트워크에 대한 정적 라우트를 설정합니다.

다중 기본 게이트웨이

Netplan은 인터페이스별로 다른 기본 게이트웨이를 설정할 수 있습니다. 이는 서로 다른 네트워크 구간을 통해 인터넷에 접속할 때 유용합니다:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      addresses:
        - 192.168.1.100/24
      gateway4: 192.168.1.1
    enp4s0:
      addresses:
        - 10.0.0.100/24
      gateway4: 10.0.0.1

DNS 서버 구성

아래 예시는 Google Public DNS 서버를 지정합니다:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      addresses:
        - 192.168.1.100/24
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4

고급 Bonding 구성

Bonding 모드는 다양한 동작을 위해 변경할 수 있습니다. 아래 예시는 라운드 로빈 Bonding을 구성합니다:

network:
  version: 2
  renderer: networkd
  bonds:
    bond0:
      interfaces:
        - enp3s0
        - enp4s0
      addresses:
        - 192.168.1.200/24
      gateway4: 192.168.1.1
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4
      parameters:
        mode: balance-rr

balance-rr 모드는 두 인터페이스 간에 트래픽을 교대로 전송하여 대역폭 분산을 통해 성능을 향상시킵니다.

고급 VLAN 구성

VLAN은 대규모 네트워크에서 환경을 논리적으로 분할하는 데 사용됩니다. 아래 예시는 VLAN ID 100을 할당합니다:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      dhcp4: true
  vlans:
    vlan100:
      id: 100
      link: enp3s0
      addresses:
        - 192.168.100.1/24

이는 enp3s0 인터페이스에 VLAN ID 100을 할당하여 분할된 가상 네트워크를 생성합니다.

5. Netplan 문제 해결

Netplan은 편리하지만, 구성 실수나 시스템 제한으로 인해 문제가 발생할 수 있습니다. 이 섹션에서는 일반적인 문제와 해결책을 설명합니다.

일반적인 Netplan 문제 및 원인

1. 구성 적용 안 됨

  • YAML 들여쓰기 오류 : YAML은 들여쓰기에 엄격합니다. 잘못된 공백은 올바른 파싱을 방해합니다.
  • 잘못된 인터페이스 이름 : 인터페이스 이름이 ip a 명령의 출력과 일치하는지 확인하십시오.

해결책

  1. 구성 파일을 저장한 후 netplan apply를 실행합니다.
  2. sudo netplan try를 사용하여 변경 사항을 영구 적용하기 전에 테스트합니다.
    sudo netplan apply
    
    sudo netplan try
    

2. 네트워크 연결 오류

  • 잘못된 게이트웨이 또는 DNS 설정 : IP 주소와 DNS 구성을 확인하십시오.
  • 물리적 인터페이스 문제 : 케이블 및 하드웨어를 확인하십시오.

해결책

  1. ping 명령을 사용하여 연결을 테스트합니다:
    ping 8.8.8.8
    
  1. 네트워크 구성을 다시 적용하고 서비스를 재시작합니다:
    sudo systemctl restart networkd
    

3. netplan apply 중 오류 메시지

구성이 잘못되었거나 인터페이스가 인식되지 않을 때 오류가 발생합니다.

  • 예시 오류 메시지 : Error in network configuration: failed to bring up device enp3s0

ip a를 사용하여 올바른 인터페이스 이름을 확인하십시오.

해결책

들여쓰기, 철자, 인터페이스 이름 및 IP 주소의 정확성을 확인하십시오.

로그 확인

시스템 로그는 문제 해결에 유용합니다. 아래 명령을 사용하여 네트워크 관련 로그를 확인하십시오:

journalctl -u systemd-networkd

이는 구성 오류를 해결하는 데 도움이 되는 자세한 정보를 표시합니다.

6. 요약 및 다음 단계

Netplan을 사용하면 Ubuntu 네트워크 설정을 간단하고 효율적으로 관리할 수 있습니다. 아래는 요약과 더 깊이 탐구하기 위한 권장 다음 단계입니다.

Netplan의 주요 장점

  1. 직관적인 YAML 구성 : 읽고 수정하기 쉽습니다.
  2. 유연한 네트워크 설계 : 다중 인터페이스, 본딩, 라우트 및 VLAN을 지원합니다.
  3. 통합 인터페이스 : systemd-networkdNetworkManager 모두에서 작동합니다.
  4. 실시간 업데이트 : 한 명령으로 즉시 변경 사항을 적용합니다.

권장 다음 단계

  1. 가상 네트워크 설계 : 논리적으로 네트워크를 분할하기 위해 다중 VLAN을 사용합니다.
  2. IPv6 구성 : 현대 네트워킹 인프라에 대비합니다.
  3. 자동화 스크립트 : Ansible 또는 Puppet을 사용하여 구성을 자동화합니다.
  4. 보안 강화 : 방화벽 및 접근 제어 설정을 강화합니다.

추가 자료