【完全ガイド】Linux nslookupコマンドとは?基本の使い方・オプション 「消えたサブドメイン」の原因を特定した事例を交えて紹介! 

最終更新日 2025年2月26日

スポンサーリンク

はじめに

本セクションでは以下の内容について解説します。

  1. nslookupコマンドとは?(概要と役割)
  2. LinuxにおけるDNSの基本知識(名前解決の仕組み)
  3. なぜnslookupを使うのか?
  4. まとめ

nslookupコマンドとは?(概要と役割)

nslookupコマンドは、LinuxでDNS(Domain Name System)の情報を確認するためのコマンドです。
ドメイン名からIPアドレスを調べたり、逆にIPアドレスからドメイン名を調べたりするのに使われます。
また、特定のDNSサーバーを指定して名前解決の結果を確認することも可能です。

新人エンジニア
新人エンジニア

先輩、nslookupってどんな時に使うんですか?

先輩エンジニア
先輩エンジニア

主にDNSの動作確認やトラブルシューティングで使うよ。たとえば、特定のドメインが正しく名前解決できているか、どのIPアドレスが割り当てられているかを確認するのに便利だ。

新人エンジニア
新人エンジニア

じゃあ、nslookupが使えれば、ネットワークの問題を調べるのに役立つんですね!

先輩エンジニア
先輩エンジニア

その通り。特に、サーバー移行後のDNS設定確認や、特定のDNSサーバーの応答をチェックするのによく使われる。

nslookupコマンドとは?

DNS情報の確認ツール

nslookupは、ドメイン名からIPアドレスを調べたり、逆にIPアドレスからドメイン名を調べたりするのに使われます。

特定DNSサーバーの指定

特定のDNSサーバーを指定して名前解決の結果を確認することも可能です。

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

DNSの動作確認やトラブルシューティングに非常に便利なツールです。
nslookupコマンドとは?
スポンサーリンク

LinuxにおけるDNSの基本知識(名前解決の仕組み)

DNSは、ドメイン名をIPアドレスに変換する仕組みであり、インターネットの基盤となる重要なシステムです。
通常、Linuxでは/etc/resolv.confに設定されたDNSサーバーを利用して名前解決を行います。

新人エンジニア
新人エンジニア

そもそも、どうしてDNSって必要なんですか?

先輩エンジニア
先輩エンジニア

人間はwww.example.comみたいなドメイン名を覚えやすいけど、コンピュータはIPアドレス(192.168.1.1 みたいな数字)で通信するんだ。だから、ドメイン名とIPアドレスを変換するのがDNSの役割ってわけだ。

新人エンジニア
新人エンジニア

じゃあ、nslookupを使えば、DNSが正しく動作しているか確認できるってことですね?

先輩エンジニア
先輩エンジニア

その通り。もしDNSの設定が間違っていたり、名前解決ができなかったりすると、ウェブサイトにアクセスできなくなることもある。

新人エンジニア
新人エンジニア

なるほど、だからDNSの確認はサーバー管理において重要なんですね。

LinuxにおけるDNSの基本知識

DNSの役割

DNSは、ドメイン名をIPアドレスに変換する仕組みであり、インターネットの基盤となる重要なシステムです。

名前解決の仕組み

通常、Linuxでは/etc/resolv.confに設定されたDNSサーバーを利用して名前解決を行います。

DNSの重要性

人間にとって覚えやすいドメイン名と、コンピュータが使用するIPアドレスを橋渡しする重要な役割を果たしています。
LinuxにおけるDNSの基本知識
スポンサーリンク

なぜnslookupを使うのか?

nslookupはシンプルで使いやすく、DNSの基本的な情報をすぐに確認できるコマンドです。
一方、より詳細な情報が必要な場合はdigコマンドを使う方が適しています。

新人エンジニア
新人エンジニア

でも、digコマンドもDNSの調査に使えますよね?nslookupとどう違うんですか?

先輩エンジニア
先輩エンジニア

nslookupはシンプルで、基本的なDNSの動作確認向き。digはより詳細な情報を取得できるから、DNSのトラブル解析にはdigがよく使われる。

新人エンジニア
新人エンジニア

例えば、どんな違いがあるんですか?

先輩エンジニア
先輩エンジニア

たとえば、nslookupは対話モードで複数のクエリを連続して実行できるのが便利。一方、digは詳細な出力を提供し、DNSの応答時間やTTLの確認がしやすいという利点がある。

新人エンジニア
新人エンジニア

なるほど、簡単に調査したいときはnslookup、より深く調べたいときはdigを使えばいいんですね!

