nslookup – Linuxで使うDNS問い合わせコマンドの使い方

コマンドリファレンス

nslookup(ネームサーバールックアップ)は、ドメイン名とIPアドレスの対応関係を調べる DNS 問い合わせコマンドです。
Aレコード(正引き)・PTRレコード(逆引き)・MXレコードなど、あらゆる DNS レコードを確認でき、ネットワークのトラブルシューティングに広く使われています。

nslookupとは

nslookup は「Name Server Lookup」の略で、DNS サーバーに対して対話的・非対話的に問い合わせを行うコマンドラインツールです。主に以下のような用途で使われます。

  • ドメイン名から IP アドレスを調べる(正引き)
  • IP アドレスからホスト名を調べる(逆引き)
  • メールサーバー(MX レコード)を確認する
  • ネームサーバー(NS レコード)を調べる
  • DNS の設定変更が正しく反映されているか確認する

Windows・Linux・macOS のすべてで標準搭載されており、インストール不要でどこでも使えます。

Linuxでnslookupを使う前に確認すること

Linux ディストリビューションでは nslookup がデフォルトで入っていない場合があります。まず以下のコマンドでインストール済みか確認しましょう。

which nslookup

何も表示されない場合は、ディストリビューションに応じて以下のパッケージをインストールします。

# Debian / Ubuntu
sudo apt install dnsutils

# RHEL / CentOS / Rocky Linux / Fedora
sudo dnf install bind-utils

# Arch Linux
sudo pacman -S bind

問い合わせ先DNSサーバーは/etc/resolv.confで決まる

Linux で DNS サーバーを指定せずに nslookup を実行すると、/etc/resolv.conf に書かれた nameserver の値が使われます。想定と違う結果が返る場合は、まずこのファイルの中身を確認してください。

cat /etc/resolv.conf

Ubuntu などの systemd-resolved 環境では /etc/resolv.conf がスタブリゾルバー(127.0.0.53 など)を指しており、実際の DNS サーバーは resolvectl status で確認できます。

resolvectl status

基本的な使い方

構文(Syntax)

nslookup [オプション] [NAME | IP] [DNS_SERVER]
  • NAME:照会したいホスト名・ドメイン名
  • IP:逆引きしたい IP アドレス
  • DNS_SERVER:問い合わせ先 DNS サーバー(省略するとシステムのデフォルト)

ドメイン名から 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 サーバーからの回答であることを意味します。

IP アドレスからホスト名を調べる(逆引き)

nslookup 8.8.8.8
8.8.8.8.in-addr.arpa  name = dns.google

特定の DNS サーバーに問い合わせる

nslookup example.com 1.1.1.1

第 2 引数に DNS サーバーの IP を指定します。上記は Cloudflare の DNS(1.1.1.1)に問い合わせる例です。Google DNS(8.8.8.8)や自社 DNS への切り替えに使います。

オプション解説

よく使うオプション一覧

  • -type=A:IPv4 アドレス(A レコード)を取得する
  • -type=AAAA:IPv6 アドレス(AAAA レコード)を取得する
  • -type=MX:メールサーバー(MX レコード)を取得する
  • -type=NS:ネームサーバー(NS レコード)を取得する
  • -type=TXT:SPF・DKIM などのテキストレコードを取得する
  • -type=CNAME:正規名(CNAME レコード)を取得する
  • -type=SOA:ゾーンの管理情報(SOA レコード)を取得する
  • -type=ANY:すべての DNS レコードを取得する
  • -debug:詳細なデバッグ情報を表示する
  • -port=NUM:ポート番号を指定する(デフォルトは 53)
  • -timeout=NUM:タイムアウトの秒数を指定する
  • -recurse:再帰問い合わせを有効にする(デフォルトで ON)

MX レコードを調べる

nslookup -type=MX example.com
example.com   mail exchanger = 10 mail.example.com.

NS レコードを調べる

nslookup -type=NS example.com
example.com  nameserver = a.iana-servers.net.
example.com  nameserver = b.iana-servers.net.

TXT レコード(SPF・DKIM)を調べる

nslookup -type=TXT example.com
example.com  text = "v=spf1 -all"

対話モードで利用する

引数なしで nslookup を実行すると対話モードに入ります。複数のドメインを続けて調べる際に便利です。

nslookup
> set type=MX
> example.com
example.com   mail exchanger = 10 mail.example.com.
> set type=NS
> example.com
example.com  nameserver = a.iana-servers.net.
> exit

よくある使用例

DNS 変更が反映されているか確認する

DNS 設定変更後の反映確認には、権威 DNS サーバーと一般の DNS(8.8.8.8 など)の両方に問い合わせて比較します。

# Google DNS で確認
nslookup example.com 8.8.8.8

# Cloudflare DNS で確認
nslookup example.com 1.1.1.1

メール送信エラーを調査する

# MX レコードの確認
nslookup -type=MX example.com

# SPF レコードの確認
nslookup -type=TXT example.com

FAQ

nslookup と dig の違いは何ですか?

dig はより詳細な情報(TTL・フラグ・クエリ時間など)を表示し、スクリプトでの利用にも向いています。nslookup は対話モードを持ち、Windows でも標準搭載されているため手軽に使えます。基本的な DNS 確認なら nslookup、詳細調査には dig が適しています。

「Non-authoritative answer」とは何ですか?

権威 DNS サーバーではなく、キャッシュ DNS サーバーから返された回答です。最新の DNS 変更がまだキャッシュに反映されていない場合があります。権威サーバーから直接確認するには -type=SOA で権威サーバーを調べてから指定します。

nslookup で「can’t find」と表示される場合は?

DNS レコードが存在しないか、問い合わせた DNS サーバーに情報がない状態です。別の DNS サーバー(8.8.8.8 や 1.1.1.1)に問い合わせて確認してみてください。

nslookup example.com 8.8.8.8

Windows で nslookup を使うには?

Windows には標準でインストールされています。コマンドプロンプト(cmd)または PowerShell を開き、nslookup と入力するだけで使用できます。Linux・macOS でも同じコマンドが動作します。

Linux で nslookup が使えない場合は?

パッケージをインストールしてください。

# Debian / Ubuntu
sudo apt install dnsutils

# RHEL / CentOS / Rocky Linux
sudo dnf install bind-utils

関連コマンド

  • dig:詳細かつ柔軟な DNS 問い合わせツール。スクリプト向き。
  • host:シンプルな DNS 問い合わせ用コマンド。出力が簡潔。
  • ping:ドメイン名解決後に疎通確認を行う。
  • whois:ドメインの登録情報を調べる。

備考

  • nslookup は古くから使われているツールですが、非推奨(deprecated)扱いとされることがあります。
  • 現在は dighost が推奨されるケースが多いですが、簡易調査や古い環境・Windows 環境では nslookup が便利です。
  • Linux では bind-utils(RedHat 系)や dnsutils(Debian 系)パッケージに含まれています。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント