結論

nslookup は、ドメイン名とIPアドレスなどの対応をDNSサーバーに問い合わせて表示するコマンドです。書き方は nslookup 名前 [DNSサーバー] です。

この記事でわかること

  • 正引き・逆引き・-type 7種の実出力と早見表
  • エラー6種の原文と、原因・直し方の表
  • nslookup と dig の対応表12項目

2026年10月17日更新|nslookup 9.18.39・BIND 9.18.39で実行確認

nslookup は、ふだん使っている DNS サーバー(キャッシュDNSサーバー)か、指定したサーバーに問い合わせます。どちらから答えが来たかで、出力の見出しが変わります。

flowchart TD
    A[nslookup 名前] --> B[キャッシュDNSサーバー<br/>ふだん使うDNS]
    B --> C[権威DNSサーバー<br/>ゾーンを持つ]
    B --> D[Non-authoritative answer<br/>キャッシュ経由の答え]
    A -.サーバーを直接指定.-> C
    C --> E[見出しなし<br/>権威のある答え]

よく使う形を、使う人が多い順に並べました。example.com と 192.0.2.10 は自分の調べたい名前・アドレスに置き換えます。

やりたいこと コマンド 本文
IPアドレスを調べる(正引き) nslookup example.com 正引き
IPアドレスから名前(逆引き) nslookup 192.0.2.10 逆引き
DNSサーバーを指定する nslookup example.com 8.8.8.8 DNS指定
メールサーバー(MX) nslookup -type=mx example.com -type
SPF・認証用の文字列(TXT) nslookup -type=txt example.com -type
DMARC の設定 nslookup -type=txt _dmarc.example.com -type
担当のDNSサーバー(NS) nslookup -type=ns example.com -type
別名の行き先(CNAME) nslookup -type=cname www.example.com -type
ゾーンの情報(SOA) nslookup -type=soa example.com -type
TTL など詳しく見る nslookup -debug example.com 結果の見方
待ち時間を短くする nslookup -timeout=1 -retry=1 example.com エラー

確認環境:nslookup・dig 9.18.39(BIND 9.18.39-0ubuntu0.24.04.7、Ubuntu 24.04.4 LTS)。BIND 9.18.39 で、権威DNSサーバー(127.0.0.1 の 25053 番ポート)と、そこへ転送するキャッシュDNSサーバー(25054 番ポート)を立て、自分のゾーン rjc-demo.test を作りました。名前は予約済みのトップレベル .test、アドレスは文書用の 192.0.2.0/24・2001:db8::/32 です。記事の出力はすべて、このサーバーへ問い合わせた実物です。実行例の -port=25054 は 53 番以外のポートで動かしたサーバーに向けるための指定で、ふだんは付けません。オプションと既定値は BIND 9 のマニュアル、Windows 版は Microsoft Learn で確かめています(確認日 2026年10月17日)。

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「nslookupの使い方|逆引き・DNS指定・MX・エラーの意味を実例で」

nslookupとは:DNSサーバーに直接問い合わせるコマンド

DNS(ドメイン名とIPアドレスを結びつける仕組み)に、「この名前のIPアドレスは?」と聞いて、返ってきた答えをそのまま表示するのが nslookup です。Windows・Mac・Linux のどれでも同じ名前で使えます。

使う場面は主に次の4つです。

  • サイトにつながらないとき、名前がIPアドレスに変わっているか(名前解決できているか)を確かめる
  • DNS の設定を変えたあと、新しい値が返るかを確かめる
  • メール(MX・SPF・DMARC)やドメイン認証(TXT)のレコードが入っているかを確かめる
  • IPアドレスから、どのホストかを調べる(逆引き)

書き方は2通りあります。

形 書き方 向いている場面
非対話モード nslookup [-オプション] 名前 [DNSサーバー] 1回だけ調べる・スクリプト
対話モード nslookup または nslookup - DNSサーバー 何件も続けて調べる

BIND 9 のマニュアルでは、引数なし、または最初の引数が -(ハイフン)のとき対話モードになり、1つ目の引数に名前かIPアドレスを書くと非対話モードになる、と定めています。

nslookupの基本:正引き(ドメイン名からIPアドレス)

名前だけを書くと、ふだん使っている DNS サーバー(Linux なら /etc/resolv.conf の nameserver)に問い合わせます。種類を指定しないときは、A(IPv4)と AAAA(IPv6)の両方を調べます。

nslookup -port=25054 rjc-demo.test 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#25054

Non-authoritative answer:
Name:   rjc-demo.test
Address: 192.0.2.10
Name:   rjc-demo.test
Address: 2001:db8::10

Address: 192.0.2.10 が IPv4、2001:db8::10 が IPv6 のアドレスです。

別名(CNAME)を引いたときは、行き先の名前が canonical name として出て、その先のアドレスが続きます。

$ nslookup -port=25054 www.rjc-demo.test 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#25054

Non-authoritative answer:
www.rjc-demo.test   canonical name = rjc-demo.test.
Name:   rjc-demo.test
Address: 192.0.2.10
Name:   rjc-demo.test
Address: 2001:db8::10