先輩エンジニア
先輩エンジニア

その通り。実際の業務では、どちらも使いこなせるようになっておくと便利だよ。

digコマンドについては以下の記事で紹介しているのでよかったら見てみてください!

nslookupとdigの使い分け

nslookup

シンプルで使いやすく、基本的なDNS情報の確認に適しています。対話モードで複数のクエリを連続して実行できる点が便利です。

dig

より詳細なDNS情報を取得でき、DNSのトラブル解析に適しています。応答時間やTTLの確認がしやすいという利点があります。
nslookupとdigの使い分け
スポンサーリンク

まとめ

  • nslookupは、LinuxでDNSの情報を確認するための基本コマンド。
  • DNSは、ドメイン名とIPアドレスを相互変換するシステムで、ネットワーク通信に不可欠。
  • nslookupは基本的なDNSのチェックに適しており、より詳細な解析が必要ならdigを使う。

nslookupコマンドの基本的な使い方

本セクションでは以下の内容について解説します。

  1. nslookupがLinuxに標準搭載されているか確認する方法
  2. インストールが必要な場合の方法(Ubuntu/Debian系, CentOS/RHEL系)
  3. 基本的な使い方
  4. まとめ
nslookupの基本的な使い方

インストール確認

nslookup --version または which nslookup コマンドで、nslookupがインストールされているか確認します。

基本的な名前解決

nslookup example.com と入力すると、指定したドメインのIPアドレスを取得できます。

逆引き検索

nslookup IPアドレス と入力すると、そのIPアドレスに対応するドメイン名を調べることができます。
nslookupの基本的な使い方

nslookupがLinuxに標準搭載されているか確認する方法

多くのLinuxディストリビューションでは、nslookupはデフォルトでインストールされています。
確認するには、以下のコマンドを実行します。

nslookup --version

または、以下のコマンドでパスを確認できます。

which nslookup
新人エンジニア
新人エンジニア

先輩、nslookupって最初から入っているんですか?

先輩エンジニア
先輩エンジニア

ほとんどのLinux環境には標準で入っているよ。ただし、環境によっては入っていないこともあるから、which nslookupで確認するといい。

新人エンジニア
新人エンジニア

もしcommand not foundって出たら、どうすればいいですか?

先輩エンジニア
先輩エンジニア

その場合は、パッケージをインストールする必要があるな。

スポンサーリンク

インストールが必要な場合の方法(Ubuntu/Debian系, CentOS/RHEL系)

nslookupはdnsutilsまたはbind-utilsパッケージに含まれています。
ディストリビューションごとのインストール方法は以下のとおりです。

Ubuntu / Debian系

sudo apt update
sudo apt install dnsutils -y

CentOS / RHEL系

sudo yum install bind-utils -y

Alpine Linux

sudo apk add bind-tools

インストール後、再度which nslookupを実行し、正しくインストールされていることを確認しましょう。

新人エンジニア
新人エンジニア

インストールした後、すぐに使えるんですか?

先輩エンジニア
先輩エンジニア

うん。特に設定変更は不要だ。もしcommand not foundのままだったら、which nslookupをもう一度試してみるか、source ~/.bashrcを実行するといい。

nslookupのインストール方法

Ubuntu / Debian系

sudo apt update && sudo apt install dnsutils -y

CentOS / RHEL系

sudo yum install bind-utils -y

Alpine Linux

sudo apk add bind-tools
nslookupのインストール方法
スポンサーリンク

基本的な使い方

nslookup ドメイン名

nslookupを使えば、ドメイン名からIPアドレスを調べることができます。
基本的な構文は以下のとおりです。

nslookup example.com

このコマンドを実行すると、以下のような結果が表示されます。

Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
Name:	example.com
Address: 93.184.216.34
新人エンジニア
新人エンジニア

このNon-authoritative answerって何ですか?

先輩エンジニア
先輩エンジニア

これは、問い合わせたDNSサーバーが権威サーバー(公式のDNS)ではなく、キャッシュされた情報を返しているって意味だ。

新人エンジニア
新人エンジニア

じゃあ、権威サーバーから直接情報を取得することもできるんですか?

先輩エンジニア
先輩エンジニア

できるよ。それは後で説明するけど、digコマンドを使うとより詳しく調べられる。

スポンサーリンク

nslookup IPアドレス(逆引き)

IPアドレスからドメイン名を調べることも可能です(逆引き)。
以下のように実行します。

nslookup 93.184.216.34

出力結果

Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
34.216.184.93.in-addr.arpa	name = example.com.
新人エンジニア
新人エンジニア

