1. Ubuntu에서 Netplan 개요
Netplan이란?
Netplan은 Ubuntu 17.10부터 도입된 네트워크 구성 관리 도구입니다. 이전에는 ifconfig와 /etc/network/interfaces와 같은 도구를 사용했지만, Netplan은 네트워크 구성을 새로운 방식으로 제공합니다. Netplan의 가장 큰 장점 중 하나는 네트워크 설정을 YAML 파일로 기술한다는 점입니다. 이를 통해 구성 파일이 간단하고 일관되게 작성되며, 복잡한 네트워크 환경도 손쉽게 관리할 수 있습니다.
Netplan은 NetworkManager와 systemd-networkd와 같은 백엔드를 지원하며, Ubuntu Desktop과 Server 에디션 모두에서 사용할 수 있습니다. 이를 통해 다양한 환경에서 통합된 네트워크 관리를 구현할 수 있습니다.
왜 Netplan을 사용해야 할까?
전통적인 네트워크 구성 방식에 비해 Netplan은 다음과 같은 장점을 제공합니다:
- 간단한 문법 : YAML 형식은 직관적이고 구조가 명확해 초보자도 쉽게 이해할 수 있습니다.
- 통합 관리 : 데스크톱과 서버 환경 모두에서 동작하므로, 다양한 네트워크 구성을 중앙에서 관리할 수 있습니다.
- 동적 변경 : 구성 파일을 편집하고 적용하면 네트워크 설정이 실시간으로 업데이트됩니다.
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명령의 출력과 일치하는지 확인하십시오.
해결책
- 구성 파일을 저장한 후
netplan apply를 실행합니다. sudo netplan try를 사용하여 변경 사항을 영구 적용하기 전에 테스트합니다.sudo netplan applysudo netplan try
2. 네트워크 연결 오류
- 잘못된 게이트웨이 또는 DNS 설정 : IP 주소와 DNS 구성을 확인하십시오.
- 물리적 인터페이스 문제 : 케이블 및 하드웨어를 확인하십시오.
해결책
ping명령을 사용하여 연결을 테스트합니다:ping 8.8.8.8
- 네트워크 구성을 다시 적용하고 서비스를 재시작합니다:
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의 주요 장점
- 직관적인 YAML 구성 : 읽고 수정하기 쉽습니다.
- 유연한 네트워크 설계 : 다중 인터페이스, 본딩, 라우트 및 VLAN을 지원합니다.
- 통합 인터페이스 :
systemd-networkd와NetworkManager모두에서 작동합니다. - 실시간 업데이트 : 한 명령으로 즉시 변경 사항을 적용합니다.
권장 다음 단계
- 가상 네트워크 설계 : 논리적으로 네트워크를 분할하기 위해 다중 VLAN을 사용합니다.
- IPv6 구성 : 현대 네트워킹 인프라에 대비합니다.
- 자동화 스크립트 : Ansible 또는 Puppet을 사용하여 구성을 자동화합니다.
- 보안 강화 : 방화벽 및 접근 제어 설정을 강화합니다.