新Linux入門|/etc/resolv.confファイルによるDNS設定と管理

今回は、Linuxでネットワーク通信を行ううえで欠かせない仕組みである。
DNS(Domain Name System) の設定を行うファイル、
/etc/resolv.conf について解説します✨

DNSは、インターネットの「住所帳」のような存在で、
 ホスト名(例:www.google.com)をIPアドレス(例:142.250.196.68)に変換してくれる仕組みです。
この変換を名前解決と呼びます。

Linuxでは、どのDNSサーバーを使うか、どのドメインを検索対象とするかを
/etc/resolv.confファイル に設定します。

🌐 /etc/resolv.confとは?

 /etc/resolv.conf ファイルは、LinuxシステムがDNSを利用してホスト名を解決する際に参照する設定ファイルです。
 ネットワーク通信のたびに、システムはこのファイルを見て「どのDNSサーバーに問い合わせるか」を判断します。

項目内容
ファイルの場所/etc/resolv.conf
主な役割DNSサーバー情報を設定する
ファイル形式キーワード+値のペア形式
設定反映方法ネットワーク再起動または自動反映
管理主体NetworkManager または systemd-resolved(環境による)

💬 AlmaLinux 9.6 では、NetworkManagerが自動的にこのファイルを生成・管理するため、
手動で書き換えた場合は上書きされることがあります。

🗂️ ファイルの基本構成

/etc/resolv.conf ファイルは以下のような形式で記述されます👇

nameserver [DNSサーバーのIPアドレス]
domain [ローカルドメイン名]
search [検索ドメイン名]
options [オプション]
キーワード説明
nameserver使用するDNSサーバーのIPアドレスを指定(複数指定可)
domainローカルドメイン名を指定(省略可能)
search名前解決時に自動的に追加される検索ドメイン名を指定
optionsタイムアウトやリトライ回数などの動作を設定

📘 各行の構文は「キーワード」と「値」の組み合わせで構成され、
空白やタブで区切られています。

🧩 /etc/resolv.confの実例

以下は、典型的な設定例です。

[suzuki@AlmaLinux ~]$ cat /etc/resolv.conf
# Generated by NetworkManager
nameserver 8.8.8.8
nameserver 8.8.4.4
search example.local
options timeout:2 attempts:3

💬ポイント

  • 8.8.8.8 と 8.8.4.4 はGoogleのDNSサーバー。
  • search example.local により、web1 と入力すると自動的に web1.example.local が補完されます。
  • options timeout:2 attempts:3 は、「2秒待って応答がなければ3回まで再試行」という意味です。

🧠 DNSクエリの流れ

名前解決の流れを簡単にまとめると、次のようになります。

1️⃣ アプリケーション(例:ping, curlなど)がホスト名を要求
2️⃣ システムはまず /etc/hosts を参照
3️⃣ 次に /etc/resolv.conf に基づき DNS サーバーに問い合わせ
4️⃣ DNSサーバーがIPアドレスを返す

💬ポイント
/etc/hosts がローカル優先、/etc/resolv.conf が外部問い合わせに使われます。
これらの順序は /etc/nsswitch.conf の設定で制御されています。

⚙️ 設定の反映方法

通常、/etc/resolv.conf の変更は即時反映されますが、
NetworkManagerが管理している環境では、再起動が必要な場合もあります。

変更を反映する方法

[root@AlmaLinux ~]# systemctl restart NetworkManager

または、ネットワークインターフェース単位で反映する場合

[root@AlmaLinux ~]# nmcli networking off
[root@AlmaLinux ~]# nmcli networking on

💡ポイント
再起動しなくても、NetworkManagerが設定を自動で更新することがあります。

🔍 動作確認コマンド

設定が正しく反映されているかを確認するには、
dig または nslookup コマンドを使用します。

✅ digコマンド

[suzuki@AlmaLinux ~]$ dig www.google.com

主な出力例

;; QUESTION SECTION:
;www.google.com.      IN      A

;; ANSWER SECTION:
www.google.com.  30  IN  A  142.250.196.68

;; SERVER: 8.8.8.8#53(8.8.8.8)

💬ポイント
「SERVER」の行で、どのDNSサーバーが問い合わせに使われたかを確認できます。

✅ nslookupコマンド

[suzuki@AlmaLinux ~]$ nslookup www.google.com
Server:		10.0.2.3
Address:	10.0.2.3#53

Non-authoritative answer:
Name:	www.google.com
Address: 142.250.206.228
Name:	www.google.com
Address: 2404:6800:400a:804::2004

💡ポイント
こちらもシンプルにDNSサーバーの動作確認が可能です。

📜 digコマンドの解説

項目内容
コマンドdig
読み方Domain Information Groper
主な用途DNSサーバーへ直接問い合わせ、応答を確認する
使用権限一般ユーザーでOK
オプション説明
@サーバー問い合わせ先のDNSサーバーを指定(例:@8.8.8.8)
+short結果を簡潔に表示
-x逆引き(IP → ホスト名)を実行
+traceルートサーバーからの問い合わせ経路を表示

⚠️ 注意点

/etc/resolv.conf は便利ですが、AlmaLinux 9.6では
NetworkManagersystemd-resolved が自動生成・上書きすることがあります。

注意項目内容
1NetworkManagerがこのファイルを再生成する可能性あり
2永続的に設定したい場合は「nmcli」で設定するのが推奨
3domain と search の併用に注意(両方指定した場合、searchが優先)
4DNS設定の誤りはネットワーク通信全体に影響する可能性あり

💡ポイント
手動編集する前に、nmcli device show コマンドで
現在のDNS設定を確認しておくのが安全です。

✅ まとめ

  • /etc/resolv.conf は DNSサーバーの設定ファイル
  • nameserver, search, options などを指定して名前解決を制御
  • 設定変更は即時反映されるが、NetworkManagerが管理している場合は注意
  • dig や nslookup で動作確認を行うのが基本

🌟ポイント
DNSの設定は、ネットワーク通信の「土台」になる大切な部分です。
正しく設定することで、ホスト名の解決がスムーズになり、
AlmaLinuxのネットワーク環境がより安定します!