Ubuntu에서 Netplan 활용 가이드 | 네트워크 설정 기초부터 응용까지

1. Ubuntu에서 Netplan 개요

Netplan이란?

Netplan은 Ubuntu 17.10 이후 버전에서 채택된 네트워크 설정 관리 도구입니다. 이전에는ifconfig/etc/network/interfaces를 사용했지만, Netplan은 이들을 대체하는 새로운 형식을 제공합니다. Netplan의 가장 큰 특징은 YAML 파일을 사용해 네트워크 설정을 기술한다는 점입니다. 이를 통해 간단하고 일관된 설정이 가능해지며, 복잡한 네트워크 구성도 쉽게 관리할 수 있습니다. Netplan은NetworkManagersystemd-networkd와 같은 백엔드를 지원하며, Ubuntu 데스크톱 버전과 서버 버전 모두에서 사용됩니다. 이를 통해 서로 다른 환경에서도 공통된 방법으로 네트워크를 관리할 수 있습니다.

왜 Netplan을 사용해야 하는가?

기존 네트워크 설정 방법과 비교했을 때, Netplan은 다음과 같은 장점을 제공합니다.
  1. 간단한 구문: YAML 형식은 직관적이며 구조가 명확합니다. 설정이 한눈에 들어와 초보자도 비교적 쉽게 이해할 수 있습니다.
  2. 통합 관리: 데스크톱 환경과 서버 환경 모두에서 사용할 수 있어, 서로 다른 네트워크 구성을 일원화하여 관리할 수 있습니다.
  3. 동적 변경: 설정 파일을 편집하고 적용하기만 하면 실시간으로 네트워크 설정이 반영됩니다.

Netplan의 기본 구조

Netplan 설정 파일은 일반적으로/etc/netplan/디렉터리에 배치되며, 확장자는.yaml입니다. 이 파일에는 네트워크 인터페이스 설정, IP 주소, DNS 서버 정보 등이 포함됩니다. 기본적인 Netplan 설정 예시로, 다음과 같은 YAML 파일을 들 수 있습니다.
network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      dhcp4: true
이 예에서는enp3s0라는 이더넷 인터페이스가 DHCP를 사용해 IP 주소를 얻도록 설정되어 있습니다.

Ubuntu 18.04 LTS 이후에서 Netplan의 역할

Ubuntu 18.04 LTS 이후 버전에서는 Netplan이 기본으로 설치되어 서버 환경 및 데스크톱 환경의 네트워크 관리에 널리 사용됩니다. 특히 서버 환경에서는 여러 네트워크 인터페이스와 고정 IP 주소 설정이 요구되는 경우가 많아 Netplan의 편리함이 활용됩니다. 다음으로, Netplan을 사용한 네트워크 구체적인 설정 방법에 대해 설명하겠습니다.

2. Netplan의 기본 설정 방법

Netplan 설정 파일 위치

Netplan 설정 파일은 일반적으로/etc/netplan/ 디렉터리에 저장됩니다. 이 디렉터리 안에 있는.yaml 파일을 편집함으로써 네트워크 설정을 변경할 수 있습니다. 예를 들어,50-cloud-init.yaml와 같은 파일명이 일반적이지만, 환경에 따라 다를 수 있습니다. 설정 파일을 열려면, 아래와 같이vinano와 같은 텍스트 편집기를 사용합니다.
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. 여러 네트워크 인터페이스 설정

여러 이더넷 인터페이스 설정

여러 네트워크 인터페이스를 가진 서버나 장치에서는 각 인터페이스에 다른 IP 주소와 설정을 적용할 수 있습니다. 아래 예에서는 두 개의 이더넷 인터페이스에 각각 다른 설정을 적용하고 있습니다.
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

본딩을 통한 중복성 설정

네트워크 인터페이스를 하나의 가상 인터페이스로 묶어 동작시키는 “본딩”은 중복성을 확보하고 가용성을 높이는 유효한 방법입니다. 아래는 두 개의 이더넷 인터페이스를 본딩하여 하나의 가상 인터페이스bond0 로 다루는 예시입니다.
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에 연결하는 Wi-Fi 설정을 보여줍니다.
network:
  version: 2
  renderer: networkd
  wifis:
    wlp2s0:
      access-points:
        "my_wifi_network":
          password: "password1234"
      dhcp4: true

VLAN 설정

특정 용도에서는 가상 LAN(VLAN)을 사용하여 네트워크를 논리적으로 분할해야 할 경우가 있습니다. Netplan에서도 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 응용 설정

정적 라우팅 설정

네트워크를 여러 라우터를 거쳐 연결하는 경우, 정적 라우팅이 필요합니다. Netplan을 사용하여 정적 경로를 설정하면 특정 IP 주소나 네트워크에 대한 통신 경로를 지정할 수 있습니다. 아래는 정적 라우팅의 예시입니다。
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
이 설정에서는 enp3s0 인터페이스가 기본 게이트웨이 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 서버 설정

