目次
はじめに
DNS(Domain Name System)は、IPアドレスとホスト名を相互に変換する仕組みです。Linuxでは、DNSクライアントの設定が非常に重要で、ネットワーク通信の安定性に直結します。
この記事では、LinuxクライアントにおけるDNSの設定方法を解説し、名前解決に関するトラブルの防止・解決にも役立つ情報を提供します。
1. DNSの基本構造
DNSクライアントは、主に以下の3つの情報源を使って名前解決を行います:
/etc/hosts(ローカル定義)- DNSサーバ(通常は
/etc/resolv.confに定義) 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クライアント設定は、名前解決のトラブル時に最初に確認すべきポイントです。仕組みとコマンドの使い方を知っておくことで、ネットワークトラブルの大半を自己解決できるようになります。

コメント