- ネットワーク
nslookupの使い方|逆引き・DNS指定・MX・エラーの意味を実例で
結論
nslookup は、ドメイン名とIPアドレスなどの対応をDNSサーバーに問い合わせて表示するコマンドです。書き方は nslookup 名前 [DNSサーバー] です。
この記事でわかること
- 正引き・逆引き・-type 7種の実出力と早見表
- エラー6種の原文と、原因・直し方の表
- nslookup と dig の対応表12項目
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 で変わりました。
原因は、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 で原因を絞る順番です。
ふだんのDNSで引く
nslookup 名前。答えが返れば DNS は動いています。原因は DNS 以外(接続先のサーバー・ポート・証明書)か hosts です。
エラーの種類を見る
timed out・connection refused はサーバーに届いていません。NXDOMAIN・SERVFAIL・REFUSED はサーバーが答えています。
別のDNSサーバーで引く
nslookup 名前 8.8.8.8。答えが返れば、ふだんのDNSサーバー(社内DNS・ルーター)への経路か、そのサーバーの問題です。
権威DNSサーバーに直接聞く
nslookup -type=ns ドメイン で担当サーバーを調べ、nslookup 名前 ns1.… で聞きます。権威でも NXDOMAIN ならゾーンにありません。
キャッシュと TTL を見る
-debug で ttl を確かめます。権威とキャッシュで値が違えば、TTL が切れるまで変更前の値が残ります。
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期連続の黒字決算。