Netplan에서는 정적으로 지정하는 DNS 서버 설정도 간단히 할 수 있습니다. 아래 예시에서는 Google의 퍼블릭 DNS 서버(8.8.8.88.8.4.4)를 지정하고 있습니다。
network:
  version: 2
  renderer: networkd
  ethernets:
    enp3s0:
      addresses:
        - 192.168.1.100/24
      nameservers:
        addresses:
          - 8.8.8.8
          - 8.8.4.4

본딩 응용 설정

앞서 언급한 본딩 설정에 추가로, 본딩 모드를 조정하여 다양한 동작 모드를 구현할 수 있습니다. 예를 들어, 아래 예시에서는 라운드 로빈 방식의 본딩이 설정되어 있습니다。
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(라운드 로빈)모드에서는 두 개의 인터페이스를 교대로 사용하여 대역폭을 분산시키고 성능 향상을 도모합니다. 그 외에도, 장애 조치를 위한 active-backup 모드나 로드 밸런싱을 수행하는 balance-tlb 모드 등, 용도에 맞는 모드를 선택할 수 있습니다。

VLAN 응용 설정

VLAN(Virtual LAN)은 대규모 네트워크에서 물리적인 네트워크를 논리적으로 분할하기 위해 사용됩니다. Netplan을 사용하여 VLAN을 설정하는 것도 가능합니다. 아래 예시에서는 vlan100이라는 VLAN 인터페이스가 설정되어 있습니다。
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을 할당하고, 192.168.100.1이라는 정적 IP 주소를 설정합니다. 이를 통해 네트워크를 가상으로 분할하고, 트래픽을 특정 네트워크 세그먼트에 제한할 수 있습니다。

5. Netplan 문제 해결

Netplan 설정은 매우 편리하지만, 설정 실수나 시스템 특성으로 인해 문제가 발생할 수 있습니다. 이 섹션에서는 Netplan을 사용할 때 자주 발생하는 문제와 그 해결 방법에 대해 설명합니다. 이를 통해 네트워크 연결 오류나 설정 실수에 효율적으로 대응할 수 있게 됩니다.

자주 발생하는 Netplan 문제와 그 원인

1. 설정이 적용되지 않음

Netplan에서 설정을 변경해도, 명령을 실행해도 변경 사항이 반영되지 않을 때가 있습니다. 원인으로는 다음과 같은 문제가 있을 수 있습니다.
  • YAML 파일의 들여쓰기 오류: YAML 형식은 들여쓰기에 매우 엄격합니다. 공백이나 탭이 잘못되면 파일이 올바르게 해석되지 않아 설정이 적용되지 않습니다. 들여쓰기가 맞는지 반드시 확인하세요.
  • 부적절한 인터페이스 이름: Netplan에서는 네트워크 인터페이스의 정확한 이름을 지정해야 합니다. ip a 명령을 실행하여 정확한 인터페이스 이름을 확인하고, 설정 파일과 일치하는지 확인하세요.

해결 방법

  1. 설정 파일을 저장한 후, netplan apply 명령을 실행하여 설정을 적용합니다。
  2. 오류가 발생한 경우, sudo netplan try 명령을 사용하여 변경 사항을 적용할 수 있는지 테스트한 후 확인합니다。 이 명령은 5분 이내에 설정을 테스트하고 문제가 있으면 자동으로 원래 상태로 되돌립니다。
sudo netplan apply
sudo netplan try

2. 네트워크 연결 오류

네트워크에 연결할 수 없을 때는 다음과 같은 원인이 있을 수 있습니다。
  • 게이트웨이 및 DNS 서버 설정 오류: 기본 게이트웨이와 DNS 서버 설정이 잘못되면 인터넷 연결에 실패합니다. 올바른 IP 주소가 지정되어 있는지, DNS 서버가 적절한지 확인하세요。
  • 물리적 인터페이스 장애: 케이블이나 하드웨어가 올바르게 연결되지 않으면, 소프트웨어적으로 올바른 설정을 해도 연결할 수 없습니다。 케이블 및 네트워크 장치의 물리적 확인도 중요합니다。

해결 방법

  1. ping 명령을 사용하여 네트워크에 연결할 수 있는지 테스트합니다。 예를 들어, Google DNS 서버(8.8.8.8)에 ping을 보내 연결 상태를 확인합니다。
ping 8.8.8.8
  1. 설정 파일에 문제가 있는 경우, 다시 netplan apply를 실행하여 설정을 적용하고 네트워크를 재시작해 봅니다。
sudo systemctl restart networkd

3. netplan apply에서 오류 메시지가 표시됨

netplan apply를 실행했을 때 오류 메시지가 표시될 수 있습니다。 이 문제는 설정 파일 내용이 정확하지 않거나 인터페이스가 올바르게 인식되지 않아서 발생합니다。
  • 오류 메시지 예시: Error in network configuration: failed to bring up device enp3s0