1つの名前に複数のアドレスがある場合は、すべて表示されます。順番は問い合わせのたびに変わることがあります(負荷を分けるため)。

$ nslookup -port=25054 api.rjc-demo.test 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#25054

Non-authoritative answer:
Name:   api.rjc-demo.test
Address: 192.0.2.32
Name:   api.rjc-demo.test
Address: 192.0.2.31
Name:   api.rjc-demo.test
Address: 192.0.2.33

ゾーンでは .31 .32 .33 の順に書いていますが、返ってきた順は .32 .31 .33 でした。

nslookupの逆引き(IPアドレスからドメイン名)

IPアドレスを渡すと、自動で逆引き(PTR レコードの検索)になります。 -type=ptr は付けなくても動きます。

$ nslookup -port=25054 192.0.2.10 127.0.0.1
10.2.0.192.in-addr.arpa name = rjc-demo.test.

Authoritative answers can be found from:

IPv6 のアドレスも同じ書き方で引けます。

$ nslookup -port=25054 2001:db8::10 127.0.0.1
0.1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.b.d.0.1.0.0.2.ip6.arpa    name = rjc-demo.test.

Authoritative answers can be found from:

逆引きの名前は、IPv4 ならアドレスを逆に並べて .in-addr.arpa を付けた形(192.0.2.10 → 10.2.0.192.in-addr.arpa)、IPv6 なら16進の1桁ずつを逆に並べて .ip6.arpa を付けた形です。この形を自分で書いて -type=ptr で引いても同じ結果になります。

$ nslookup -port=25054 -type=ptr 10.2.0.192.in-addr.arpa 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#25054

Non-authoritative answer:
10.2.0.192.in-addr.arpa name = rjc-demo.test.

Authoritative answers can be found from:

PTR レコードが無いアドレスは NXDOMAIN になります。 正引きできるのに逆引きできない、というのはよくあることです。逆引きのレコードは、そのIPアドレスを持つ側(クラウド事業者やプロバイダー)の設定で決まります。

$ nslookup -port=25054 192.0.2.99 127.0.0.1
** server can't find 99.2.0.192.in-addr.arpa: NXDOMAIN

メールの送信サーバーは、逆引きの結果が送信元の判定に使われることがあるため、正引きと逆引きが一致しているかをこの2つのコマンドで確かめます。

nslookupでDNSサーバーを指定する方法

2つ目の引数に DNS サーバーの IP アドレス(またはホスト名)を書くと、そのサーバーに問い合わせます。

nslookup example.com 8.8.8.8      # Google Public DNS に聞く
nslookup example.com 1.1.1.1      # Cloudflare の 1.1.1.1 に聞く

指定の仕方は3通りあります。

方法 書き方 使う場面
2つ目の引数 nslookup 名前 サーバー 1回だけ別のサーバーに聞く
対話モードの server server サーバー 続けて同じサーバーに聞く
ポートも変える nslookup -port=番号 名前 サーバー 53 番以外で動くサーバー

権威DNSサーバーを直接指定すると、キャッシュを通らない「いまゾーンに書いてある値」が返ります。 権威DNSサーバーの名前は -type=ns で調べられます(次の節)。権威DNSサーバーに直接聞いた出力には、Non-authoritative answer: の行がありません。

$ nslookup -port=25053 rjc-demo.test 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#25053

Name:   rjc-demo.test
Address: 192.0.2.10
Name:   rjc-demo.test
Address: 2001:db8::10

ふだんのサーバー(キャッシュDNS)と権威DNSサーバーの両方に聞き、答えが違えば「設定は変わったが、キャッシュが残っている」と分かります。実例は「変更したDNSが反映されないとき」の節にあります。

-typeでレコードの種類を指定する(A・AAAA・MX・TXT・NS・CNAME・SOA)

-type=種類(-query=種類・-q=種類 も同じ)で、調べるレコードを1つ選びます。大文字・小文字はどちらでも動きます。

-type 調べるもの 出力に出る言葉
a IPv4 アドレス Address:
aaaa IPv6 アドレス Address:
mx メールの受け取りサーバーと優先度 mail exchanger =
txt SPF・DMARC・所有確認の文字列 text =
ns ゾーンを担当する権威DNSサーバー nameserver =
cname 別名の行き先 canonical name =
soa ゾーンの管理情報(シリアル番号など) origin = serial =
ptr 逆引きの名前 name =

レコードそれぞれの役割と設定ミスは、関連記事「DNSレコードの種類一覧|digの実出力で役割と設定ミスを確認」で扱っています。

MX(メールサーバー)

$ nslookup -port=25054 -type=mx rjc-demo.test 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#25054

Non-authoritative answer:
rjc-demo.test   mail exchanger = 10 mail.rjc-demo.test.
rjc-demo.test   mail exchanger = 20 mail2.rjc-demo.test.

Authoritative answers can be found from:
mail.rjc-demo.test  internet address = 192.0.2.25
mail2.rjc-demo.test internet address = 192.0.2.26

10・20 は優先度で、数字が小さいほうが先に使われます。 下の Authoritative answers can be found from: には、メールサーバーのアドレスがおまけで付いてきています。

TXT(SPF・DMARC・ドメインの所有確認)

$ nslookup -port=25054 -type=txt rjc-demo.test 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#25054

Non-authoritative answer:
rjc-demo.test   text = "google-site-verification=demo-token-123"
rjc-demo.test   text = "v=spf1 ip4:192.0.2.25 -all"

Authoritative answers can be found from:

DMARC は、ドメイン名の前に _dmarc. を付けた名前の TXT にあります。

$ nslookup -port=25054 -type=txt _dmarc.rjc-demo.test 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#25054

Non-authoritative answer:
_dmarc.rjc-demo.test    text = "v=DMARC1; p=quarantine; rua=mailto:dmarc@rjc-demo.test"

Authoritative answers can be found from:

NS(権威DNSサーバー)

$ nslookup -port=25054 -type=ns rjc-demo.test 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#25054

Non-authoritative answer:
rjc-demo.test   nameserver = ns2.rjc-demo.test.
rjc-demo.test   nameserver = ns1.rjc-demo.test.

Authoritative answers can be found from:
ns1.rjc-demo.test   internet address = 192.0.2.1
ns2.rjc-demo.test   internet address = 192.0.2.2

ここに出た ns1.rjc-demo.test などを2つ目の引数にすると、権威DNSサーバーに直接聞けます。

CNAME(別名)

$ nslookup -port=25054 -type=cname www.rjc-demo.test 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#25054

Non-authoritative answer:
www.rjc-demo.test   canonical name = rjc-demo.test.

Authoritative answers can be found from:

CNAME ではない名前に -type=cname で聞くと、No answer になり、代わりにゾーンの SOA が付いてきます。

$ nslookup -port=25054 -type=cname rjc-demo.test 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#25054

Non-authoritative answer:
*** Can't find rjc-demo.test: No answer

Authoritative answers can be found from:
rjc-demo.test
    origin = ns1.rjc-demo.test
    mail addr = hostmaster.rjc-demo.test
    serial = 2026101701
    refresh = 3600
    retry = 900
    expire = 1209600
    minimum = 300

SOA(ゾーンの管理情報)

$ nslookup -port=25054 -type=soa rjc-demo.test 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#25054

Non-authoritative answer:
rjc-demo.test
    origin = ns1.rjc-demo.test
    mail addr = hostmaster.rjc-demo.test
    serial = 2026101701
    refresh = 3600
    retry = 900
    expire = 1209600
    minimum = 300
項目 意味
origin ゾーンの大元の権威DNSサーバー
mail addr 管理者のメールアドレス(最初の . が @ の意味)
serial ゾーンの版。変更のたびに増やす
refresh・retry・expire セカンダリーが更新を確かめる間隔など(秒)
minimum 「無い」という答えをキャッシュする秒数

serial は、ゾーンを書き換えたのに反映されないときの手がかりになります。権威DNSサーバーごとに -type=soa で聞き、値がそろっているかを見ます。

AAAA と、レコードが無いとき

$ nslookup -port=25054 -type=aaaa rjc-demo.test 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#25054

Non-authoritative answer:
Name:   rjc-demo.test
Address: 2001:db8::10

名前はあるが、その種類のレコードが無いときは No answer です。NXDOMAIN(名前そのものが無い)とは別の状態です。

$ nslookup -port=25054 -type=aaaa mail.rjc-demo.test 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#25054

Non-authoritative answer:
*** Can't find mail.rjc-demo.test: No answer

-type=any を付けると、サーバーが返すレコードがまとめて出ます。ただし ANY への答え方はサーバーによって違い、すべてが返るとは限りません。確実に見るときは種類を1つずつ指定します。

nslookupの結果の見方(Non-authoritative answer など)

出力は、上から順に4つの部分でできています。

1Server・Address:問い合わせたDNSサーバー

Address: 127.0.0.1#25054 の # の後ろはポート番号です。ふだんは #53 と出ます。どのサーバーが答えたかを最初に確かめます。

2Non-authoritative answer:キャッシュ経由の答え

ゾーンを持つ権威DNSサーバーではなく、キャッシュDNSサーバーが答えた、という意味です。エラーではありません。権威DNSサーバーに直接聞くと、この行は出ません。

3Name・Address などの答え

聞いた名前と、その値です。CNAME があれば canonical name の行が先に出ます。

4Authoritative answers can be found from:参考情報

答えに付いてきた「権威DNSサーバー」や「関係するアドレス」です。付いてこなければ見出しだけで、中身は空です。

Non-authoritative answer の正体は、DNS の応答に付く aa(Authoritative Answer)フラグです。dig で同じ問い合わせを見ると、権威DNSサーバーの答えには aa があり、キャッシュDNSの答えにはありません。

$ dig @127.0.0.1 -p 25053 rjc-demo.test A | grep flags   # 権威DNSサーバー
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
$ dig @127.0.0.1 -p 25054 rjc-demo.test A | grep flags   # キャッシュDNSサーバー
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

-debug で TTL まで見る

-debug を付けると、応答の中身(質問・答え・権威・追加の各部分)と TTL(キャッシュしてよい残り秒数) が出ます。

$ nslookup -port=25054 -debug -type=mx rjc-demo.test 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#25054

------------
    QUESTIONS:
    rjc-demo.test, type = MX, class = IN
    ANSWERS:
    ->  rjc-demo.test
    mail exchanger = 10 mail.rjc-demo.test.
    ttl = 3568
    ->  rjc-demo.test
    mail exchanger = 20 mail2.rjc-demo.test.
    ttl = 3568
    AUTHORITY RECORDS:
    ADDITIONAL RECORDS:
    ->  mail.rjc-demo.test
    internet address = 192.0.2.25
    ttl = 3568
    ->  mail2.rjc-demo.test
    internet address = 192.0.2.26
    ttl = 3568
------------
Non-authoritative answer:
rjc-demo.test   mail exchanger = 10 mail.rjc-demo.test.
rjc-demo.test   mail exchanger = 20 mail2.rjc-demo.test.

Authoritative answers can be found from:
mail.rjc-demo.test  internet address = 192.0.2.25
mail2.rjc-demo.test internet address = 192.0.2.26

ゾーンの TTL は 3600 秒で、ttl = 3568 はキャッシュに入ってから32秒たったことを示します。キャッシュDNSの答えでは、TTL は時間とともに減っていきます。

nslookupの対話モードの使い方(set・server・exit)

引数なしで nslookup と打つと > のプロンプトが出て、続けて問い合わせができます。set で設定を変えると、以降の問い合わせすべてに効きます。

$ nslookup
> server 127.0.0.1
Default server: 127.0.0.1
Address: 127.0.0.1#53
> set port=25054
> rjc-demo.test
Server:     127.0.0.1
Address:    127.0.0.1#25054

Non-authoritative answer:
Name:   rjc-demo.test
Address: 192.0.2.10
Name:   rjc-demo.test
Address: 2001:db8::10
> set type=mx
> rjc-demo.test
Server:     127.0.0.1
Address:    127.0.0.1#25054

Non-authoritative answer:
rjc-demo.test   mail exchanger = 20 mail2.rjc-demo.test.
rjc-demo.test   mail exchanger = 10 mail.rjc-demo.test.

Authoritative answers can be found from:
mail.rjc-demo.test  internet address = 192.0.2.25
mail2.rjc-demo.test internet address = 192.0.2.26
> set type=ptr
> 192.0.2.25
Server:     127.0.0.1
Address:    127.0.0.1#25054

Non-authoritative answer:
25.2.0.192.in-addr.arpa name = mail.rjc-demo.test.

Authoritative answers can be found from:
> set type=a
> nothere.rjc-demo.test
Server:     127.0.0.1
Address:    127.0.0.1#25054

** server can't find nothere.rjc-demo.test: NXDOMAIN
> exit

set all で、いまの設定がまとめて見られます。DNSサーバーは /etc/resolv.conf の nameserver の2台が出ています。

> set all
Default server: 8.8.8.8
Address: 8.8.8.8#53
Default server: 8.8.4.4
Address: 8.8.4.4#53

Set options:
  novc          nodebug     nod2
  search        recurse
  timeout = 2       retry = 3   port = 53   ndots = 1
  querytype = A         class = IN
  srchlist = 
> exit

timeout = 2・retry = 3 は、/etc/resolv.conf の options timeout:2 attempts:3 を読んだ値です。

よく使う対話コマンドと set の項目です(BIND 9 のマニュアルより)。コマンドラインでは、同じ項目を - を付けて書けます(例:-type=mx・-timeout=1)。

コマンド 意味
名前 または IPアドレス 問い合わせる(IPアドレスなら逆引き)
server サーバー 問い合わせ先を変える(いまのサーバーで名前を引く)
lserver サーバー 問い合わせ先を変える(最初のサーバーで名前を引く)
set type=種類 レコードの種類(querytype・q・ty も同じ)
set port=番号 ポート番号(既定 53)
set timeout=秒 最初の待ち時間(秒)
set retry=回数 問い合わせる回数
set debug / set nodebug 応答の中身を出す・出さない
set vc UDP ではなく TCP を使う
set norecurse 再帰(キャッシュDNSにたどらせる)を頼まない
set all いまの設定を表示する
exit 終わる

server と lserver の違いは、サーバーをホスト名で指定するときに出ます。いまのサーバーが壊れていてホスト名が引けないとき、lserver なら最初のサーバーで引けます。

Linux・Mac の nslookup(BIND 版)では、ls・root・finger・view・help・? は「実装されていない」とマニュアルに書かれています。Windows 版では ls(ゾーンの一覧)などが使えます。

nslookupのエラー一覧(NXDOMAIN・SERVFAIL・REFUSED・timed out)

エラーは、DNSサーバーから「答えられない」と返ってきたもの(NXDOMAIN・SERVFAIL・REFUSED)と、サーバーに届かなかったもの(timed out・connection refused)の2つに分かれます。どれも実際に起こした出力です。

