nslookup コマンド:使い方とオプション、レコードの照会と DNS サーバーの指定
nslookupコマンドは、ドメイン名をDNSサーバーに問い合わせて、IPアドレスやMX、NS、TXTなどのDNSレコードを受け取る照会コマンドです。AlmaLinux 9サーバーでexample.comのレコードを種類別に照会し、問い合わせるDNSサーバーを変えてみたところ、同じドメインでもどのサーバーに聞くかによって、応答冒頭のNon-authoritative answer行が消えたり、ANY照会の結果が変わったりしました。
以下の出力は、AlmaLinux 9.8サーバーのrootアカウントで実行した結果です。サーバーに設定されたDNSサーバーのアドレスは例の値192.0.2.53に、パッケージのバージョン番号も例の値に置き換えています。
1️⃣ nslookupコマンドの使い方
基本の形は[nslookup -オプション 名前 DNSサーバー]の順で、オプションとDNSサーバーは省略できます。名前だけを書くと、サーバーに設定されたDNSサーバーにその名前のアドレスを問い合わせます。
nslookup example.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
Name: example.com
Address: 172.66.147.243
Name: example.com
Address: 104.20.23.154
Name: example.com
Address: 2606:4700:10::6814:179a
Name: example.com
Address: 2606:4700:10::ac42:93f3一番上のServerとAddressの2行は問い合わせを受けたDNSサーバーで、末尾の#53はDNSのポート番号です。レコードの種類を指定しないとAレコード(IPv4)とAAAAレコード(IPv6)を順に照会するため、IPv4アドレス2つの後にIPv6アドレス2つが続きました。
Non-authoritative answerは、example.comのレコードを直接管理するサーバーではなく、その値をキャッシュに持っているDNSサーバーが応答したという意味です。そのため、レコードを変更した直後は実際の値と異なることがあります。
2️⃣ nslookupのオプション
オプションは名前の前にハイフンを付けて書きます。
-typeは-queryや-qと短く書いても同じオプションです。-q=mxで8.8.8.8に問い合わせると、-type=mxと同じメールサーバーの1行が出ました。
nslookup -q=mx google.com 8.8.8.8Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
google.com mail exchanger = 10 smtp.google.com.
Authoritative answers can be found from:-timeoutと-retryは、応答しないDNSサーバーをどれだけ待つかを決めます。192.0.2.1は文書の例示用アドレスなので、応答するサーバーがありません。
nslookup -timeout=2 -retry=1 example.com 192.0.2.1;; connection timed out; no servers could be reached-timeout=2 -retry=1で実行すると、2秒後に[connection timed out]の行を出力して終わりました。-retry=2にすると4秒、オプションを付けないときは15秒かかりました。スクリプトが応答しないサーバーのために長く止まらないようにするには、2つの値を小さくしておきます。
-debugを付けると、応答パケットの質問と回答のセクションをそのまま出力します。
nslookup -debug example.com 8.8.8.8Server: 8.8.8.8
Address: 8.8.8.8#53
------------
QUESTIONS:
example.com, type = A, class = IN
ANSWERS:
-> example.com
internet address = 104.20.23.154
ttl = 300
-> example.com
internet address = 172.66.147.243
ttl = 300
AUTHORITY RECORDS:
ADDITIONAL RECORDS:
------------
Non-authoritative answer:
Name: example.com
Address: 104.20.23.154
Name: example.com
Address: 172.66.147.243
------------
QUESTIONS:
example.com, type = AAAA, class = IN
ANSWERS:
-> example.com
has AAAA address 2606:4700:10::6814:179a
ttl = 300
-> example.com
has AAAA address 2606:4700:10::ac42:93f3
ttl = 300
AUTHORITY RECORDS:
ADDITIONAL RECORDS:
------------
Name: example.com
Address: 2606:4700:10::6814:179a
Name: example.com
Address: 2606:4700:10::ac42:93f3基本の出力にはないttl = 300がレコードごとに付きました。この応答を受けたDNSサーバーが、そのレコードを最大300秒までキャッシュに置けるという値です。
-norecurseは、DNSサーバーに他のサーバーを経由して探さず、持っている値だけを返すよう求めます。同じ8.8.8.8にオプションなしで問い合わせたときはアドレスが4つ出ましたが、-norecurseを付けると[SERVFAIL]で終わりました。
nslookup -norecurse example.com 8.8.8.8Server: 8.8.8.8
Address: 8.8.8.8#53
** server can't find example.com: SERVFAIL| オプション | コピー | 説明 |
|---|---|---|
| -type= | 照会するレコードの種類を指定、省略するとAの次にAAAA | |
| -q= | -typeと同じオプション、照会するレコードの種類を指定 | |
| -timeout= | 最初の問い合わせの応答待ち時間(秒) | |
| -retry= | 応答がないときに問い合わせを送る回数 | |
| -debug | 応答パケットの質問と回答、TTLまで出力 | |
| -norecurse | 他のサーバーを経由せず、そのサーバーが持つ値だけを要求 |
| オプション | コピー | 説明 |
|---|---|---|
| -query= | -typeと同じオプション、照会するレコードの種類を指定 | |
| -port= | 問い合わせるポートを指定、既定は53 | |
| -version | バージョンを出力して終了 |
3️⃣ nslookupでのレコード照会(MX、NS、TXT、SOA)
-type=の後にレコードの種類を書くと、そのレコードだけを照会します。値は大文字でも小文字でも構いません。
| -type=の値 | 含まれる情報 |
|---|---|
| A · AAAA | IPv4アドレス・IPv6アドレス |
| MX | メールを受け取るサーバーと優先度 |
| NS | ドメインのレコードを管理するネームサーバー |
| TXT | SPFなどの文字の値 |
| SOA | ゾーンのプライマリネームサーバー・管理者メール・シリアル番号・更新間隔 |
| CNAME | 別の名前につなぐエイリアス |
| PTR | IPアドレスに結び付いたホスト名(逆引き) |
| ANY | その名前のレコードをまとめて要求 |
メールサーバーはMXレコードで確認します。
nslookup -type=mx google.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
google.com mail exchanger = 10 smtp.google.com.
Authoritative answers can be found from:mail exchangerの後の10は優先度です。メールサーバーが複数あると、送る側は数字の小さいサーバーから配送を試みます。example.comに同じ照会をすると[mail exchanger = 0 .]が出ました。ドット1つだけのMXは、このドメインがメールを受け取らないという意味です。
MX照会の最後に付いた[Authoritative answers can be found from:]は、応答に一緒に含まれてきた権威ネームサーバーの情報をその下に続けて表示する見出し行です。この記事のMX、NS、TXTの照会では応答にその情報がなく、見出し行の下は空でした。
NSレコードには、ドメインのレコードを直接管理するネームサーバーが入っています。
nslookup -type=ns example.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
example.com nameserver = hera.ns.cloudflare.com.
example.com nameserver = elliott.ns.cloudflare.com.
Authoritative answers can be found from:example.comのネームサーバーは2つでした。この2つのサーバーがexample.comの権威ネームサーバーです。
TXTレコードには、決まった形式なしに文字の値を入れられます。
nslookup -type=txt example.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
example.com text = "_k2n1y4vw3qtb4skdx9e7dxt97qrmmq9"
example.com text = "v=spf1 -all"
Authoritative answers can be found from:v=spf1 -allは、このドメイン名でメールを送れるサーバーはないというSPFの値です。1つのドメインにTXTレコードが複数あると、このように1行に1つずつ出ます。
SOAレコードには、そのゾーンの基本情報が入っています。
nslookup -type=soa example.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
example.com
origin = elliott.ns.cloudflare.com
mail addr = dns.cloudflare.com
serial = 2418004112
refresh = 10000
retry = 2400
expire = 604800
minimum = 1800
Authoritative answers can be found from:originはプライマリネームサーバーで、mail addrは管理者のメールアドレスの@をドットに置き換えて書いた値です。serialはレコードを変更するたびに上がるシリアル番号で、refresh、retry、expireはセカンダリネームサーバーがプライマリサーバーとレコードを合わせるときに使う時間の値(秒)です。minimumは、存在しないレコードへの応答をキャッシュに置く時間です。
エイリアスはCNAMEレコードで確認します。www.github.comを照会すると、github.comのエイリアスだという1行が出ました。
nslookup -type=cname www.github.comServer: 192.0.2.53
Address: 192.0.2.53#53
www.github.com canonical name = github.com.-type=anyは、その名前のレコードをまとめて要求します。サーバーに設定されたDNSサーバーに問い合わせると、A、AAAA、MX、NSレコードが一度に出ました。
nslookup -type=any example.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
Name: example.com
Address: 172.66.147.243
Name: example.com
Address: 104.20.23.154
Name: example.com
Address: 2606:4700:10::6814:179a
Name: example.com
Address: 2606:4700:10::ac42:93f3
example.com mail exchanger = 0 .
example.com nameserver = hera.ns.cloudflare.com.
example.com nameserver = elliott.ns.cloudflare.com.
Authoritative answers can be found from:同じ照会を8.8.8.8に送ると、[hinfo = “RFC8482”]の1行と署名の行だけが返ってきました。
nslookup -type=any example.com 8.8.8.8Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
example.com hinfo = "RFC8482" ""
example.com rdata_46 = HINFO 13 2 3600 20261029212708 20261027192708 34505 example.com. 2YBHcD7GmqHiW6E7e8Lx3z/gPoCsLbYw/Uegjy801hQ+4fYp5U7wKqc2 NXOONd8WS0xjgzfW5Dn0akDqdjltOw==
Authoritative answers can be found from:RFC 8482は、ANY問い合わせにすべてのレコードの代わりに短い応答を返せるように定めた文書です。そのため、必要なレコードは種類を1つずつ指定して照会します。
4️⃣ nslookupでのDNSサーバー指定
名前の後にDNSサーバーを書くと、サーバーに設定されたDNSサーバーの代わりにそのサーバーに問い合わせます。
nslookup example.com 8.8.8.8Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: example.com
Address: 104.20.23.154
Name: example.com
Address: 172.66.147.243
Name: example.com
Address: 2606:4700:10::6814:179a
Name: example.com
Address: 2606:4700:10::ac42:93f3Server行が8.8.8.8に変わり、4つのアドレスはサーバーに設定されたDNSサーバーの応答と同じでした。ネームサーバーを変更した後、公開DNSサーバーごとに新しい値が広まったかを確かめるときにこの形を使います。
NS照会で出たネームサーバーをDNSサーバーに指定すると、権威サーバーに直接問い合わせることになります。
nslookup example.com elliott.ns.cloudflare.comServer: elliott.ns.cloudflare.com
Address: 2606:4700:58::a29f:2ce4#53
Name: example.com
Address: 104.20.23.154
Name: example.com
Address: 172.66.147.243
Name: example.com
Address: 2606:4700:10::6814:179a
Name: example.com
Address: 2606:4700:10::ac42:93f3今回はNon-authoritative answer行が消えました。レコードを管理するサーバーが直接答えた値なので、キャッシュを通っていない今の値です。Server行のすぐ下のAddressには、このネームサーバーのIPv6アドレスが出ました。
存在しない名前を照会すると[NXDOMAIN]が出ます。.invalidは実際には使わないよう予約されたトップレベルドメインなので、名前がないという応答が返ってきました。
nslookup example.invalidServer: 192.0.2.53
Address: 192.0.2.53#53
** server can't find example.invalid: NXDOMAIN一方、no-such-host.example.comはNXDOMAINではなく[No answer]で終わりました。問い合わせたレコードが応答になかったという意味で、名前そのものがないNXDOMAINとは別の結果です。
nslookup no-such-host.example.comServer: 192.0.2.53
Address: 192.0.2.53#53
Non-authoritative answer:
*** Can't find no-such-host.example.com: No answer5️⃣ nslookupの逆引き
名前の代わりにIPアドレスを書くと、PTRレコードを照会してそのアドレスに結び付いたホスト名を探します。
nslookup 8.8.8.88.8.8.8.in-addr.arpa name = dns.google.
Authoritative answers can be found from:8.8.8.8.in-addr.arpaは、IPv4アドレスを逆順に書いてin-addr.arpaを付けた名前です。この名前のPTRレコードの値dns.google.が8.8.8.8のホスト名です。
逆引きでは一番上のServerの2行が出ませんでした。Debian 12サーバーのnslookup 9.18で同じアドレスを照会したときも同じ形でした。
6️⃣ nslookupの対話モード
nslookupを引数なしで実行すると、> プロンプトが出る対話モードに入ります。複数の名前やレコードの種類を続けて照会するとき、コマンドを最初から書き直さずに済みます。
nslookup> server 8.8.8.8
Default server: 8.8.8.8
Address: 8.8.8.8#53
> set type=mx
> google.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
google.com mail exchanger = 10 smtp.google.com.
Authoritative answers can be found from:
> set type=txt
> example.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
example.com text = "_k2n1y4vw3qtb4skdx9e7dxt97qrmmq9"
example.com text = "v=spf1 -all"
Authoritative answers can be found from:
> exitserverで問い合わせるDNSサーバーを変え、set type=でレコードの種類を決めると、その後は名前だけを書いてもその設定で照会します。exitを入力するとシェルに戻ります。
set allは今の設定値をすべて出力します。
nslookup> set type=txt
> set all
Default server: 192.0.2.53
Address: 192.0.2.53#53
Set options:
novc nodebug nod2
search recurse
timeout = 0 retry = 3 port = 53 ndots = 1
querytype = txt class = IN
srchlist = example.internal
> exitquerytypeが、前で決めたtxtに変わっていました。retry = 3とport = 53は、特に変えていない既定値です。
7️⃣ Linuxへのnslookupのインストールとdig・hostの比較
Linuxでnslookupを実行して[command not found]が出たら、BINDツールのパッケージをインストールします。AlmaLinuxサーバーのnslookupはbind-utilsパッケージに入っていました。
rpm -qf /usr/bin/nslookupbind-utils-9.16.20-30.el9_8.2.x86_64Debian 12サーバーではbind9-dnsutilsパッケージでした。以前の名前dnsutilsは、bind9-dnsutilsをインストールする移行用パッケージとして残っていました。
dpkg -S /usr/bin/nslookupbind9-dnsutils: /usr/bin/nslookupRHEL系では、以下のコマンドでbind-utilsパッケージをインストールします。
dnf install bind-utilsDebian系では、bind9-dnsutilsパッケージをインストールします。
apt install bind9-dnsutils同じパッケージにdigとhostも入っています。3つのコマンドはどれもDNSを照会しますが、出力の形が違います。
| コマンド | 出力 | 使いどころ |
|---|---|---|
| nslookup | Server行+応答・対話モード | 複数の名前やレコードを続けて照会 |
| dig | 応答パケットのセクション全体、+shortなら値だけ | スクリプトで値だけを取り出すとき |
| host | レコードごとに1行の文 | A・AAAA・MXを一度に確認 |
host example.comexample.com has address 172.66.147.243
example.com has address 104.20.23.154
example.com has IPv6 address 2606:4700:10::6814:179a
example.com has IPv6 address 2606:4700:10::ac42:93f3
example.com mail is handled by 0 .hostはオプションなしでもA、AAAA、MXレコードを一度に照会し、1行ずつ文で出力しました。digに+shortを付けるとIPアドレスだけが残ります。
dig +short example.com104.20.23.154
172.66.147.243スクリプトで値だけを取り出すならdig +shortが扱いやすく、複数の名前を続けて確かめるならnslookupの対話モードが便利です。
🔲 nslookupコマンドシミュレーター
以下のシミュレーターで、レコードの種類やDNSサーバーを変えながらnslookupを直接入力してみることができます。
🔢 FAQ & おすすめコンテンツ
DNS照会
Linux hostコマンド | DNS照会コマンド
hostコマンドでホスト名のIPアドレスを調べ、逆にIPアドレスからホスト名を調べる方法をまとめた記事です。
ウェブ照会
DNSレコードの確認およびネームサーバーのパフォーマンス測定サイト
whatsmydnsで複数の地域のDNSレコードの値を確かめ、DNSPerfでDNSサーバーの応答速度を比べる方法を扱った記事です。
ℹ️ 提携について
当サイトのコンテンツにはアフィリエイトリンクが含まれています。訪問者がこのリンクを通じて商品やサービスを購入すると、当サイトは販売元から手数料を受け取ります。この過程において、購入者が支払う金額(イベント割引適用で金額が下がります↓)は上昇しません。掲載されている価格・割引・在庫情報は作成時点のものであり、実際とは異なる場合がありますので、ご購入前に販売元にて最終確認をお願いいたします。商品の選定および評価は独自の基準に基づいて行われており、手数料の支払いの有無は紹介順や評価内容に影響を与えません。