이 오류는 지정한 인터페이스 enp3s0가 올바르게 인식되지 않을 때 발생합니다。 ip a 명령을 실행하여 인터페이스 이름이 정확한지 확인하세요。

해결 방법

오류 메시지를 잘 확인하고, 지정된 인터페이스와 IP 주소가 정확한지 다시 확인하세요。 또한 인터페이스 이름이나 YAML 형식에 오류가 없는지, 철자와 들여쓰기를 점검합니다。

로그 파일 확인

문제 해결을 할 때 시스템 로그를 확인하는 것이 매우 유용합니다。 Netplan 설정과 관련된 오류 메시지와 경고는 journalctl 명령을 사용하여 확인할 수 있습니다。
journalctl -u systemd-networkd
이 명령을 실행하면 네트워크 서비스와 관련된 로그를 표시합니다。 오류가 발생한 경우 상세한 메시지가 표시되므로 이를 기반으로 문제를 해결할 수 있습니다。

6. Netplan의 요약 및 다음 단계

Netplan을 이용하면 Ubuntu의 네트워크 설정을 매우 간단하고 효율적으로 관리할 수 있음을 알게 되었습니다. 이 섹션에서는 지금까지의 설명을 총괄하고, 앞으로 Netplan을 어떻게 활용할 수 있을지, 더 깊이 배우기 위한 단계에 대해 제안합니다.

Netplan의 주요 장점

Netplan을 사용함으로써 기존 방법보다 더 많은 장점을 누릴 수 있습니다.
  1. YAML 형식의 직관적인 설정: Netplan은 간단하고 가시성이 뛰어난 YAML 형식을 채택하고 있습니다. 이 때문에 네트워크 설정을 쉽게 작성할 수 있으며, 설정 오류를 찾는 것도 비교적 쉽습니다.
  2. 유연한 네트워크 구성: 여러 네트워크 인터페이스 설정, 본딩, 정적 라우팅, VLAN 구축을 직관적인 문법으로 할 수 있습니다. 이를 통해 복잡한 네트워크 구성도 쉽게 관리할 수 있습니다.
  3. 통합 인터페이스: Netplan은 systemd-networkdNetworkManager 등 다양한 백엔드를 지원하며, 데스크톱이든 서버 환경이든 일관된 네트워크 관리를 제공합니다. 이를 통해 서로 다른 환경에서도 동일한 방법으로 설정할 수 있어 관리 효율성을 높일 수 있습니다.
  4. 실시간 설정 변경: Netplan 설정은 명령 하나로 즉시 적용할 수 있어 네트워크 다운타임을 최소화하면서 관리할 수 있습니다.

앞으로의 활용 방법

Netplan의 기본 설정에 익숙해진 후에는 더욱 고급 네트워크 구성에 도전하는 것을 권장합니다. 아래에 다음 단계로 학습해야 할 항목들을 몇 가지 제시합니다.
  1. 가상 네트워크 구축: 여러 VLAN을 설정해 물리적 네트워크를 가상으로 분할함으로써 보안 및 네트워크 관리를 강화할 수 있습니다. 가상 네트워크 설정은 대규모 인프라와 클라우드 환경에서 특히 중요합니다.
  2. IPv6 대응 설정: 현재 인터넷 프로토콜인 IPv4는 주소 고갈이 문제입니다. Netplan을 사용해 IPv6에 대응하는 네트워크 설정을 하면 향후 네트워크 인프라에 대비할 수 있습니다.
  3. 자동화 스크립트 작성: Netplan 설정을 스크립트화하고 네트워크 구성 자동화를 진행하면 대규모 네트워크 환경에서 일괄 관리가 가능해집니다. Ansible이나 Puppet 같은 도구와 연계하면 더욱 효율적인 관리가 가능합니다.
  4. 보안 강화: Netplan을 사용한 네트워크 보안을 높이기 위해 방화벽 설정, 접근 제한, 네트워크 분리(네트워크 세그멘테이션) 등의 기술을 배우는 것이 중요합니다.

추가 학습을 위한 리소스

Netplan 공식 문서와 Ubuntu의 네트워크 관련 기술 정보는 학습을 진행하는 데 유용한 리소스입니다. 또한 포럼과 기술 블로그도 참고하면 좋습니다. 아래는 참고할 만한 리소스입니다.
  • Netplan 공식 문서: Netplan의 상세 설정 방법 및 옵션에 대해, 공식 문서가 가장 신뢰할 수 있는 정보원입니다.
  • Ubuntu Community Help Wiki: Ubuntu 커뮤니티가 제공하는 Wiki에는 실제 트러블슈팅 및 사례가 풍부하게 실려 있습니다.
  • 기술 포럼 및 블로그: Ask UbuntuStack Overflow 등 포럼은 특정 문제에 대한 해결책을 찾는 데 유용합니다. 또한 기술 블로그에서는 Netplan 활용 사례와 최신 정보가 소개됩니다.