/etc/resolv.confとは?DNS設定ファイルを初心者向けに徹底解説!

プログラミング・IT

「インターネットに突然つながらなくなった…」
「Webサイトが表示されないけど、何が原因なのか分からない」

そんなトラブルに遭遇したことはありませんか?実は、その原因がDNS設定の問題というケースが意外と多いんです。

LinuxやUNIXシステムでは、/etc/resolv.confというファイルがDNS(ドメイン ネーム システム)の設定を管理しています。このファイルを理解すれば、ネットワークトラブルの解決がグッと楽になりますよ。

この記事では、/etc/resolv.confの基本から設定方法、よくあるトラブルの対処法まで、初心者の方にも分かるように丁寧に解説していきますね。

スポンサーリンク

/etc/resolv.confって何?まずは基本から

ファイルの正体

/etc/resolv.confは、Linuxシステムがインターネット上の名前解決(ドメイン名をIPアドレスに変換すること)を行うための設定ファイルです。

/etc/というのはシステム設定ファイルが保存される場所で、resolv.confが実際のファイル名になります。

そもそもDNSって何?

少し基礎知識をお話ししますね。

私たちが「google.com」のようなドメイン名でWebサイトにアクセスする時、コンピューターの内部では実際には「142.250.207.46」のようなIPアドレス(数字の住所)を使って通信しています。

この「google.com」→「142.250.207.46」という変換作業をしてくれるのがDNS(ドメイン ネーム システム)なんです。電話帳のようなものだと考えると分かりやすいですね。

resolv.confの役割

このファイルには、「どのDNSサーバーに問い合わせるか」という情報が書かれています。

つまり、「誰に住所を聞けばいいか」を記録したメモのようなものです。このファイルが正しく設定されていないと、インターネット上の名前を解決できず、Webサイトにアクセスできなくなってしまいます。

ファイルの中身を見てみよう

実際にどんな内容が書かれているのか、見ていきましょう。

ファイルを表示する方法

ターミナル(コマンドを入力する画面)で以下のコマンドを実行します:

cat /etc/resolv.conf

すると、こんな感じの内容が表示されるはずです:

nameserver 8.8.8.8
nameserver 8.8.4.4
search example.com
domain example.com

それぞれの行が何を意味しているのか、詳しく見ていきますね。

nameserver(ネームサーバー)

書式: nameserver IPアドレス

これが最も重要な設定です。DNS問い合わせを行うサーバーのIPアドレスを指定します。

具体例:

nameserver 8.8.8.8
nameserver 8.8.4.4

この例では、GoogleのパブリックDNSサーバーを指定しています。複数のnameserverを書くことができ、上から順番に問い合わせが行われます。最初のサーバーが応答しない場合、2番目、3番目と試してくれるわけです。

通常は最大3つまで設定できます。

search(サーチドメイン)

書式: search ドメイン名1 ドメイン名2 ...

ドメイン名を省略した時に自動で補完してくれるドメインのリストです。

具体例:

search example.com local.lan

この設定があると、「server1」と入力するだけで、自動的に「server1.example.com」や「server1.local.lan」を試してくれます。社内ネットワークなどで便利な機能ですね。

最大6つまで設定可能で、合計文字数は256文字までという制限があります。

domain(ドメイン)

書式: domain ドメイン名

ローカルドメイン名を指定します。searchと似ていますが、こちらは1つだけ指定できます。

具体例:

domain example.com

実際には、searchとdomainのどちらか一方を使うのが一般的です。両方書かれている場合、通常はsearchが優先されます。

options(オプション設定)

書式: options オプション名:値

より詳細な動作設定を行えます。

具体例:

options timeout:2
options attempts:3
options rotate
  • timeout:各サーバーへの問い合わせタイムアウト時間(秒)
  • attempts:各サーバーへの問い合わせ試行回数
  • rotate:nameserverをローテーション(順番に使う)

よく使われるDNSサーバー一覧

どのDNSサーバーを使えばいいか迷ったら、以下を参考にしてください。

パブリックDNSサーバー

Google Public DNS

nameserver 8.8.8.8
nameserver 8.8.4.4

高速で信頼性が高く、世界中で最も使われているDNSサーバーです。

Cloudflare DNS

nameserver 1.1.1.1
nameserver 1.0.0.1

プライバシー重視で高速。覚えやすいIPアドレスも特徴です。

Quad9

nameserver 9.9.9.9
nameserver 149.112.112.112

セキュリティ重視で、悪意のあるサイトをブロックしてくれます。

ローカルネットワーク

家庭用ルーターや企業の内部DNSサーバーを使う場合:

nameserver 192.168.1.1

ローカルIPアドレスを指定することが多いですね。

ファイルの編集方法

実際に設定を変更してみましょう。

編集の基本手順

  1. バックアップを取る(重要!)
sudo cp /etc/resolv.conf /etc/resolv.conf.backup
  1. エディタで開く
sudo nano /etc/resolv.conf

または

sudo vi /etc/resolv.conf
  1. 必要な変更を加える
  2. 保存して終了(nanoの場合:Ctrl+X → Y → Enter)
  3. 設定を確認
cat /etc/resolv.conf

編集例:GoogleのDNSに変更

既存の内容を全て削除して、以下のように書き換えます:

nameserver 8.8.8.8
nameserver 8.8.4.4