出力の原文(BIND版) 意味 まず見るところ
server can't find 名前: NXDOMAIN その名前は存在しない つづり・登録・ゾーンの記述
Can't find 名前: No answer 名前はあるが、その種類が無い -type の指定・レコードの追加
server can't find 名前: SERVFAIL サーバーが答えを作れなかった 権威DNS・委任・DNSSEC
server can't find 名前: REFUSED サーバーが答えるのを断った 問い合わせ先・許可の設定
communications error to …: timed out 待っても応答が無い 経路・ファイアウォール・アドレス
communications error to …: connection refused そのアドレスでDNSが動いていない サーバーのアドレスとポート

NXDOMAIN:名前が無い

$ nslookup -port=25054 nothere.rjc-demo.test 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#25054

** server can't find nothere.rjc-demo.test: NXDOMAIN

原因は、つづりの間違い、レコードの登録漏れ、ドメインの期限切れ、ゾーンの記述ミス(名前の末尾の . 忘れで別の名前になっている等)です。権威DNSサーバーに直接聞いても NXDOMAIN なら、ゾーンにその名前がありません。権威では引けるのにキャッシュDNSで NXDOMAIN なら、「無い」という答えがキャッシュに残っています(SOA の minimum の秒数だけ残ります)。

ドメインの一部だけ(ドットを含まない名前)を書いたときも、検索ドメインが設定されていなければ NXDOMAIN になります。

$ nslookup -port=25054 rjc-demo 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#25054

** server can't find rjc-demo: NXDOMAIN

SERVFAIL:サーバーが答えを作れない

$ nslookup -port=25054 broken.test 127.0.0.1
;; Got SERVFAIL reply from 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#25054

** server can't find broken.test: SERVFAIL

この例は、キャッシュDNSサーバーが broken.test の問い合わせを、動いていないサーバーへ転送する設定で起こしました。実際には、キャッシュDNSが権威DNSサーバーにたどり着けない(NS の指す先が止まっている・委任の設定ミス)、DNSSEC の検証に失敗した、のどちらかが多い原因です。権威DNSサーバーへ直接聞いて答えが返るかで切り分けます。

REFUSED:サーバーが断った

$ nslookup -port=25053 example.org 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#25053

** server can't find example.org: REFUSED

権威DNSサーバー(再帰をしない設定)に、そのサーバーが持っていないドメインを聞いたときの出力です。問い合わせを許可していないゾーン(BIND の allow-query { none; };)に聞いたときも、同じ REFUSED になりました。問い合わせ先が違う(ゾーンを持たないサーバー・社外から社内専用のDNS)か、サーバー側で問い合わせ元が許可されていないのが原因です。

timed out:応答が来ない

受け取るだけで返事をしないサーバーに聞いた出力です。

$ nslookup -port=25058 rjc-demo.test 127.0.0.1
;; communications error to 127.0.0.1#25058: timed out
;; communications error to 127.0.0.1#25058: timed out
;; communications error to 127.0.0.1#25058: timed out
;; no servers could be reached

待つ時間と回数は、/etc/resolv.conf の options と -timeout・-retry で変わりました。

15.0秒resolv.conf に options なし5秒×3回で no servers could be reached
6.0秒options timeout:2 attempts:32秒×3回。set all でも timeout = 2・retry = 3
1.0秒-timeout=1 -retry=11回だけ問い合わせて終わる

原因は、DNSサーバーのアドレスの間違い、途中のファイアウォールが UDP・TCP の 53 番を止めている、サーバーが重くて返せない、のいずれかです。指定したサーバーのアドレスに ping が通るか、別のDNSサーバー(8.8.8.8 など)なら答えが返るかで切り分けます。

connection refused:そこでDNSが動いていない

$ nslookup -port=25059 rjc-demo.test 127.0.0.1
;; communications error to 127.0.0.1#25059: connection refused
;; communications error to 127.0.0.1#25059: connection refused
;; communications error to 127.0.0.1#25059: connection refused
;; no servers could be reached

そのアドレス・ポートで DNS サーバーが待ち受けていないとき、すぐにこの出力になりました(0.1秒以内)。DNSサーバーのアドレスの書き間違いや、サービスの停止が原因です。Linux で待ち受けを確かめる方法は、関連記事「Linuxネットワークコマンド一覧|ip/ss/ncで障害切り分け」で扱っています。

終了コード

BIND の nslookup は、問い合わせが1つでも失敗すると終了コード 1、それ以外は 0 を返します(マニュアルの Return Values)。実際に、NXDOMAIN・SERVFAIL・REFUSED・timed out はすべて 1 でした。No answer は 0 でした。スクリプトで「名前が引けるか」を判定するときに使えます。

if nslookup example.com > /dev/null; then echo "引ける"; else echo "引けない"; fi

Windows で出るエラーの表示

Windows の nslookup は表示の言葉が違います。Microsoft Learn のエラー一覧にある言葉と、BIND 版との対応は次のとおりです。

