Ubuntuユーザーなら誰もが一度は「ドメイン名では接続できないのにIPアドレスでは接続できる」という状況を経験したことがあるでしょう。このような場合、問題の原因はほとんどDNS設定にあります。特に最近のUbuntuはsystemd-resolved
というDNSリゾルバデーモンをデフォルトで使用しているため、その構造の理解が重要です。
1. DNSリクエストの流れ
以下の要約を注意深く読み理解することで、ほとんどの問題が解決されます。
- ユーザーがブラウザなどのアプリケーションでドメインにリクエスト
- Linuxは基本的にDNSを解決するために
/etc/resolv.conf
を読みます(このファイルは/run/systemd/resolve/stub-resolv.conf
とシンボリックリンクされています。) /run/systemd/resolve/stub-resolv.conf
は127.0.0.53
に設定されており、これによってsystemd-resolved
が登場します。- システムの
systemd-resolved
は設定ファイルである/etc/systemd/resolved.conf
の制御を受けます。 - つまり、
systemd-resolved
は/etc/systemd/resolved.conf
に設定されたDNSサーバーにクエリを送り、 - 応答を受け取りドメイン→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構成方法
/etc/systemd/resolved.conf
ファイルを開く
[Resolve]
DNS=1.1.1.1 8.8.8.8
FallbackDNS=9.9.9.9
- 設定を適用する
sudo systemctl restart systemd-resolved
/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設定について混乱していた方に実質的な助けとなることを願っています。
Add a New Comment