UbuntuでDNSを変更する方法:NetplanとNetworkManagerで確実に設定を反映させる手順まとめ

1. はじめに:UbuntuでDNS設定が重要な理由

DNS(Domain Name System)は、「ドメイン名をIPアドレスへ変換する仕組み」です。
私たちが新しいサイトを開くたびに、OSは裏で必ずDNSへ問い合わせをしています。

Ubuntuを使っていて、

  • ページ読み込みが“なんとなく重い”
  • 同じ回線でも別の端末より遅く感じる
  • LAN内の社内Webへつながらない時がある

こうした現象は、“回線の品質”ではなく「DNSの遅さ」で起きているケースが意外と多いです。

Ubuntuの場合、バージョン22.04以降でも「DNSの設定方法が複数ある」のが初心者を混乱させるポイントで、特に以下の2種類が存在します。

  • Netplan(サーバー等GUIを使わない構築で主流)
  • NetworkManager(デスクトップUIでの操作に対応)

どちらを使っているかによって操作が変わるため、UbuntuでDNS設定を扱う記事では「まず環境判定」「次に適切な方法へ誘導」が欠かせません。

また、DNSは単なる“設定の一部”ではなく、Ubuntuのネットワーク全体の“入口”です。

例えば Google Public DNS(8.8.8.8)や Cloudflare(1.1.1.1)へ切り替えるだけで、ブラウザ操作が体感レベルで改善することもあります。
これは特に VPS・クラウド・海外向けネットワーク環境では顕著です。

このあと本記事では、

  • GUIを使う方法
  • Netplanで設定を書く方法
  • 設定後の確認方法

を明確に分けて解説していきます。

次のセクションではまず、どちらの環境を使っているのか判断するところから始めます。

2. UbuntuでDNSを設定する方法は大きく2種類ある

Ubuntuでは、同じ「DNS設定」でも、使われているネットワーク管理方式によって設定方法が変わります。
この違いを押さえずに進むと、設定を書き換えても反映されない、再起動後に意図しない値に戻る──といったトラブルにつながります。

ここでは最初に、UbuntuのDNS設定方法が“2系統存在する”という事実を整理します。

Netplan(YAMLによる設定)

  • サーバー用途で主流
  • 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指定ができる
  • 設定反映のUIがあるため理解しやすい

GUIが使える環境ではまずこちらの可能性が高いです。
特に“Ubuntuを普段使いしていて、ブラウザが少し遅いからDNSだけ変えたい”というケースはこちら。

まず自分の環境がどちらなのかを調べる

最も簡単な判定は、/etc/netplan/ 内のファイルの有無です。

ls /etc/netplan/

YAMLファイルが見つかれば、Netplanで設定する可能性が高いです。
もし空ディレクトリ、もしくはGUI環境であれば NetworkManager の設定画面を確認するのがスムーズです。

3. NetplanでDNS設定する手順(サーバー向け)

Netplanは YAML 形式でネットワーク設定を書く方式です。
Ubuntu Server・VPS環境など、GUIがない利用形態ではほぼ確実にこの方法になります。

ここでは「DNSを特定の値に固定する」ケースに絞って、最小限の実用例で手順を示します。

Netplanの設定ファイルを開く

Netplanの設定ファイルは /etc/netplan/ にあります。
ファイル名は環境によって異なります(例:00-installer-config.yaml など)。

まずは以下で存在を確認します。

ls /etc/netplan/

ファイル名を確認したら、エディタで開きます。
以下は例です:

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

YAMLへのDNS追加方法(例)

ここでは 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 などで確認して下さい。

設定を反映

編集後は、以下で即時反映できます。

sudo netplan apply

エラーが表示される場合は、YAMLのインデントずれの可能性が高いです。
スペースと階層(字下げ)を見直して下さい。タブは使えません。

DHCP + DNS固定は可能か?

よくある疑問ですが、DHCPでIPを取得しながらDNSだけ手動指定することは可能です。

例:

dhcp4: true
nameservers:
  addresses: [9.9.9.9]

このケースは「IPは自動、DNSは固定」の組み合わせになります。

4. NetworkManager(GUI)の場合(Ubuntu Desktop向け)

Ubuntuをデスクトップ用途で利用している場合は、ターミナルを使わずにDNSを変更できます。
特に「ブラウザだけ遅い」「Public DNSだけ切り替えたい」という一般的な用途では、このGUI設定が最も手早いです。

設定画面の開き方

  1. 右上のネットワークアイコンをクリック
  2. 「設定」または「ネットワーク設定」を開く
  3. 使用している接続(有線 / Wi-Fi)を選択
  4. 「IPv4」タブへ進む