シンプルですが、これだけでGoogleのDNSサーバーを使えるようになります。

手動編集の注意点

ただし、重要な注意点があります。

多くの現代的なLinuxディストリビューション(Ubuntu、Fedora、CentOSなど)では、このファイルが自動生成される仕組みになっています。手動で編集しても、再起動やネットワーク再接続で元に戻ってしまう可能性があるんです。

そのため、恒久的な変更をする場合は別の方法が必要です。

恒久的にDNS設定を変更する方法

システムごとに適切な設定方法が異なります。

NetworkManager使用時(Ubuntu、Fedoraなど)

GUIでの設定:

  1. ネットワーク設定を開く
  2. 使用中の接続を選択
  3. 「IPv4」タブを開く
  4. 「DNS」の項目に希望のDNSサーバーを入力
  5. 保存して接続を再起動

コマンドラインでの設定:

nmcli connection modify "接続名" ipv4.dns "8.8.8.8 8.8.4.4"
nmcli connection modify "接続名" ipv4.ignore-auto-dns yes
nmcli connection up "接続名"

systemd-resolved使用時(Ubuntu 18.04以降)

/etc/systemd/resolved.confを編集します:

sudo nano /etc/systemd/resolved.conf

以下のように編集:

[Resolve]
DNS=8.8.8.8 8.8.4.4
FallbackDNS=1.1.1.1

保存後、サービスを再起動:

sudo systemctl restart systemd-resolved

古いシステムや固定設定の場合

ファイルを変更不可能にする方法もあります:

sudo chattr +i /etc/resolv.conf

これで自動書き換えを防げます。元に戻す時は:

sudo chattr -i /etc/resolv.conf

DNS設定のトラブルシューティング

よくある問題と解決方法をご紹介します。

問題1:Webサイトが表示されない

確認方法:

ping google.com

エラーが出る場合、DNS解決に失敗している可能性があります。

対処法:
IPアドレスで直接pingしてみます:

ping 8.8.8.8

これが成功すればDNSの問題、失敗すればネットワーク接続自体の問題です。

問題2:DNS問い合わせが遅い

DNSサーバーの応答速度をテストしましょう:

nslookup google.com

または

dig google.com

応答時間が数秒以上かかる場合、DNSサーバーを変更すると改善する可能性があります。

問題3:設定が再起動で消える

前述の通り、自動生成されている可能性が高いです。NetworkManagerやsystemd-resolvedの設定を変更しましょう。

現在の管理システムを確認:

ls -la /etc/resolv.conf

シンボリックリンク(→で別の場所を指している)になっている場合、そのリンク先のシステムで管理されています。

問題4:複数のDNSが設定されているのに遅い

options rotateを追加してみましょう:

nameserver 8.8.8.8
nameserver 1.1.1.1
options rotate

これで複数のDNSサーバーを効率よく使えます。

DNSキャッシュの活用

DNS問い合わせを高速化するキャッシュの話も触れておきましょう。

ローカルDNSキャッシュとは

毎回インターネット上のDNSサーバーに問い合わせるのは時間がかかります。ローカルにキャッシュ(一時保存)を持つことで、2回目以降の問い合わせを高速化できるんです。

dnsmasqの導入(任意)

dnsmasqは軽量なDNSキャッシュサーバーです。

インストール(Ubuntu/Debian):

sudo apt install dnsmasq

設定:
resolv.confに以下を記述:

nameserver 127.0.0.1

これでローカルのdnsmasqを経由してDNS問い合わせが行われ、高速化されます。

セキュリティ上の注意点

DNS設定はセキュリティにも関わる重要な要素です。

信頼できるDNSサーバーを使う

不明なDNSサーバーを使うと、悪意のあるサイトに誘導される可能性があります。大手プロバイダーやGoogle、Cloudflareなどの信頼できるサービスを使いましょう。

DNSSECの活用

DNSSEC(DNS Security Extensions)は、DNS応答の正当性を検証する仕組みです。systemd-resolvedでは自動的に有効になっていることが多いですね。

確認方法:

resolvectl status

「DNSSEC: yes」と表示されていればOKです。

DNS over HTTPS (DoH)

より高度なセキュリティとして、DNS問い合わせ自体を暗号化するDoHという技術もあります。Firefoxなどのブラウザで設定できます。

まとめ:DNS設定を理解してネットワークマスターに

/etc/resolv.confは、インターネット接続の基盤となる重要なファイルです。

この記事のポイントをおさらい:

  • resolv.confはDNS設定ファイルでネットワーク通信に必須
  • nameserverで問い合わせ先DNSサーバーを指定
  • 手動編集は一時的、恒久的変更にはシステム設定が必要
  • Google DNS(8.8.8.8)やCloudflare(1.1.1.1)が人気
  • トラブル時はpingnslookupで診断できる
  • NetworkManagerやsystemd-resolvedで適切に管理しよう
  • 信頼できるDNSサーバーを使うことがセキュリティの基本

DNS設定を理解すると、ネットワークトラブルの原因特定や解決が格段に楽になります。最初は少し難しく感じるかもしれませんが、一度慣れてしまえば強力な武器になりますよ。

「インターネットがつながらない!」という時も、冷静にresolv.confを確認できる知識があれば安心ですね。この記事があなたのLinuxライフのお役に立てば嬉しいです!

コメント

タイトルとURLをコピーしました