逆引きって、具体的にはどんな場面で使いますか?

先輩エンジニア
先輩エンジニア

サーバーログにIPアドレスしか記録されていないときに、どのホストからのアクセスなのか調べるのに使うことが多いな。

まとめ

  • nslookupはドメイン名からIPアドレスを調べる基本的なコマンド。
  • 逆引きを行うことで、IPアドレスからドメイン名を特定可能。
  • 特定のDNSサーバーを指定することで、異なる環境での名前解決結果を比較できる。

オプションと詳細解説

nslookupは、単にドメイン名からIPアドレスを取得するだけでなく、DNSの詳細な情報を取得するためのオプションを備えています。
ここでは、nslookupの主要なオプションについて詳しく解説します。

  1. -typeオプション(A, MX, TXT, CNAME など)
  2. -debugモードの使い方
  3. -querytypeと-class の活用方法
  4. serverコマンドを使った特定DNSサーバーの指定
  5. setコマンドでの詳細設定
  6. まとめ
nslookupの主要オプション

-type

特定のDNSレコード(A, MX, TXT, CNAMEなど)を取得します。

-debug

より詳細なDNS応答を取得します。

server

特定のDNSサーバーに対してクエリを送ります。

set

詳細な設定(タイムアウト、再試行回数など)を変更します。
nslookupの主要オプション
スポンサーリンク

-typeオプション(A, MX, TXT, CNAME など)

-type オプションを使うと、特定のDNSレコードを取得できます。
以下のように指定することで、各種レコードを調べることが可能です。

nslookup -type=A example.com      # Aレコード(IPv4アドレス)
nslookup -type=AAAA example.com   # AAAAレコード(IPv6アドレス)
nslookup -type=MX example.com     # MXレコード(メールサーバー)
nslookup -type=CNAME example.com  # CNAMEレコード(別名)
nslookup -type=TXT example.com    # TXTレコード(SPFやDKIM情報)
新人エンジニア
新人エンジニア

先輩、AレコードやMXレコードって何のためにあるんですか?

先輩エンジニア
先輩エンジニア

Aレコードはドメイン名をIPv4アドレスに紐づける基本的なレコードだ。MXレコードはメールの送信先サーバーを指定するために使われる。

新人エンジニア
新人エンジニア

TXTレコードってどんな時に使いますか?

先輩エンジニア
先輩エンジニア

TXTレコードは、ドメインの所有権確認や、SPF・DKIMなどのメール認証でよく使われるな。

-typeオプションの使い方

Aレコード

nslookup -type=A example.com でIPv4アドレスを取得します。

MXレコード

nslookup -type=MX example.com でメールサーバーの情報を取得します。

TXTレコード

nslookup -type=TXT example.com でSPFやDKIM情報を取得します。

CNAMEレコード

nslookup -type=CNAME example.com で別名レコードを取得します。
-typeオプションの使い方
スポンサーリンク

-debugモードの使い方

-debug オプションを使うと、より詳細なDNS応答を取得できます。

nslookup -debug example.com

出力結果

------------
QUESTIONS:
    example.com, type = A, class = IN
ANSWERS:
    example.com, internet address = 93.184.216.34
------------

この情報には、問い合わせの種類(Aレコード)や、DNSの応答内容が詳細に表示されます。

新人エンジニア
新人エンジニア

DNSの動作が怪しい時に、どの情報を見ればいいですか?

先輩エンジニア
先輩エンジニア

-debugオプションを使えば、問い合わせの詳細情報が見られるから、問題の切り分けに役立つよ。特に QUESTIONSANSWERS の部分をチェックするといい。

新人エンジニア
新人エンジニア

これを使うと、どんな問題が特定しやすくなるんですか?

先輩エンジニア
先輩エンジニア

例えば、DNSサーバーがどんなデータを返しているか、正しいレコードを取得しているかどうかが分かる。

-debugモードの活用

詳細情報の取得

nslookup -debug example.com コマンドを使用すると、より詳細なDNS応答を取得できます。

問題の切り分け

QUESTIONSやANSWERSの部分をチェックすることで、DNSの問題を特定しやすくなります。

応答内容の確認

DNSサーバーがどのようなデータを返しているか、正しいレコードを取得しているかどうかが分かります。
-debugモードの活用
スポンサーリンク

-querytypeと-class の活用方法

-querytype-type と同じ機能で、特定のレコードを指定できます。

nslookup -querytype=NS example.com

-class オプションを使うと、異なるDNSクラスを指定できますが、通常の使用では IN(インターネット)を使うことがほとんどです。

