クライアント側のDNS設定をマスターしよう!

目次

はじめに

DNS(Domain Name System)は、IPアドレスとホスト名を相互に変換する仕組みです。Linuxでは、DNSクライアントの設定が非常に重要で、ネットワーク通信の安定性に直結します。

この記事では、LinuxクライアントにおけるDNSの設定方法を解説し、名前解決に関するトラブルの防止・解決にも役立つ情報を提供します。


1. DNSの基本構造

DNSクライアントは、主に以下の3つの情報源を使って名前解決を行います:

  1. /etc/hosts(ローカル定義)
  2. DNSサーバ(通常は /etc/resolv.conf に定義)
  3. nsswitch.conf による優先順序設定

2. /etc/resolv.confでリモートDNSサーバを設定

このファイルはクライアントが使用するDNSサーバを指定するためのものです。

cat /etc/resolv.conf

出力例:

nameserver 8.8.8.8
nameserver 8.8.4.4
  • nameserver の後に指定されたIPアドレスが、DNSクエリの問い合わせ先です。
  • 最大3つまで指定可能。

注意点:

  • NetworkManager や systemd-resolved などが resolv.conf を自動生成する場合があります。
  • 手動で設定する場合、上書きされないように管理方法を確認しましょう。

3. 名前解決の順序を制御する /etc/nsswitch.conf

このファイルで、ホスト名を解決する際の検索順を定義できます。

cat /etc/nsswitch.conf | grep hosts

出力例:

hosts: files dns
  • files: /etc/hosts を参照
  • dns: /etc/resolv.conf で指定されたDNSサーバを参照

順序を変更することで、DNSの前にローカルを優先する、あるいは逆にするなどの調整が可能です。


4. 名前解決の確認コマンド

host コマンド

host www.google.com

→ 簡易的な名前解決結果を確認できます。

dig コマンド(詳細確認)

dig www.google.com
  • DNSの応答、TTL、クエリ時間などがわかる
  • +short オプションで出力を簡略化可能
dig +short www.google.com

5. getent コマンドで統合確認

getent hosts は、nsswitch.conf に従った結果を確認するのに便利です。

getent hosts www.google.com
  • /etc/hosts → DNS → という流れに従って検索
  • DNSだけでなく、NISやLDAP環境にも対応

6. /etc/hosts を使った名前解決のローカル設定

DNSサーバを使わずにローカルで名前解決したいときは、/etc/hosts を編集します。

sudo nano /etc/hosts

例:

127.0.0.1       localhost
192.168.1.10 webserver.localdomain webserver

この設定は files によって優先されるため、nsswitch.conf の順序設定が重要です。


まとめ

設定対象内容
/etc/resolv.conf使用するDNSサーバの設定
/etc/nsswitch.conf名前解決の検索順序
/etc/hostsローカルの静的名前解決
host, dig, getent名前解決の確認ツール

DNSクライアント設定は、名前解決のトラブル時に最初に確認すべきポイントです。仕組みとコマンドの使い方を知っておくことで、ネットワークトラブルの大半を自己解決できるようになります。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次