Windows(Microsoft Learn) 意味 BIND版で近いもの
Non-existent domain 名前が無い NXDOMAIN
No records その種類のレコードが無い No answer
Server failure サーバー内部の不整合 SERVFAIL
Refused サーバーが断った REFUSED
timed out 応答が無い timed out
No response from server DNSサーバーが動いていない connection refused

日本語版の Windows では、たとえば *** UnKnown への要求がタイムアウトしました や *** server1.example.jp が pc99 を見つけられません: Non-existent domain の形で出ます(@IT の記事の表示例)。最初の UnKnown は、問い合わせたDNSサーバー自身のIPアドレスを逆引きできなかったときの表示で、問い合わせの成否とは関係ありません。

変更したDNSが反映されないとき(キャッシュとTTL)

権威DNSサーバーのゾーンで、mail.rjc-demo.test のアドレスを 192.0.2.25 から 192.0.2.27 に変え、シリアル番号を上げて読み込み直しました。その直後に、権威DNSとキャッシュDNSの両方へ聞いた結果です。

$ nslookup -port=25053 mail.rjc-demo.test 127.0.0.1    # 権威DNSサーバー
Server:     127.0.0.1
Address:    127.0.0.1#25053

Name:   mail.rjc-demo.test
Address: 192.0.2.27

$ nslookup -port=25054 mail.rjc-demo.test 127.0.0.1    # キャッシュDNSサーバー
Server:     127.0.0.1
Address:    127.0.0.1#25054

Non-authoritative answer:
Name:   mail.rjc-demo.test
Address: 192.0.2.25
$ nslookup -port=25054 -debug -type=a mail.rjc-demo.test 127.0.0.1 | grep -E 'internet|ttl'
    internet address = 192.0.2.25
    ttl = 3599

権威DNSは新しい値、キャッシュDNSは変更前の値を返しています。 キャッシュの残り時間は 3599 秒で、この時間が過ぎるまでキャッシュDNSは変更前の値を返し続けます。

  • 権威DNSに直接聞いて新しい値なら、設定は正しく入っています。あとは TTL が切れるのを待ちます。
  • 切り替えの予定がある場合は、前もって TTL を短く(例:300 秒)しておくと、反映までの時間が短くなります。
  • 権威DNSに直接聞いても変更前の値なら、ゾーンの読み込み直し・シリアル番号・別の権威DNSサーバー(NS が複数あるとき)を確かめます。

AWS の Route 53 でレコードを作る・変える手順は、関連記事「Route 53レコードをAWS CLIで作成|A・CNAME・エイリアス例」で扱っています。

nslookupとブラウザ・アプリの結果が違うとき(hostsファイル)

nslookup は DNS サーバーにだけ問い合わせ、OS の hosts ファイル(/etc/hosts、Windows は C:\Windows\System32\drivers\etc\hosts)を見ません。 ブラウザやアプリは OS の名前解決を通るので、hosts に書いた値が使われます。

/etc/hosts に 192.0.2.200 hostsonly.rjc-demo.test と書いたときの結果です。

$ getent hosts hostsonly.rjc-demo.test
192.0.2.200     hostsonly.rjc-demo.test
$ nslookup -port=25054 hostsonly.rjc-demo.test 127.0.0.1
Server:     127.0.0.1
Address:    127.0.0.1#25054

** server can't find hostsonly.rjc-demo.test: NXDOMAIN

getent hosts(OS と同じ経路で引く Linux のコマンド)は hosts の値を返し、nslookup は NXDOMAIN でした。「nslookup では引けるのにブラウザでは違うサイトが出る」「その逆」のときは、hosts・OS のキャッシュ・ブラウザの DNS 設定(DNS over HTTPS)を疑います。

OS と同じ経路で確かめるコマンドは次のとおりです。

OS コマンド
Linux getent hosts 名前
Windows(PowerShell) Resolve-DnsName 名前

Windows の Resolve-DnsName は、-Type MX・-Server 8.8.8.8 で種類とサーバーを指定でき、-NoHostsFile で hosts を飛ばし、-DnsOnly で DNS だけを使います(Microsoft Learn)。

Windows・Mac・Linuxでのnslookupの入れ方と違い

OS 入っているか 入れ方・補足
Windows 標準で入っている コマンドプロンプト・PowerShell で使う。対話モードは Ctrl+B で中断
Mac 標準で入っている ターミナルで使う(BIND 由来)
Ubuntu・Debian 最小構成には無いことがある sudo apt install bind9-dnsutils
RHEL・Fedora 系 最小構成には無いことがある sudo dnf install bind-utils

Linux で nslookup: command not found と出たら、上のパッケージを入れます。Ubuntu 24.04 では、/usr/bin/nslookup と /usr/bin/dig は bind9-dnsutils、/usr/bin/host は bind9-host のパッケージに入っていました(dpkg -S で確認)。Fedora の bind-utils にも dig・host・nslookup が入っています。

Windows 版と BIND 版(Linux・Mac)の主な違いです。

項目 Windows Linux・Mac(BIND版)
set timeout の既定 2 秒 resolv.conf の options、無ければ 5 秒
ls(ゾーン一覧) 使える 実装されていない
最初に表示するサーバー名 逆引きの結果(無ければ UnKnown) IPアドレス