nslookup -class=IN example.com
新人エンジニア
新人エンジニア

-querytype-typeの違いって何ですか?

先輩エンジニア
先輩エンジニア

実はどちらも同じ動作をする。でも、昔のnslookupでは-querytypeが主流だったから、今も一部の環境で使われている。

新人エンジニア
新人エンジニア

-classオプションはどんな時に使いますか?

先輩エンジニア
先輩エンジニア

DNSにはIN(インターネット)以外にCHAOS(BINDのバージョン確認用)なんかもあるけど、実際にはほとんど使う機会はないな。

serverコマンドを使った特定DNSサーバーの指定

特定のDNSサーバーに対してクエリを送るには、server コマンドを使います。
これは、nslookupの対話モードで使用します。

nslookup
> server 8.8.8.8
> example.com
新人エンジニア
新人エンジニア

特定のDNSサーバーに問い合わせたい時はどうすればいいですか?

先輩エンジニア
先輩エンジニア

普通は nslookup example.com 8.8.8.8 でOKだけど、対話モードで server コマンドを使うと、連続して異なるクエリを試せるから便利だぞ。

新人エンジニア
新人エンジニア

対話モードだと何が便利になるんですか?

先輩エンジニア
先輩エンジニア

例えば、同じDNSサーバーで複数のクエリを連続して実行できるから、細かく調査するときに使うといい。

特定DNSサーバーの指定方法

コマンドライン指定

nslookup example.com 8.8.8.8 のように、コマンドの最後にDNSサーバーのIPアドレスを追加します。

対話モードでの指定

nslookup を実行後、server 8.8.8.8 と入力することで、特定のDNSサーバーを指定できます。

社内DNSサーバーの利用

nslookup internal.example.com 192.168.1.1 のように、社内DNSサーバーを指定してクエリを実行できます。
特定DNSサーバーの指定方法
スポンサーリンク

setコマンドでの詳細設定

nslookupの対話モードでは、set コマンドを使って詳細な設定が可能です。

コマンド説明
set debug詳細なデバッグ情報を表示
set type=MX問い合わせるレコードの種類を指定
set timeout=5タイムアウトの時間を5秒に設定
set retry=3クエリの再試行回数を設定

使用例

nslookup
> set type=MX
> example.com
新人エンジニア
新人エンジニア

set コマンドって何ができるんですか?

先輩エンジニア
先輩エンジニア

nslookupの動作をカスタマイズできる。例えば、デフォルトのレコード種類をMXに設定したり、タイムアウト時間を変えたりできる。

新人エンジニア
新人エンジニア

再試行回数も設定できるんですね!

先輩エンジニア
先輩エンジニア

そう。set retry=3 を設定すれば、応答がないときに3回再試行するようになる。

setコマンドでの詳細設定

set debug

詳細なデバッグ情報を表示

set type=MX

問い合わせるレコードの種類を指定

set timeout=5

タイムアウトの時間を5秒に設定

set retry=3

クエリの再試行回数を設定
setコマンドでの詳細設定
スポンサーリンク

まとめ

  • -type オプションで、A, MX, TXTなど特定のレコードを取得できる。
  • -debug オプションで詳細なDNSクエリの情報を取得可能。
  • server コマンドを使うと、特定のDNSサーバーに問い合わせできる。
  • set コマンドで詳細な設定(レコードタイプ、タイムアウト、再試行回数など)を変更できる。

これらのオプションを適切に使いこなせば、DNSの調査やトラブルシューティングがよりスムーズに行えるようになります。

nslookupを活用したDNSトラブルシューティング

本セクションでは以下の内容について解説します。

  1. 名前解決ができない場合の確認方法
  2. ネットワークチェック(ping, traceroute)
  3. NXDOMAIN(ドメインが存在しない)エラー
  4. SERVFAILやREFUSEDの原因と解決策
  5. キャッシュDNSの影響を調べる方法
  6. まとめ
DNSトラブルシューティング

エラーコードの確認

NXDOMAIN、SERVFAIL、REFUSEDなどのエラーコードを確認し、問題の原因を特定します。

ネットワークチェック

pingやtracerouteを使用して、ネットワーク接続が正常か確認します。

別DNSサーバーでの確認

Google Public DNS(8.8.8.8)など、別のDNSサーバーで名前解決を試みます。

キャッシュのクリア

DNSキャッシュをクリアして、最新の情報を取得します。
DNSトラブルシューティング
スポンサーリンク

名前解決ができない場合の確認方法

