Ubuntu에서 DNS 설정 방법: Netplan 및 NetworkManager 완전 가이드

1. Introduction: Why DNS Configuration Matters in Ubuntu

DNS (Domain Name System) 은 도메인 이름을 IP 주소로 변환하는 메커니즘입니다.
웹사이트를 열 때마다 운영체제는 백그라운드에서 DNS 서버에 질의합니다.

Ubuntu를 사용할 때 다음과 같은 상황을 겪을 수 있습니다:

  • 웹 페이지가 “다소 느리다”는 느낌
  • 같은 네트워크에 있는 다른 기기보다 성능이 떨어짐
  • 가끔 내부 LAN 웹사이트에 접속할 수 없음

이러한 증상은 놀랍게도 “네트워크 품질” 때문이 아니라 DNS 해석이 느려서 발생하는 경우가 많습니다.

Ubuntu에서는 22.04 버전 이후에도 DNS를 설정하는 방법이 여러 가지 존재합니다. 이는 초보자에게 혼란을 주기 쉽습니다. 주요 두 가지 방법은:

  • Netplan (GUI가 없는 서버 환경에서 일반적)
  • NetworkManager (데스크톱 GUI 작업을 지원)

활성화된 방법에 따라 설정 방식이 달라지기 때문에, Ubuntu용 DNS 문서는 반드시 “환경 감지”로 시작하고, 이어서 “올바른 방법으로 사용자를 안내”해야 합니다.

DNS는 단순히 “설정의 작은 부분”이 아니라 Ubuntu 전체 네트워크 시스템의 진입점입니다.

예를 들어 Google Public DNS (8.8.8.8) 혹은 Cloudflare (1.1.1.1) 로 전환하기만 해도 웹 브라우징 속도가 눈에 띄게 빨라질 수 있습니다.
특히 VPS, 클라우드, 해외 네트워크 환경에서 그렇습니다.

다음 섹션에서는 다음을 명확히 구분하여 설명합니다:

  • GUI를 이용한 DNS 설정 방법
  • Netplan을 이용한 DNS 설정 방법
  • DNS 설정을 확인하는 방법

먼저, 현재 시스템이 어떤 환경을 사용하고 있는지 확인해 보겠습니다.

2. Ubuntu Provides Two Major Methods for DNS Configuration

Ubuntu에서는 사용 중인 네트워크 관리 시스템에 따라 DNS 설정 방법이 달라집니다.
이 구분을 무시하면 DNS 변경이 적용되지 않거나 재부팅 후 원래대로 돌아갈 수 있습니다.

여기서는 Ubuntu에 두 개의 독립적인 DNS 설정 시스템이 존재한다는 사실을 정리합니다.

