DNS解決ができないときの調査手順(dig/nslookup)

  • URLをコピーしました!
目次

はじめに

サーバやPCからインターネットに接続しようとしたとき、ping google.com が失敗する、ブラウザでサイトが開けない、といったトラブルに遭遇することがあります。
このような場合、ネットワーク自体はつながっていても DNS解決ができていない ことが原因の可能性があります。

この記事では、dignslookup を使った調査手順と、DNS解決ができないときの具体的な原因と対処方法を解説します。

よくある原因

DNS解決ができない場合、以下のような原因が考えられます。

  • DNSサーバが指定されていない/誤っている
  • ネットワーク設定の不備(resolv.conf や NetworkManager 設定など)
  • ファイアウォールやセキュリティ設定によるブロック
  • 外部のDNSサーバ障害(Google Public DNSやISPのDNSなど)

調査手順

1. ネットワーク自体が生きているか確認

まずはIP通信ができるか確認します。

ping 8.8.8.8

Google Public DNSのIP(8.8.8.8)にpingが通れば、ネットワーク自体は生きています。
→ この場合は「DNS解決のみ失敗している」ことが分かります。

2. dig で名前解決を試す

dig はDNS調査に便利なコマンドです。

dig google.com
  • ANSWER SECTION にIPアドレスが表示されれば解決成功
  • connection timed out; no servers could be reached → DNSサーバに到達できていない
  • SERVFAIL → サーバ側の問題、もしくは問い合わせに失敗

DNSサーバを明示的に指定して確認することも可能です。

dig @8.8.8.8 google.com

3. nslookup で確認する

nslookup もDNS確認に利用できます。

nslookup google.com

失敗した場合は以下のようなエラーが出ます。

  • server can't find google.com: SERVFAIL
  • connection timed out; no servers could be reached

4. /etc/resolv.conf を確認する

Linuxの場合、DNSサーバの設定は /etc/resolv.conf に記録されています。

cat /etc/resolv.conf

例:

nameserver 8.8.8.8
nameserver 1.1.1.1

ここに正しいDNSサーバが設定されていない場合、名前解決はできません。
※ NetworkManager や systemd-resolved を使っている環境では、このファイルが自動管理されていることがあります。

5. ファイアウォールやセキュリティの確認

DNSは通常UDP 53番ポートを利用します。
以下のようなケースでブロックされている可能性があります。

  • firewalld/iptables で 53番ポートが遮断されている
  • セキュリティソフトやProxyでDNSが制限されている

確認例(firewalld):

firewall-cmd --list-all

解決方法

  • resolv.conf / ネットワーク設定を修正
    → ISPや社内ネットワークの正しいDNSサーバを設定
    → 公開DNS(例:Google DNS 8.8.8.8、Cloudflare DNS 1.1.1.1)を利用
  • systemd-resolved の再起動 systemctl restart systemd-resolved
  • firewalld で53番ポートの通信を許可 firewall-cmd --add-port=53/udp --permanent firewall-cmd --reload
  • DNSキャッシュをクリア systemd-resolve --flush-caches

まとめ

  • ネットワーク疎通確認(IPでのping) → DNSだけの問題か切り分け
  • dignslookup で詳細調査
  • /etc/resolv.conf やネットワーク設定を確認
  • ファイアウォールやセキュリティ設定も忘れずに確認

DNS解決のトラブルは、「ネットワーク自体は生きているのにサイトに繋がらない」状況でよく発生します。上記の手順を踏めば、多くの場合は原因を特定し、迅速に解決できます。

目次