nslookupのエラーコードとその意味

nslookupで名前解決ができない場合、エラーメッセージを確認することが重要です。
以下のようなエラーが発生した場合、それぞれの原因を特定し対処する必要があります。

エラーコード意味
NXDOMAINドメインが存在しない
SERVFAILDNSサーバーの障害または設定ミス
REFUSEDDNSサーバーがクエリを拒否
TIMEOUT応答が遅い、またはサーバーが応答しない
新人エンジニア
新人エンジニア

先輩、nslookupでNXDOMAINって出たんですが、これはどういう意味ですか?

先輩エンジニア
先輩エンジニア

それは指定したドメインがDNS上に存在しないってことだな。本当にそのドメインがあるのか、スペルミスがないか確認したほうがいい。

新人エンジニア
新人エンジニア

もしドメインが間違っていないのにエラーが出る場合は?

先輩エンジニア
先輩エンジニア

それなら、使用しているDNSサーバーが古い情報をキャッシュしている可能性があるな。他のDNSサーバーで試してみるといい。

NXDOMAINエラーの対処法

スペルミスの確認

ドメイン名のスペルミスがないか、再度確認します。

別DNSサーバーでの確認

Google Public DNS(8.8.8.8)など、別のDNSサーバーで試してみます。

whoisコマンドの使用

whois example.com コマンドでドメインの有効性を確認します。
NXDOMAINエラーの対処法
スポンサーリンク

ネットワークチェック(ping, traceroute)

DNSの問題が発生した場合、最初にネットワークが正常に動作しているか確認することが重要です。

まず、対象のホストに対してpingを実行し、応答があるか確認します。

ping example.com

次に、通信経路を調べるためにtracerouteを実行します。

traceroute example.com  # Linux
tracert example.com     # Windows
新人エンジニア
新人エンジニア

nslookupが失敗するんですが、これはDNSの問題ってことですよね?

先輩エンジニア
先輩エンジニア

そうとは限らない。まずはネットワーク自体が正常に動作しているか確認する必要がある。pingtracerouteを試してみてくれ。

新人エンジニア
新人エンジニア

なるほど、ネットワークが切れていたら、そもそもDNSどころじゃないですね!

先輩エンジニア
先輩エンジニア

そういうことだ。まずは基本のチェックからやるのがトラブルシューティングの基本だな。

NXDOMAIN(ドメインが存在しない)エラー

NXDOMAINは、指定したドメイン名がDNS上に存在しない場合に発生します。
このエラーが出た場合、まず以下を確認しましょう。

  • ドメイン名のスペルミスを確認する
  • 別のDNSサーバー(Google Public DNS 8.8.8.8 など)で試す
  • whoisコマンドでドメインの有効性を確認する
whois example.com
新人エンジニア
新人エンジニア

NXDOMAINが出たら、基本的にはDNS側の問題ってことですか?

先輩エンジニア
先輩エンジニア

その可能性が高いけど、スペルミスやキャッシュの影響も考えられる。まずは別のDNSサーバーで試すのがいい。

スポンサーリンク

SERVFAILやREFUSEDの原因と解決策

SERVFAILREFUSEDのエラーは、DNSサーバーが正しく応答できない場合に発生します。

  • SERVFAIL(サーバー障害)
    • DNSサーバー自体の設定ミスや一時的な障害が原因
    • 他のDNSサーバーで試してみる(Google DNS 8.8.8.8 など)
nslookup example.com 8.8.8.8
  • REFUSED(クエリが拒否された)
    • 権限のないDNSサーバーに問い合わせた可能性
    • ファイアウォールやアクセス制限の確認
新人エンジニア
新人エンジニア

SERVFAILって出る場合は、どうやって対処すればいいですか?

先輩エンジニア
先輩エンジニア

まずは、他のDNSサーバーで試すのが基本だ。もしそれでもダメなら、DNSサーバー側で設定ミスがないか確認する必要があるな。

新人エンジニア
新人エンジニア

じゃあ、REFUSEDはどういう時に出るんですか?

先輩エンジニア
先輩エンジニア

これは、問い合わせたDNSサーバーがアクセスを拒否しているケースが多い。ファイアウォールの設定やDNSの権限を見直してみるといい。

SERVFAILとREFUSEDエラーの対処

SERVFAIL(サーバー障害)

DNSサーバー自体の設定ミスや一時的な障害が原因の可能性があります。他のDNSサーバーで試してみましょう。

REFUSED(クエリが拒否された)