Netplan (YAML‑based Configuration)

  • 서버 환경에서 일반적
  • Ubuntu 18.04 이후 LTS 버전에서 표준화
  • 설정 파일은 /etc/netplan/*.yaml 아래에 위치
  • systemd‑resolved와 함께 동작

GUI가 없는 VPS 혹은 물리 서버 환경에서는 거의 항상 Netplan을 사용합니다.
AWS, Vultr, ConoHa, Oracle Cloud와 같은 클라우드 환경도 보통 이 방식을 채택합니다.

NetworkManager (GUI)

  • 데스크톱 PC 환경 (Ubuntu Desktop)에서 일반적
  • IPv4 / IPv6 설정을 통해 DNS를 구성할 수 있음
  • GUI 기반이라 이해하기 쉬움

Ubuntu Desktop을 사용한다면 가장 가능성이 높은 방법입니다.
브라우저가 느리다고 느껴 “그냥 DNS만 바꾸고 싶다”는 경우에 이상적입니다.

How to Check Which One You Are Using

가장 간단한 방법은 /etc/netplan/ 디렉터리에 파일이 존재하는지 확인하는 것입니다.

ls /etc/netplan/

YAML 파일이 존재한다면 Netplan이 사용 중일 가능성이 높습니다.
디렉터리가 비어 있거나 GUI를 사용 중이라면 NetworkManager 설정을 확인하세요.

3. Configuring DNS with Netplan (for Servers)

Netplan은 YAML 파일을 사용해 네트워크 설정을 정의합니다.
GUI가 없는 Ubuntu Server 혹은 VPS 환경에서는 거의 항상 이 방법을 사용합니다.

이 섹션에서는 특정 DNS 값을 설정하기 위해 필요한 최소 실용 단계를 다룹니다.

Open the Netplan Configuration File

Netplan 설정 파일은 /etc/netplan/에 저장됩니다.
실제 파일 이름은 환경에 따라 다르며 (예: 00-installer-config.yaml) 다를 수 있습니다.

먼저 파일 목록을 확인합니다:

ls /etc/netplan/

파일 이름을 확인한 뒤, nano와 같은 편집기로 엽니다. 예시:

sudo nano /etc/netplan/00-installer-config.yaml

How to Add DNS Entries to YAML (Example)

아래 예시는 Google DNS와 Cloudflare DNS를 모두 지정하는 방법을 보여줍니다.

network:
  version: 2
  ethernets:
    ens33:
      dhcp4: true
      nameservers:
        addresses: [8.8.8.8, 1.1.1.1]

주의: ens33 은 NIC에 따라 다릅니다.
ip a 혹은 ip link 명령으로 확인하세요.

Apply the Configuration

Apply changes immediately using:

sudo netplan apply

If errors appear, YAML indentation is the most common cause.
Verify spacing and hierarchy—tabs cannot be used.

DHCP와 수동 DNS가 동시에 존재할 수 있나요?

예, DHCP로 IP를 자동으로 할당받으면서 DNS는 수동으로 지정할 수 있습니다.

예시:

dhcp4: true
nameservers:
  addresses: [9.9.9.9]

이 구성은 “IP = 자동, DNS = 수동”을 설정합니다.

4. Ubuntu Desktop에서 NetworkManager(GUI)를 사용한 DNS 설정

데스크톱용 Ubuntu를 사용한다면 터미널을 사용하지 않고도 DNS를 변경할 수 있습니다.
브라우저 속도를 빠르게 하거나 공개 DNS로 전환하고 싶을 때 가장 빠른 방법은 GUI 기반 방법입니다.

설정 창 열기 방법

  1. 오른쪽 상단의 네트워크 아이콘을 클릭
  2. “Settings” 또는 “Network Settings” 열기
  3. 활성화된 연결 선택 (유선 / Wi‑Fi)
  4. “IPv4” 탭으로 이동

여기서 DNS 입력 필드를 찾을 수 있습니다. Ubuntu 버전에 따라 문구가 약간 다를 수 있지만, DNS 주소를 쉼표로 구분하여 입력하면 됩니다.

예시 입력 (IPv4를 통한 DNS 지정)

예시: Google DNS와 Cloudflare DNS 사용

8.8.8.8, 1.1.1.1

값을 입력한 뒤 “Apply” 또는 “Save”를 클릭합니다. 설정이 적용되었는지 확인하려면 네트워크를 끊었다가 다시 연결하는 것이 좋습니다.

IPv6를 사용하는 경우

“IPv6” 탭에도 유사한 DNS 입력 필드가 있습니다. 듀얼 스택 네트워크에서는 IPv4와 IPv6 DNS를 모두 설정하는 것이 안정성에 도움이 될 수 있습니다.

DHCP와 수동 DNS 결합

GUI에서 IP는 자동 할당으로 두고 DNS만 수동으로 지정하도록 설정할 수도 있습니다. 이는 집이나 사무실 등 여러 Wi‑Fi 네트워크를 사용할 때 매번 고정 IP를 수동으로 지정하고 싶지 않을 때 유용합니다.

5. DNS 설정이 적용되었는지 확인하는 방법

새로운 설정이 실제로 적용되었는지 확인하기 전까지 DNS 구성은 완료된 것이 아닙니다. Ubuntu에서는 DNS 상태를 확인할 수 있는 신뢰할 만한 방법이 세 가지 있습니다.

dig 명령 사용

dig google.com

출력 결과에서 “SERVER: 〜” 라인을 찾으세요. 이는 현재 시스템이 사용하고 있는 DNS 서버를 보여줍니다.

예시 (발췌):

;; SERVER: 8.8.8.8#53(8.8.8.8)

8.8.8.8(Google)이나 1.1.1.1(Cloudflare) 등 원하는 DNS 서버가 표시되는지 확인합니다.

resolvectl status

systemd-resolved를 사용할 때 정확한 방법입니다.

resolvectl status

각 NIC가 현재 사용 중인 네임서버를 표시합니다. 다중 NIC 서버 환경에서는 dig보다 더 신뢰할 수 있습니다.

/etc/resolv.conf를 직접 편집하지 말아야 하는 이유

cat /etc/resolv.conf

이 파일은 현재 사용 중인 최종 DNS 값을 보여주지만, systemd-resolved에 의해 자동으로 생성됩니다. 즉, 덮어쓰기 되므로 직접 편집하는 것은 잘못된 방법입니다.

6. 일반적인 DNS 옵션(초보자에게 유용)

DNS 서버 주소를 직접 “만들어”서는 안 됩니다. 대부분의 경우 널리 제공되는 공개 DNS 서비스를 선택하게 됩니다.

안전하고 안정적인 옵션을 원한다면 아래 목록에서 선택하세요:

ProviderDNS Address
Google Public DNS8.8.8.8 / 8.8.4.4
Cloudflare1.1.1.1
Quad99.9.9.9
OpenDNS208.67.222.222 / 208.67.220.220

두 개의 DNS 서버를 지정하는 것이 중복성을 위해 권장됩니다. 하나가 사용 불가능해지면 시스템이 자동으로 다른 서버에 질의합니다.

기업 AD와 같은 내부 DNS를 사용하는 경우, 공개 DNS 대신 내부 DNS 서버를 지정해야 합니다. 내부 이름 해석이 외부 DNS 성능보다 우선될 수 있습니다.

7. DNS가 네트워크 병목이 되는 경우가 많음

DNS는 단순한 설정 항목처럼 보이지만, 인지된 네트워크 성능에 큰 영향을 미칩니다. DNS 문제는 특히 다음과 같은 상황에서 눈에 띕니다:

  • 웹 페이지 로드 첫 단계가 비정상적으로 느림
  • Ping은 빠른데 웹 브라우징이 느림
  • SPA 프레임워크(React / Vue)의 초기 로드가 지연됨

이러한 경우는 종종 다음과 같이 동작합니다: “같은 URL을 여러 번 로드하면 빨라지지만, 첫 번째 접근은 이상하게 느립니다.”
이는 DNS가 최초 진입점이기 때문입니다.

특히 VPS나 국제 지역(예: us-east / eu-west)에서는 퍼블릭 DNS가 ISP 기본 DNS보다 더 나은 성능을 보일 수 있습니다.

DNS는 네트워크 지연에 매우 민감한 포인트입니다.
운영체제와 관계없이 DNS 튜닝은 웹 엔지니어가 가장 먼저 수행해야 하는 최적화 중 하나입니다.

FAQ

Q1: /etc/resolv.conf를 편집했는데 재부팅 후에 초기화됩니다. 왜인가요?
→ Ubuntu의 systemd-resolved가 자동으로 생성합니다 /etc/resolv.conf.
이 파일은 수동으로 편집하도록 설계되지 않았습니다.
Netplan 또는 NetworkManager를 사용하세요.

Q2: 내가 Netplan을 쓰는지 NetworkManager를 쓰는지 잘 모르겠어요. 어떻게 확인하나요?
→ 먼저 확인하세요:

ls /etc/netplan/

YAML 파일이 존재한다면 Netplan을 사용하고 있을 가능성이 높습니다.
GUI를 사용 중이라면 NetworkManager일 가능성이 더 큽니다.

Q3: DHCP로 IP를 자동으로 얻으면서 DNS는 수동으로 설정할 수 있나요?
→ 예.
Netplan과 NetworkManager 모두 “IP = AUTO, DNS = manual”을 지원합니다.

Q4: DNS를 변경하면 항상 웹 브라우징 속도가 빨라지나요?
→ 항상은 아닙니다.
DNS는 초기 이름 조회에만 영향을 미칩니다.
첫 로드가 빨라질 수 있지만, 이미지/ CDN/ API 등 다른 요소가 느리면 전체 성능은 여전히 저하될 수 있습니다.

Q5: 같은 절차를 Ubuntu on WSL2에도 적용할 수 있나요?
→ 정확히는 다릅니다.
WSL2는 resolv.conf를 자동으로 재생성하므로 다음과 같은 추가 설정이 필요합니다:
generateResolvConf=false
WSL은 자체 DNS 구성 방식을 가지고 있습니다.