ここに DNS設定欄があります。
Ubuntuのバージョンによって wording は多少違いますが、一覧表示の形式でアドレスをカンマ区切りで入力できます。

入力例(IPv4でDNS指定)

例:Google DNS と Cloudflare DNS を使う場合

8.8.8.8, 1.1.1.1

入力したら「適用」または「保存」を押し、念のため一度ネットワークの再接続を行うと確実です。

IPv6を使っている場合

同じ画面の「IPv6」タブにも DNS入力欄があります。
デュアルスタックの回線では、IPv4・IPv6の両方を指定しないと安定しない場合があります。

DHCPとDNS固定の併用

GUIでも「IPは自動取得、DNSだけ手動にする」という設定はできます。
特に自宅やオフィスのWi-Fiで、毎回固定IPを手動で付けたくない場合に便利です。

5. DNS設定が反映されたか確認する方法

DNSは「入力して保存したら終わり」ではありません。
正しく反映されているかを確認してはじめて、設定作業は完了だと言えます。

Ubuntuでは、以下3つの方法で確認できます。

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) になっているかチェックします。

resolvectl status

systemd-resolved経由の確認はこちらが正確です。

resolvectl status

NICごとに、現在参照している nameserver が表示されます。
複数NICを持つサーバーでは dig よりもこちらが確実です。

/etc/resolv.conf は直接書き換えない理由

cat /etc/resolv.conf

ここを覗くと「最終的に今使用しているDNS」の値は見えます。
ただし、このファイルは systemd-resolved が生成する 結果ファイル です。
編集してもすぐに上書きされるので、ここを直接変更するのは誤りです。

6. よく使われるDNSの候補例(初心者は助かる)

DNSアドレスは“自分で考えて作る”ものではありません。
一般には、パブリックDNS(公開DNS)を指定するケースがほとんどです。

特に「まずは安定系で」という場合は、以下のうちから選べば問題ありません。

プロバイダDNSアドレス
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

※1つだけではなく 2つ指定する ほうが安全性が高いです。
(片側が落ちた場合にも自動でもう片方を参照するため)

また、企業内の内部DNS(社内ADなど)にアクセスする場合は、この表ではなく 社内専用のDNS を指定する必要があります。
このケースでは、Public DNSを優先するよりも、まず内部名解決を確実に通すことが優先順位として上です。

7. DNSは“環境のボトルネック”になりやすい

DNSは表面上は「設定項目のひとつ」ですが、ネットワーク全体の体感速度を左右する重要点です。
特に、次のような場面では DNS の影響が露骨に表れます。

  • ページの最初の一歩だけ“妙に遅い”
  • ping は速いのに Web の読み込みが鈍い
  • サーバーは軽いのに SPA (React / Vue) の初期ロードが重い

この手の症状は、同じURLをたくさん読んだ後は速くなる一方、最初の一回が異様に重い──という特徴があります。
これはまさに DNS が“最初の入口”だからです。

特に VPS や海外リージョン(例:us-east / eu-west)で運用している場合、
「ISPのデフォルトDNS」より「Public DNS」の方が良い結果になることは珍しくありません。

DNSは ネットワークの渋滞による遅延 を拾いやすいポイントであり、
Ubuntuに限らず、Webエンジニアがまず最初に見直すべき“入口の最適化”と言えます。

FAQ

Q1:/etc/resolv.conf を直接編集したのに、再起動すると元に戻ってしまいます。なぜですか?
→ Ubuntuでは systemd-resolved が /etc/resolv.conf を“生成”しています。
ここは編集する場所ではありません。
Netplan もしくは NetworkManager で設定する必要があります。

Q2:NetplanとNetworkManagerのどちらを使っているかわからない場合は?
→ まず /etc/netplan/ を確認します。

ls /etc/netplan/

YAMLファイルがあれば Netplan で設定されている可能性が高いです。
GUIで使っている場合は NetworkManager が有力です。

Q3:DHCPでIPを自動取得しつつ、DNSだけ固定することは可能ですか?
→ 可能です。
Netplanでも NetworkManager でも「IPはAUTO」「DNSは手入力」の組み合わせは問題ありません。

Q4:DNSを変えれば、Webは必ず速くなりますか?
→ 必ずではありません。
DNSは“最初の名前解決”を担当します。
初回ロードの一歩目が早くなるケースはよくありますが、
ページ内の画像/CDN/APIが遅い場合はそれらがボトルネックです。

Q5:WSL2(Windows上のUbuntu)でも同じ手順ですか?
→ 原則別です。
WSL2は resolv.conf を毎回再生成する仕様があるため、
generateResolvConf=false の設定など、別の対処が必要になります。
WSLはWSL専用のDNS設定ノウハウがあります。

侍エンジニア塾