権限のないDNSサーバーに問い合わせた可能性があります。ファイアウォールやアクセス制限を確認しましょう。
SERVFAILとREFUSEDエラーの対処
スポンサーリンク

キャッシュDNSの影響を調べる方法

DNSのキャッシュが原因で古い情報が残っている場合、新しいレコードが反映されないことがあります。
キャッシュの影響を調べる方法として、以下の手順を試してみましょう。

1.異なるDNSサーバーを使って名前解決を試す

nslookup example.com 8.8.8.8

2.NSキャッシュをクリアする(Linux)

sudo systemctl restart systemd-resolved

3.WindowsでDNSキャッシュをクリアする

ipconfig /flushdns
新人エンジニア
新人エンジニア

サイトのDNSを変更したのに、なかなか反映されないんですが…

先輩エンジニア
先輩エンジニア

それはローカルのDNSキャッシュの影響かもしれないな。ipconfig /flushdnsでクリアしてみたか?

新人エンジニア
新人エンジニア

あ、それはまだです。じゃあ、DNSサーバーのキャッシュも影響するんですか?

先輩エンジニア
先輩エンジニア

もちろん。特にISPのDNSはキャッシュを長く保持することがあるから、Google DNSやCloudflare DNSで試すのも有効な方法だな。

キャッシュDNSの影響調査

異なるDNSサーバーでの確認

nslookup example.com 8.8.8.8 のように、別のDNSサーバーで名前解決を試みます。

NSキャッシュのクリア(Linux)

sudo systemctl restart systemd-resolved コマンドでキャッシュをクリアします。

WindowsでのDNSキャッシュクリア

ipconfig /flushdns コマンドを実行してキャッシュをクリアします。
キャッシュDNSの影響調査
スポンサーリンク

まとめ

  • DNSトラブルの基本は、エラーメッセージを確認し、原因を特定すること。
  • ネットワークが正常かどうかをpingやtracerouteで確認する。
  • NXDOMAIN はドメインの存在を確認し、別のDNSサーバーでも試す。
  • SERVFAILREFUSED はDNSサーバー側の設定やアクセス権限をチェックする。
  • キャッシュの影響を考慮し、DNSキャッシュをクリアする方法も試す。

DNSのトラブルシューティングには、エラーの意味を理解し、適切な手順で調査することが重要です。

よくある質問(FAQ)

本セクションでは以下の内容について解説します。

  1. nslookupで特定のサーバーに問い合わせる方法は?
  2. nslookupでタイムアウトが発生する原因は?
  3. nslookupの結果が変わるのはなぜ?
  4. まとめ

nslookupで特定のサーバーに問い合わせる方法は?

特定のDNSサーバーに問い合わせるには、nslookup ドメイン名 DNSサーバーIP の形式で実行します。
例えば、GoogleのパブリックDNS(8.8.8.8)を指定する場合は以下のように実行します。

nslookup example.com 8.8.8.8

出力例

Server:		8.8.8.8
Address:	8.8.8.8#53

Non-authoritative answer:
Name:	example.com
Address: 93.184.216.34
新人エンジニア
新人エンジニア

nslookupって、デフォルトでどのDNSサーバーを使うんですか?

先輩エンジニア
先輩エンジニア

基本的には、/etc/resolv.conf に設定されているDNSサーバーが使われる。でも、特定のDNSサーバーを指定したいときは、IPアドレスをコマンドの最後に追加すればOK

新人エンジニア
新人エンジニア

じゃあ、社内のDNSサーバーを使いたいときは?

先輩エンジニア
先輩エンジニア

例えば nslookup internal.example.com 192.168.1.1 って実行すれば、社内DNSサーバー(192.168.1.1)を指定してクエリを実行できる。

スポンサーリンク

nslookupでタイムアウトが発生する原因は?

nslookupでタイムアウトが発生する原因の多くは、DNSサーバーが応答しないことです。
以下のような原因が考えられます。

  • ネットワーク接続が切れているpingtraceroute で接続確認
  • 指定したDNSサーバーがダウンしている → 別のDNSサーバーを試す
  • ファイアウォールでDNSクエリがブロックされているiptablesufw の設定を確認

タイムアウトの確認方法

nslookup example.com 8.8.8.8
新人エンジニア
新人エンジニア

nslookupでタイムアウトすることがあるんですが、どうしてですか?

先輩エンジニア
先輩エンジニア

一番多いのは、指定したDNSサーバーが応答していないケースだな。 まずは ping 8.8.8.8traceroute 8.8.8.8 で、ネットワークが正常か確認するといい。

新人エンジニア
新人エンジニア