Linux のほかのネットワークコマンドは、関連記事「Linuxコマンド一覧|100個をカテゴリ別に実行結果つきで解説」で扱っています。

nslookupとdigの違い・対応表

dig も DNS に問い合わせるコマンドで、応答の中身(フラグ・TTL・各セクション)を省略せずに出すのが違いです。nslookup は答えを読みやすく整えて出します。同じ問い合わせの対応は次のとおりです。

やりたいこと nslookup dig
正引き nslookup example.com dig example.com(A のみ)
サーバー指定 nslookup example.com 8.8.8.8 dig @8.8.8.8 example.com
種類の指定 nslookup -type=mx example.com dig example.com MX
逆引き nslookup 192.0.2.10 dig -x 192.0.2.10
ポート指定 -port=5353 -p 5353
待ち時間・回数 -timeout=1 -retry=1 +timeout=1 +tries=1
TCP を使う -vc +tcp
再帰を頼まない -norecurse +norecurse
答えだけ出す (無し) +short
中身・TTL を見る -debug 既定で出る
権威の答えか Non-authoritative answer の有無 flags の aa の有無
名前が無い ** server can't find …: NXDOMAIN status: NXDOMAIN

dig の同じ MX の問い合わせです。nslookup の Authoritative answers can be found from: に出ていたものは、dig では ADDITIONAL SECTION にあります。

$ dig @127.0.0.1 -p 25054 rjc-demo.test MX

; <<>> DiG 9.18.39-0ubuntu0.24.04.7-Ubuntu <<>> @127.0.0.1 -p 25054 rjc-demo.test MX
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 47976
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 3

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; COOKIE: ab8d2bbe63fdc20e010000006ad259f3f9b5d95fef33b0e5 (good)
;; QUESTION SECTION:
;rjc-demo.test.         IN  MX

;; ANSWER SECTION:
rjc-demo.test.      3525    IN  MX  20 mail2.rjc-demo.test.
rjc-demo.test.      3525    IN  MX  10 mail.rjc-demo.test.

;; ADDITIONAL SECTION:
mail.rjc-demo.test. 3525    IN  A   192.0.2.25
mail2.rjc-demo.test.    3525    IN  A   192.0.2.26

;; Query time: 0 msec
;; SERVER: 127.0.0.1#25054(127.0.0.1) (UDP)
;; WHEN: Sat Oct 17 02:08:03 JST 2026
;; MSG SIZE  rcvd: 145
$ dig @127.0.0.1 -p 25054 +short rjc-demo.test MX
20 mail2.rjc-demo.test.
10 mail.rjc-demo.test.
$ dig @127.0.0.1 -p 25054 +short -x 192.0.2.10
rjc-demo.test.

使い分けの目安です。

場面 向いているもの 理由
Windows で手早く調べる nslookup 標準で入っている
答えだけをスクリプトで使う dig +short 値だけが1行ずつ出る
TTL・フラグ・権威かを見る dig 既定で全部出る
NXDOMAIN を終了コードで判定 nslookup 失敗で 1 を返す(dig は応答があれば 0)

終了コードは、NXDOMAIN のとき nslookup が 1、dig が 0 でした。dig は応答が無い(timed out)ときに 9 を返しました。

名前解決できないときの切り分け手順

「サイトにつながらない」「名前が引けない」ときに、nslookup で原因を絞る順番です。

1

ふだんのDNSで引く

nslookup 名前。答えが返れば DNS は動いています。原因は DNS 以外(接続先のサーバー・ポート・証明書)か hosts です。

返らない → 2へ

2

エラーの種類を見る

timed out・connection refused はサーバーに届いていません。NXDOMAIN・SERVFAIL・REFUSED はサーバーが答えています。

届いていない → 3へ/答えている → 4へ

3

別のDNSサーバーで引く

nslookup 名前 8.8.8.8。答えが返れば、ふだんのDNSサーバー(社内DNS・ルーター)への経路か、そのサーバーの問題です。

どれも届かない → ネットワーク自体を確かめる

4

権威DNSサーバーに直接聞く

nslookup -type=ns ドメイン で担当サーバーを調べ、nslookup 名前 ns1.… で聞きます。権威でも NXDOMAIN ならゾーンにありません。

権威では引ける → 5へ

5

キャッシュと TTL を見る

-debug で ttl を確かめます。権威とキャッシュで値が違えば、TTL が切れるまで変更前の値が残ります。

SERVFAIL なら委任・DNSSEC を確かめる

DNS は引けるのに HTTP でエラーになるときは、ステータスコードで原因が分かれます。関連記事「HTTPステータスコード 一覧|全コードの原因と対処・curl実例つき」で扱っています。

よくある質問

Q. nslookup とは何ですか。 A. DNS サーバーに問い合わせて、ドメイン名に対応するIPアドレスやメールサーバーなどを表示するコマンドです。Windows・Mac には標準で入っています。

