Ubuntuユーザーなら誰もが一度は「ドメイン名では接続できないのにIPアドレスでは接続できる」という状況を経験したことがあるでしょう。このような場合、問題の原因はほとんどDNS設定にあります。特に最近のUbuntuはsystemd-resolvedというDNSリゾルバデーモンをデフォルトで使用しているため、その構造の理解が重要です。


1. DNSリクエストの流れ

以下の要約を注意深く読み理解することで、ほとんどの問題が解決されます。

  1. ユーザーがブラウザなどのアプリケーションでドメインにリクエスト
  2. Linuxは基本的にDNSを解決するために/etc/resolv.confを読みます(このファイルは/run/systemd/resolve/stub-resolv.confとシンボリックリンクされています。)
  3. /run/systemd/resolve/stub-resolv.conf127.0.0.53に設定されており、これによってsystemd-resolvedが登場します。
  4. システムのsystemd-resolvedは設定ファイルである/etc/systemd/resolved.confの制御を受けます。
  5. つまり、systemd-resolved/etc/systemd/resolved.confに設定されたDNSサーバーにクエリを送り、
  6. 応答を受け取りドメイン→IPアドレスの変換が完了します。

2. 主要構成要素の要約

上記で説明したように、systemd-resolvedには以下の4つの主要構成ファイルがあります。これらのファイルの役割を理解することが鍵です。

2-1. /etc/resolv.conf

  • 伝統的なLinuxシステムでDNSサーバーリストを読み取る場所
  • しかし現在はsystemdとの互換性のためにシンボリックリンクとして存在する必要があります。
  • 通常、次のように設定されている必要があります: bash /etc/resolv.conf -> ../run/systemd/resolve/stub-resolv.conf
  • つまり、このファイルは現在のシステムで「伝統的なアプリとsystemd-resolvedの間の仲介者としての役割」を果たします。

2-2. /run/systemd/resolve/stub-resolv.conf

  • systemd-resolvedが管理するローカルDNSスタブサーバ(127.0.0.53)の情報を含んでいます。
  • /etc/resolv.confがこのファイルを指す場合、すべてのDNSリクエストがsystemd-resolvedを通過することになります。

2-3./etc/systemd/resolved.conf

  • systemd-resolved主要設定ファイル
  • ここにDNS=, FallbackDNS=などの項目を設定することで優先順位を指定可能です。
  • 永続的な設定であり再起動後も保持されます。

2-4. /run/systemd/resolve/resolv.conf

  • systemd-resolvedが管理する実際のDNSサーバーリストが含まれているファイルです。
  • 上級ユーザーがstub-resolv.confの代わりにこれを/etc/resolv.confに接続すると、直接DNSサーバーにリクエストを送信することが可能になります(バイパス設定)。

3. 問題の発生例: ISPが提供したルーターに設定されたDNSサーバーが不安定な場合

  • 韓国の代表的なISP KTのDNSサーバー(例:168.126.63.1)がルーターに設定されているが、そのルーターを直接制御する権限がない場合、断続的にDNS問題が発生します。
  • KT DNSは応答速度が不安定であったり、UDP/TCPハンドシェイクが失敗することが多いです。
  • systemd-resolvedのログに次のようなメッセージが繰り返し表示される場合は問題の兆候です: Using degraded feature set TCP instead of UDP for DNS server 168.126.63.1. Using degraded feature set UDP instead of TCP for DNS server 168.126.63.1.
  • 結果として、ドメイン解決の失敗→ウェブサイトにアクセスできない現象が発生します。

4. おすすめのDNSサーバー

名前 アドレス 特徴
Google DNS 8.8.8.8, 8.8.4.4 早くて安定している
Cloudflare DNS 1.1.1.1, 1.0.0.1 速度が速くプライバシー保護に優れている
Quad9 9.9.9.9 セキュリティ脅威フィルタリングを提供

5. 安定したDNS構成方法

  1. /etc/systemd/resolved.confファイルを開く
[Resolve]
DNS=1.1.1.1 8.8.8.8
FallbackDNS=9.9.9.9
  1. 設定を適用する
sudo systemctl restart systemd-resolved
  1. /etc/resolv.confが正しく接続されているか確認する
ls -l /etc/resolv.conf

/run/systemd/resolve/stub-resolv.confに接続されている必要があります。

必要に応じて強制リセット:

sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

6. NetworkManagerの介入に注意

GUI環境を使用しているUbuntuではNetworkManagerがDNSを上書きすることがあります。

  • 自動DNS設定が有効になっているとsystemd-resolvedの設定が無視されることがあります。
  • 解決策: bash nm-connection-editor → 接続編集 → IPv4タブ → 自動DNSをオフにする → 手動DNSを入力

7. 結論

  • KT DNSは不安定性がよく報告されるため、使用を避けるのが良いでしょう。
  • systemd-resolvedを使ったDNS構成はUbuntuでの安定性を高めるとても強力な方法です。
  • 設定を正確に理解し適用することで、ドメイン解決失敗によるストレスを軽減することができます。

8. Jesseのコメント

理解に基づいた設定こそが最も強力なセキュリティとメンテナンスです。この文章がUbuntuにおけるDNS設定について混乱していた方に実質的な助けとなることを願っています。