もしネットワークが問題なかったら?

先輩エンジニア
先輩エンジニア

次に疑うのはファイアウォールの設定だ。iptables -Lufw status でDNSクエリ(UDP 53番ポート)がブロックされていないかチェックしてみろ。

nslookupのタイムアウト

ネットワーク接続の確認

ping や traceroute コマンドでネットワーク接続を確認します。

別のDNSサーバーを試す

Google DNS(8.8.8.8)など、別のDNSサーバーで名前解決を試みます。

ファイアウォール設定の確認

iptables -L や ufw status でDNSクエリ(UDP 53番ポート)がブロックされていないか確認します。
nslookupのタイムアウト
スポンサーリンク

nslookupの結果が変わるのはなぜ?

nslookupの結果が異なる理由は、主に以下の3つです。

  • 異なるDNSサーバーを使用している
    • ISPのDNS、Google DNS、Cloudflare DNSなど、サーバーによって応答が違う
    • nslookup example.com 8.8.8.8 で特定のDNSサーバーを指定して確認
  • DNSキャッシュの影響
    • 一部のDNSサーバーはキャッシュを保持するため、変更がすぐに反映されない
    • ipconfig /flushdns(Windows)や sudo systemctl restart systemd-resolved(Linux)でキャッシュをクリア
  • DNSラウンドロビンによる異なるIPの返答
    • 負荷分散のため、異なるIPアドレスが返されることがある
新人エンジニア
新人エンジニア

同じドメインを調べても、nslookupの結果が変わることがあるんですが、なぜですか?

先輩エンジニア
先輩エンジニア

使っているDNSサーバーによって結果が違うことがある。 ISPのDNSとGoogle DNSでは異なる情報を持っていることもあるからな。

新人エンジニア
新人エンジニア

じゃあ、DNSサーバーを指定して試せば、統一した結果を確認できますか?

先輩エンジニア
先輩エンジニア

そうだな。たとえば nslookup example.com 8.8.8.8 でGoogle DNSの結果を確認すれば、一貫性がある情報を取得できる。

新人エンジニア
新人エンジニア

DNSキャッシュの影響もありますか?

先輩エンジニア
先輩エンジニア

もちろん。DNSサーバーやローカルPCのキャッシュが影響することがある。キャッシュをクリアして再試行すると、最新の情報が取得できる場合がある。

nslookupの結果が変わる理由

DNSサーバーの違い

ISPのDNS、Google DNS、Cloudflare DNSなど、サーバーによって応答が異なる場合があります。

DNSキャッシュの影響

一部のDNSサーバーはキャッシュを保持するため、変更がすぐに反映されないことがあります。

DNSラウンドロビン

負荷分散のため、異なるIPアドレスが返されることがあります。

TTL(Time To Live)の影響

レコードのTTL値によって、キャッシュの有効期限が異なります。
nslookupの結果が変わる理由
スポンサーリンク

まとめ

  • 特定のDNSサーバーに問い合わせるには nslookup example.com 8.8.8.8 を使う。
  • nslookupのタイムアウトは、ネットワーク接続やファイアウォール設定を確認する。
  • IPv6アドレスを調べるには -type=AAAA を指定する。
  • nslookupの結果が変わる理由は、DNSサーバーの違い・キャッシュの影響・DNSラウンドロビンの可能性がある。

nslookupコマンドを使って「消えたサブドメイン」の原因を特定した話

ある日、開発チームから「特定のサブドメインが急にアクセスできなくなった」という問い合わせを受けました。
サーバー自体は問題なく稼働しており、ドメイン設定を変更した形跡もありません。
nslookupを使って詳細に調査を進めたところ、意外な原因が判明しました。

  1. nslookupで名前解決の状況を確認する
  2. 異なるDNSサーバーで調査を行う
  3. DNSキャッシュをクリアして最新情報を取得
  4. ルートネームサーバーの情報を直接確認
  5. まとめ
「消えたサブドメイン」の原因特定

ローカルDNSでの確認

nslookup sub.example.com を実行し、NXDOMAINエラーを確認しました。

別DNSサーバーでの確認

nslookup sub.example.com 8.8.8.8 で、GoogleのDNSサーバーでは正常に解決できることを確認しました。

DNSキャッシュのクリア

sudo systemctl restart systemd-resolved でローカルのDNSキャッシュをクリアしました。

NSレコードの確認

nslookup -type=NS example.com でネームサーバーの設定を確認しました。
「消えたサブドメイン」の原因特定
スポンサーリンク

nslookupで名前解決の状況を確認する