Q. nslookup で逆引きするには? A. nslookup 192.0.2.10 のように IP アドレスを渡すだけで、PTR レコードを引きます。PTR が無いアドレスは NXDOMAIN になります。詳しくは「nslookupの逆引き」の節にあります。

Q. nslookup で DNS サーバーを指定するには? A. 2つ目の引数にサーバーを書きます(nslookup example.com 8.8.8.8)。対話モードでは server 8.8.8.8、ポートを変えるときは -port=番号 です。

Q. Linux で nslookup が使えません。 A. Ubuntu・Debian は bind9-dnsutils、RHEL・Fedora 系は bind-utils のパッケージに入っています。入れると dig と一緒に使えるようになります。

Q. nslookup で MX レコードを調べるには? A. nslookup -type=mx example.com です。mail exchanger = 10 mail.example.com. の数字は優先度で、小さいほうが先に使われます。

Q. Non-authoritative answer はエラーですか。 A. エラーではありません。キャッシュDNSサーバーが答えた、という意味です。権威DNSサーバーを2つ目の引数で指定すると、この行は出ません。

Q. nslookup と dig はどちらを使えばよいですか。 A. 答えを見るだけなら nslookup、TTL やフラグまで見たいとき・スクリプトで値だけ使うときは dig が向いています。対応表は「nslookupとdigの違い・対応表」の節にあります。

まとめ

  • nslookup 名前 [DNSサーバー]。種類を指定しないと A と AAAA の両方を引く
  • IPアドレスを渡すと逆引き。PTR が無ければ NXDOMAIN
  • -type=mx・txt・ns・cname・soa で種類を選ぶ。DMARC は _dmarc.ドメイン の TXT
  • Non-authoritative answer はキャッシュ経由の答え。権威DNSサーバーを直接指定すると、いまの設定値が見られる
  • エラーは、答えが返ったもの(NXDOMAIN・SERVFAIL・REFUSED)と、届かなかったもの(timed out・connection refused)に分けて切り分ける
  • nslookup は hosts ファイルを見ない。ブラウザと結果が違うときは OS 側のコマンドで確かめる

参考・出典

確認日はいずれも 2026年10月17日です。

  • BIND 9.18.39 マニュアル(nslookup・dig):https://bind9.readthedocs.io/en/v9.18.39/manpages.html
  • BIND 9 ソース(bin/dig/nslookup.rst、v9.18.39):https://github.com/isc-projects/bind9/blob/v9.18.39/bin/dig/nslookup.rst
  • Microsoft Learn「nslookup」:https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/nslookup
  • Microsoft Learn「nslookup set timeout」:https://learn.microsoft.com/en-us/windows-server/administration/windows-commands/nslookup-set-timeout
  • Microsoft Learn「Resolve-DnsName」:https://learn.microsoft.com/en-us/powershell/module/dnsclient/resolve-dnsname
  • Fedora Packages「bind-utils」:https://packages.fedoraproject.org/pkgs/bind/bind-utils/
  • @IT「DNSトラブル解決の定番、nslookupの基本的な使い方(社内ネットワーク編)」:https://atmarkit.itmedia.co.jp/ait/articles/0307/19/news003.html
  • Apple Open Source「bind9:nslookup(1)」:https://opensource.apple.com/source/bind9/bind9-31/bind9/bin/dig/nslookup.1.auto.html
  • O'Reilly「DNS on Windows Server 2003」No PTR Data for Name Server's Address:https://www.oreilly.com/library/view/dns-on-windows/0596005628/ch12s07s02.html

本記事の内容は、ご自由にお使いください。
ご利用の際は、出典として本ページへのリンクを記載いただけますようお願いします。

(記載例)出典:株式会社RJC「nslookupの使い方|逆引き・DNS指定・MX・エラーの意味を実例で」

株式会社RJC ― SI事業・SES事業・AI駆動開発。RJCは一緒に成長を楽しめる会社です。

WE ARE HIRING

RJCで一緒に開発しながら、
成長を楽しみませんか?

RJCは、Web・モバイル・AIを活用した開発プロジェクトで、テックリードやPM・PMOも活躍するシステム開発会社です。会社を知る、待遇を確かめる、話を聞いてみる。気になるところ見てみてください!

  • 127日年間休日
  • 12時間平均残業時間
  • 毎日ガチャ遊びココロも大切にする福利厚生。アマギフなどの賞品ラインナップ!

ほかにも、チケットレストラン、書籍読み放題、2年ごとの慰労報奨(休暇 or 金一封)、11期連続の黒字決算。

ABOUT RJC RJCがどんな会社か知る 考え方、研修、働き方、福利厚生、社員の前職まで。RJCのことが丸わかり! RJC丸わかりページへ JOB DESCRIPTION 仕事内容・待遇を見てみる 仕事内容、給与・待遇、選考の流れ。経験者も未経験も!応募前に知りたいこと、まとめました! 募集要項を見る ENTRY エントリーする エントリーは1〜2分・履歴書不要です。まずは話を聞いてみたい、という方でも歓迎です! エントリーフォームへ

RJCで一緒に開発しながら、 成長を楽しみませんか?