まず、該当のサブドメインが正常に名前解決できているかどうかを確認するために、nslookupを実行しました。

nslookup sub.example.com
新人エンジニア
新人エンジニア

先輩、昨日まで動いていたsub.example.comにアクセスできなくなりました。サーバーは正常に稼働しているのですが…。

先輩エンジニア
先輩エンジニア

まずは、ドメインの名前解決が正常に動作しているか確認しましょう。nslookupで直接問い合わせてみます。

出力結果

Server:		192.168.1.1
Address:	192.168.1.1#53

** server can't find sub.example.com: NXDOMAIN
新人エンジニア
新人エンジニア

NXDOMAIN? つまり、このサブドメインが存在しないということですか?

先輩エンジニア
先輩エンジニア

その通り。DNSサーバーがこのドメインを認識していないみたいですね。ただ、まだ原因は特定できていません。他のDNSサーバーにも問い合わせてみましょう。

異なるDNSサーバーで調査を行う

ローカルのDNSサーバーで名前解決できなかったため、GoogleのパブリックDNS(8.8.8.8)を指定してnslookupを実行しました。

nslookup sub.example.com 8.8.8.8

出力結果

Server:		8.8.8.8
Address:	8.8.8.8#53

Name:	sub.example.com
Address: 203.0.113.XX
新人エンジニア
新人エンジニア

あれ? GoogleのDNSではちゃんと解決できますね。

先輩エンジニア
先輩エンジニア

つまり、ローカルのDNSサーバーがこのサブドメインの最新情報を取得できていない可能性が高いですね。

新人エンジニア
新人エンジニア

ということは、キャッシュの問題ですか?

先輩エンジニア
先輩エンジニア

その可能性が高いですね。ローカルのDNSキャッシュが古い情報を持っているため、変更が反映されていない可能性があります。

スポンサーリンク

DNSキャッシュをクリアして最新情報を取得

ローカルのDNSサーバーが古いキャッシュを保持している可能性があるため、キャッシュをクリアして最新情報を取得することにしました。

sudo systemctl restart systemd-resolved  # LinuxのDNSキャッシュをクリア

Windows環境では以下のコマンドを実行します。

ipconfig /flushdns
新人エンジニア
新人エンジニア

DNSキャッシュをクリアしたら、名前解決できるようになりました!

先輩エンジニア
先輩エンジニア

そうですね。ローカルのDNSサーバーが古いキャッシュを保持していたため、最新のレコードが取得できなかったのが原因でした。

ルートネームサーバーの情報を直接確認

念のため、ルートネームサーバーを使ってNSレコード(ネームサーバーの情報)を直接問い合わせることで、設定が正しく伝播されているか確認しました。

nslookup -type=NS example.com

出力結果

Server:		8.8.8.8
Address:	8.8.8.8#53

example.com nameserver = ns1.dnsprovider.com.
example.com nameserver = ns2.dnsprovider.com.
新人エンジニア
新人エンジニア

NSレコードを確認すると、ネームサーバーは問題なく設定されていますね。

先輩エンジニア
先輩エンジニア

そうですね。DNSサーバー自体の設定に問題はなく、単にローカルのDNSキャッシュが更新されていなかっただけだったようです。

nslookupを使ったDNS設定の確認

Aレコードの確認

nslookup -type=A example.com で、ドメインのIPアドレスを確認します。

MXレコードの確認

nslookup -type=MX example.com で、メールサーバーの設定を確認します。

TXTレコードの確認

nslookup -type=TXT example.com で、SPFやDKIMの設定を確認します。

CNAMEレコードの確認

nslookup -type=CNAME subdomain.example.com で、サブドメインの別名設定を確認します。
nslookupを使ったDNS設定の確認
スポンサーリンク

まとめ

  • nslookupを使えば、特定のドメインが名前解決できるかすぐに確認できる。
  • 異なるDNSサーバーを指定して名前解決を試すことで、ローカルキャッシュの問題かどうかを切り分けられる。
  • ローカルのDNSキャッシュが古いと、最新の情報が反映されず、アクセスできないことがある。
  • キャッシュをクリアすることで、最新のDNSレコードを取得できるようになる。

この記事も参考になるかも!
この記事を書いた人!

ゴリタン

インフラエンジニアとして、ネットワークとサーバーの運用・保守・構築・設計に幅広く携わり、
現在は大規模政府公共データの移行プロジェクトを担当。

CCNPやLPICレベル3、AWSセキュリティスペシャリストなどの資格を保有しています。

あなたにオススメの広告
スポンサーリンク
Linux教科書