nslookupコマンド完全ガイド|DNS調査の基礎から実践まで徹底解説

プログラミング・IT
スポンサーリンク
  1. nslookupって何?DNSを調べるコマンド
    1. DNSって何?インターネットの住所録
    2. nslookupができること
    3. nslookupが使われる場面
  2. nslookupの基本的な使い方
    1. 最もシンプルな使い方
    2. IPアドレスからドメイン名を調べる(逆引き)
    3. 特定のDNSサーバーに問い合わせる
    4. WindowsとLinux/macOSの違い
  3. nslookupの2つのモード
    1. 非対話モード(Non-Interactive Mode)
    2. 対話モード(Interactive Mode)
  4. DNSレコードタイプの指定
    1. Aレコード(IPv4アドレス)
    2. AAAAレコード(IPv6アドレス)
    3. MXレコード(メールサーバー)
    4. NSレコード(ネームサーバー)
    5. CNAMEレコード(エイリアス)
    6. TXTレコード(テキスト情報)
    7. SOAレコード(ゾーン情報)
    8. ANYレコード(すべて)
  5. 対話モードの便利なコマンド
    1. レコードタイプの設定
    2. 使用するDNSサーバーの変更
    3. デバッグモードの有効化
    4. タイムアウトの設定
    5. 再試行回数の設定
    6. クエリクラスの設定
    7. すべての設定を表示
  6. 実践的な使用例
    1. Webサイトが見られない時の診断
    2. メール送信できない時の診断
    3. ドメイン移転後の確認
    4. サブドメインの確認
    5. SPFレコードの確認(メールセキュリティ)
    6. CDNの設定確認
  7. nslookupとdigコマンドの違い
    1. digとは
    2. 主な違い
    3. 同じ調査をする例
    4. どちらを使うべき?
  8. nslookupのトラブルシューティング
    1. 「Non-authoritative answer」とは
    2. 「Server failed」エラー
    3. 「No response from server」
    4. 「NXDOMAIN」エラー
    5. 「SERVFAIL」エラー
    6. 古い情報が表示される
  9. nslookupの代替コマンド
    1. dig(推奨)
    2. host
    3. drill
    4. WindowsのResolve-DnsName(PowerShell)
  10. nslookupを使ったセキュリティチェック
    1. オープンリゾルバーの確認
    2. DNSキャッシュポイズニングの検出
    3. DNSSEC対応の確認
  11. コマンドのチートシート
    1. 基本的なコマンド
    2. レコードタイプ別
    3. 対話モードのコマンド
    4. トラブルシューティング
  12. まとめ:nslookupでDNSをマスターしよう

nslookupって何?DNSを調べるコマンド

インターネットを使っていて、「このドメインのIPアドレスは?」「メールサーバーはどこ?」と調べたくなることがありますよね。

nslookup(name server lookup:ネームサーバールックアップ)は、DNS(Domain Name System)の情報を調べるためのコマンドラインツールです。

DNSって何?インターネットの住所録

まずは、DNSの基本を理解しましょう。

DNSの役割:

  • ドメイン名(example.com)をIPアドレス(192.0.2.1)に変換
  • 人間が覚えやすい名前をコンピュータが理解できる番号に翻訳
  • インターネットの「電話帳」のような存在

身近な例:

あなた:「google.com にアクセスしたい」
 ↓
DNS:「google.com = 142.250.196.78 です」
 ↓
ブラウザ:「142.250.196.78 に接続します」

nslookupはこのDNSに質問を投げかけるツールなんです。

nslookupができること

ドメイン名からIPアドレスを調べる

  • example.com → 192.0.2.1
  • 正引き(Forward Lookup)

IPアドレスからドメイン名を調べる

  • 192.0.2.1 → example.com
  • 逆引き(Reverse Lookup)

メールサーバーを調べる

  • どのサーバーがメールを受け取るか
  • MXレコードの確認

ネームサーバーを調べる

  • ドメインを管理しているサーバー
  • NSレコードの確認

その他のDNS情報

  • テキストレコード(TXT)
  • エイリアス(CNAME)
  • IPv6アドレス(AAAA)

nslookupが使われる場面

ウェブサイトが見られない時

  • DNSの名前解決に問題がないか確認
  • 正しいIPアドレスが返ってくるか検証

メールが届かない時

  • メールサーバーの設定を確認
  • MXレコードが正しいかチェック

ドメイン移転時

  • DNSの切り替えが完了したか確認
  • 新しいサーバーを参照しているか検証

セキュリティ診断

  • DNSの設定ミスを発見
  • 不正なDNSサーバーを検出

システム管理

  • ネットワークのトラブルシューティング
  • DNS設定の動作確認

nslookupの基本的な使い方

それでは、実際にnslookupを使ってみましょう。

最もシンプルな使い方

ドメイン名からIPアドレスを調べる:

nslookup example.com

実行結果の例:

Server:  192.168.1.1
Address: 192.168.1.1#53

Non-authoritative answer:
Name:    example.com
Address: 93.184.216.34

表示される情報:

  • Server:問い合わせ先のDNSサーバー
  • Address:DNSサーバーのIPアドレスとポート番号(#53)
  • Non-authoritative answer:キャッシュからの回答
  • Name:ドメイン名
  • Address:IPアドレス

IPアドレスからドメイン名を調べる(逆引き)

nslookup 8.8.8.8

実行結果の例:

Server:  192.168.1.1
Address: 192.168.1.1#53

Non-authoritative answer:
8.8.8.8.in-addr.arpa    name = dns.google.

GoogleのパブリックDNSサーバーのアドレスだと分かりますね。

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

デフォルトではなく、特定のDNSサーバーに問い合わせたい場合:

nslookup example.com 8.8.8.8

構文:

nslookup [調べたいドメイン/IP] [使用するDNSサーバー]

よく使うパブリックDNSサーバー:

  • 8.8.8.8:Google Public DNS
  • 1.1.1.1:Cloudflare DNS
  • 208.67.222.222:OpenDNS

WindowsとLinux/macOSの違い

基本的な使い方は同じですが、出力形式が少し異なります。

Windows:

サーバー:  UnKnown
Address:  192.168.1.1

権限のない回答:
名前:    example.com
Address:  93.184.216.34

日本語で表示されます。

Linux/macOS:

Server:  192.168.1.1
Address: 192.168.1.1#53

Non-authoritative answer:
Name:    example.com
Address: 93.184.216.34

英語で表示されます。


nslookupの2つのモード

nslookupには、2種類の使い方があります。

非対話モード(Non-Interactive Mode)

特徴:

  • コマンドを1回実行して終了
  • 1つの情報だけ調べたい時に便利
  • シンプルで分かりやすい

使い方:

nslookup example.com

実行すると結果が表示されて、すぐにプロンプトに戻ります。

対話モード(Interactive Mode)

特徴:

  • nslookupを起動したまま複数の問い合わせができる
  • 詳細な調査をする時に便利
  • 様々な設定を変更できる

起動方法:

nslookup

プロンプトが変わります:

>

使用例:

> example.com
Server:  192.168.1.1
Address: 192.168.1.1#53

Non-authoritative answer:
Name:    example.com
Address: 93.184.216.34

> google.com
Server:  192.168.1.1
Address: 192.168.1.1#53

Non-authoritative answer:
Name:    google.com
Address: 142.250.196.78

> exit

終了方法:

  • exitと入力
  • またはCtrl + C

DNSレコードタイプの指定

DNSには様々な種類の情報(レコード)があります。
nslookupで特定のレコードタイプを指定して調べられます。

Aレコード(IPv4アドレス)

最も基本的なレコード:

nslookup -type=A example.com

または対話モードで:

> set type=A
> example.com

実行結果:

Non-authoritative answer:
Name:    example.com
Address: 93.184.216.34

AAAAレコード(IPv6アドレス)

IPv6アドレスを調べる:

nslookup -type=AAAA example.com

実行結果:

Non-authoritative answer:
example.com     AAAA IPv6 address = 2606:2800:220:1:248:1893:25c8:1946

MXレコード(メールサーバー)

メールサーバーを調べる:

nslookup -type=MX example.com

実行結果:

Non-authoritative answer:
example.com     mail exchanger = 10 mail.example.com.

表示される情報:

  • 10:優先度(数字が小さいほど優先)
  • mail.example.com:メールサーバーのホスト名

複数のMXレコードがある場合:

example.com     mail exchanger = 10 mail1.example.com.
example.com     mail exchanger = 20 mail2.example.com.
example.com     mail exchanger = 30 mail3.example.com.

優先度10のサーバーが最初に使われ、障害時には20、30の順で使われます。

NSレコード(ネームサーバー)

ドメインを管理しているネームサーバーを調べる:

nslookup -type=NS example.com

実行結果:

Non-authoritative answer:
example.com     nameserver = a.iana-servers.net.
example.com     nameserver = b.iana-servers.net.

CNAMEレコード(エイリアス)

別名(エイリアス)を調べる:

nslookup -type=CNAME www.example.com

実行結果:

www.example.com canonical name = example.com.
Name:    example.com
Address: 93.184.216.34

www.example.comexample.comの別名だと分かります。

TXTレコード(テキスト情報)

テキスト形式の情報を調べる:

nslookup -type=TXT example.com

実行結果:

example.com     text = "v=spf1 include:_spf.example.com ~all"
example.com     text = "google-site-verification=abc123def456"

TXTレコードの用途:

  • SPFレコード(メール送信認証)
  • DKIM(メール署名)
  • ドメイン所有者の証明
  • その他の設定情報

SOAレコード(ゾーン情報)

ドメインの管理情報を調べる:

nslookup -type=SOA example.com

実行結果:

example.com
        origin = ns.icann.org
        mail addr = noc.dns.icann.org
        serial = 2024110401
        refresh = 7200
        retry = 3600
        expire = 1209600
        minimum = 3600

各項目の意味:

  • origin:プライマリネームサーバー
  • mail addr:管理者のメールアドレス
  • serial:ゾーンファイルのバージョン番号
  • refresh:セカンダリサーバーの更新間隔
  • retry:再試行間隔
  • expire:失効までの時間
  • minimum:ネガティブキャッシュの有効期間

ANYレコード(すべて)

すべての情報を取得:

nslookup -type=ANY example.com

利用可能なすべてのレコードタイプが表示されます。

注意:
一部のDNSサーバーは、セキュリティやパフォーマンスの理由でANYクエリを制限しています。


対話モードの便利なコマンド

対話モードでは、様々な設定ができます。

レコードタイプの設定

> set type=MX
> example.com
(MXレコードが表示される)

> set type=A
> example.com
(Aレコードが表示される)

使用するDNSサーバーの変更

> server 8.8.8.8
Default server: 8.8.8.8
Address: 8.8.8.8#53

> example.com
(8.8.8.8に問い合わせた結果)

デバッグモードの有効化

詳細な情報を表示:

> set debug
> example.com

または、より詳細な情報:

> set d2
> example.com

大量の情報が表示されます。トラブルシューティングに便利です。

タイムアウトの設定

> set timeout=10

10秒でタイムアウトします。

再試行回数の設定

> set retry=5

失敗時に5回まで再試行します。

クエリクラスの設定

通常は使いませんが、特殊な場合に:

> set class=CHAOS

主なクラス:

  • IN:インターネット(デフォルト)
  • CHAOS:Chaosnet
  • HESIOD:Hesiod

すべての設定を表示

> set all

現在の設定がすべて表示されます。


実践的な使用例

実際の場面での使い方を見ていきましょう。

Webサイトが見られない時の診断

問題: example.comにアクセスできない

診断手順:

ステップ1:名前解決ができるか確認

nslookup example.com

結果が返ってくる場合:

  • DNS自体は正常
  • サーバーやネットワークの問題の可能性

結果が返ってこない場合:

  • DNSの問題
  • ドメインが存在しない可能性

ステップ2:複数のDNSサーバーで確認

# 自分のDNSサーバー
nslookup example.com

# GoogleのDNS
nslookup example.com 8.8.8.8

# CloudflareのDNS
nslookup example.com 1.1.1.1

結果が異なる場合、DNSキャッシュや設定に問題があるかもしれません。

ステップ3:権威サーバーに直接問い合わせ

# ネームサーバーを調べる
nslookup -type=NS example.com

# 権威サーバーに直接問い合わせ
nslookup example.com ns1.example.com

メール送信できない時の診断

問題: example.comにメールが届かない

診断手順:

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

確認ポイント:

  • MXレコードが存在するか
  • メールサーバーのホスト名が正しいか
  • 優先度が設定されているか

メールサーバーのIPアドレスも確認:

nslookup mail.example.com

ドメイン移転後の確認

問題: ドメインを新しいサーバーに移転した

確認手順:

# 現在のIPアドレスを確認
nslookup example.com

# 複数のDNSサーバーで確認
nslookup example.com 8.8.8.8
nslookup example.com 1.1.1.1

# ネームサーバーの変更を確認
nslookup -type=NS example.com

# SOAレコードでシリアル番号を確認
nslookup -type=SOA example.com

DNSの浸透(伝播)には時間がかかります:

  • 通常24~48時間
  • TTL(Time To Live)の設定による
  • 世界中のDNSサーバーに広がるまで待つ必要がある

サブドメインの確認

# wwwサブドメイン
nslookup www.example.com

# メールサブドメイン
nslookup mail.example.com

# FTPサブドメイン
nslookup ftp.example.com

SPFレコードの確認(メールセキュリティ)

nslookup -type=TXT example.com

SPFレコードの例:

"v=spf1 include:_spf.google.com ~all"

これは、Google Workspaceからのメール送信を許可する設定です。

CDNの設定確認

nslookup www.example.com

結果がCDNのIPアドレスを指している場合:

www.example.com canonical name = example.cdn.cloudflare.net.
Name:    example.cdn.cloudflare.net
Address: 104.16.123.45

CDNが正しく設定されていることが分かります。


nslookupとdigコマンドの違い

nslookup以外にも、digというDNS調査ツールがあります。

digとは

dig(Domain Information Groper)

  • より詳細な情報を表示
  • BIND(Berkeley Internet Name Domain)の一部
  • システム管理者やエンジニアに人気

主な違い

nslookup:

  • シンプルで使いやすい
  • Windowsに標準搭載
  • 基本的な情報を手軽に確認

dig:

  • 詳細で正確な情報
  • Linuxに標準搭載
  • プロフェッショナル向け

同じ調査をする例

nslookup:

nslookup example.com

dig:

dig example.com

digの出力の方が詳細:

; <<>> DiG 9.18.1 <<>> example.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1

;; QUESTION SECTION:
;example.com.                   IN      A

;; ANSWER SECTION:
example.com.            86400   IN      A       93.184.216.34

;; Query time: 20 msec
;; SERVER: 192.168.1.1#53(192.168.1.1)
;; WHEN: Mon Nov 04 10:30:00 JST 2024
;; MSG SIZE  rcvd: 56

どちらを使うべき?

nslookupがおすすめの人:

  • Windowsユーザー
  • 簡単な確認だけしたい
  • コマンドに慣れていない

digがおすすめの人:

  • Linuxユーザー
  • 詳細な情報が必要
  • DNS設定の深い調査をしたい

両方使えるのがベスト:
状況に応じて使い分けましょう。


nslookupのトラブルシューティング

nslookupで問題が起きた時の対処法です。

「Non-authoritative answer」とは

表示される理由:

  • キャッシュされた情報を返している
  • 権威サーバーからの直接の回答ではない

問題ではありません:
これは正常な動作です。DNSはキャッシュを使って高速化しています。

権威サーバーから直接回答を得たい場合:

# ネームサーバーを調べる
nslookup -type=NS example.com

# 権威サーバーに直接問い合わせ
nslookup example.com ns1.example.com

「Server failed」エラー

原因:

  • DNSサーバーが応答しない
  • ネットワーク接続の問題
  • ファイアウォールでブロック

解決方法:

1. 別のDNSサーバーを試す:

nslookup example.com 8.8.8.8

2. ネットワーク接続を確認:

# Windows
ping 8.8.8.8

# Linux/macOS
ping 8.8.8.8

3. DNSサーバーの設定を確認:

Windows:

ipconfig /all

Linux/macOS:

cat /etc/resolv.conf

「No response from server」

原因:

  • DNSサーバーがダウンしている
  • ファイアウォールがポート53をブロック
  • タイムアウト

解決方法:

# タイムアウトを延長
nslookup -timeout=10 example.com

または対話モードで:

> set timeout=10
> example.com

「NXDOMAIN」エラー

表示例:

** server can't find example.invalid: NXDOMAIN

意味:

  • ドメインが存在しない
  • スペルミスの可能性
  • ドメインが削除された

確認:

  1. ドメイン名のスペルを確認
  2. 別のDNSサーバーで試す
  3. Webブラウザで直接アクセスしてみる

「SERVFAIL」エラー

原因:

  • DNSサーバー側の問題
  • 設定エラー
  • DNSSEC検証の失敗

解決方法:

# 別のDNSサーバーで確認
nslookup example.com 1.1.1.1

一時的な問題の可能性もあるので、時間をおいて再試行しましょう。

古い情報が表示される

原因:

  • DNSキャッシュ

解決方法:

Windows:

ipconfig /flushdns

Linux:

# systemd-resolved
sudo systemd-resolve --flush-caches

# nscd
sudo /etc/init.d/nscd restart

macOS:

sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

nslookupの代替コマンド

nslookup以外のDNS調査ツールも知っておきましょう。

dig(推奨)

特徴:

  • より詳細な情報
  • 柔軟なクエリ
  • スクリプトに適している

基本的な使い方:

dig example.com

host

特徴:

  • シンプルな出力
  • 人間が読みやすい
  • 短い結果

基本的な使い方:

host example.com

実行結果:

example.com has address 93.184.216.34
example.com has IPv6 address 2606:2800:220:1:248:1893:25c8:1946
example.com mail is handled by 10 mail.example.com.

drill

特徴:

  • digに似た機能
  • DNSSEC対応
  • ldnsパッケージに含まれる

基本的な使い方:

drill example.com

WindowsのResolve-DnsName(PowerShell)

特徴:

  • PowerShellのコマンドレット
  • オブジェクト指向
  • スクリプトに適している

基本的な使い方:

Resolve-DnsName example.com

実行結果:

Name                           Type   TTL   Section    IPAddress
----                           ----   ---   -------    ---------
example.com                    A      86400 Answer     93.184.216.34

nslookupを使ったセキュリティチェック

DNS設定のセキュリティを確認する方法です。

オープンリゾルバーの確認

危険性:
自分のDNSサーバーが誰でも使える状態になっていると、DDoS攻撃に悪用される可能性があります。

確認方法:

外部から自分のDNSサーバーに問い合わせ:

nslookup example.com あなたのDNSサーバーのIP

外部からアクセスできる場合は、設定を見直しましょう。

DNSキャッシュポイズニングの検出

複数のDNSサーバーで結果を比較:

nslookup example.com 8.8.8.8
nslookup example.com 1.1.1.1
nslookup example.com あなたのISPのDNS

結果が異なる場合、キャッシュポイズニングの可能性があります。

DNSSEC対応の確認

残念ながら、nslookupはDNSSECの検証機能が限定的です。
DNSSECを確認するには、digを使う方が適しています。

dig example.com +dnssec

コマンドのチートシート

よく使うnslookupコマンドをまとめました。

基本的なコマンド

# ドメイン名からIPアドレス
nslookup example.com

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

# 特定のDNSサーバーを使用
nslookup example.com 8.8.8.8

# 対話モードの起動
nslookup

レコードタイプ別

# Aレコード(IPv4)
nslookup -type=A example.com

# AAAAレコード(IPv6)
nslookup -type=AAAA example.com

# MXレコード(メールサーバー)
nslookup -type=MX example.com

# NSレコード(ネームサーバー)
nslookup -type=NS example.com

# CNAMEレコード(別名)
nslookup -type=CNAME www.example.com

# TXTレコード(テキスト)
nslookup -type=TXT example.com

# SOAレコード(ゾーン情報)
nslookup -type=SOA example.com

# すべてのレコード
nslookup -type=ANY example.com

対話モードのコマンド

# レコードタイプの設定
set type=MX

# DNSサーバーの変更
server 8.8.8.8

# デバッグモード
set debug
set d2

# タイムアウト設定
set timeout=10

# 再試行回数
set retry=5

# すべての設定を表示
set all

# 終了
exit

トラブルシューティング

# DNSキャッシュのクリア(Windows)
ipconfig /flushdns

# DNSキャッシュのクリア(Linux)
sudo systemd-resolve --flush-caches

# DNSキャッシュのクリア(macOS)
sudo dscacheutil -flushcache

# DNS設定の確認(Windows)
ipconfig /all

# DNS設定の確認(Linux)
cat /etc/resolv.conf

# 接続確認
ping 8.8.8.8

まとめ:nslookupでDNSをマスターしよう

この記事では、nslookupコマンドの基礎から実践的な使い方まで解説してきました。

重要なポイントのおさらい:

  • nslookupはDNS情報を調べるコマンドラインツール
  • ドメイン名とIPアドレスの相互変換ができる
  • 様々なDNSレコードタイプを調査可能
  • 非対話モードと対話モードの2つの使い方がある
  • トラブルシューティングに非常に有効
  • Windows、Linux、macOSすべてで使える
  • digやhostなどの代替ツールも存在

nslookupが活躍する場面:

  • Webサイトにアクセスできない時
  • メールが送信/受信できない時
  • ドメイン移転後の確認
  • DNS設定の動作確認
  • セキュリティ診断

基本的な使い方:

# 最もシンプル
nslookup example.com

# メールサーバーの確認
nslookup -type=MX example.com

# 特定のDNSサーバーを使用
nslookup example.com 8.8.8.8

# 対話モード
nslookup
> set type=MX
> example.com
> exit

覚えておきたいDNSサーバー:

  • 8.8.8.8:Google Public DNS
  • 1.1.1.1:Cloudflare DNS
  • 208.67.222.222:OpenDNS

次のステップ:

  1. 実際に自分のドメインで試してみる
  2. メールサーバーの設定を確認する
  3. 問題が起きた時の診断手順を覚える
  4. digコマンドも学んでみる

nslookupは、ネットワーク管理やトラブルシューティングに欠かせない基本ツールです。

まずは簡単なドメイン検索から始めて、徐々に様々なレコードタイプの調査に挑戦してみましょう。
何度か使っているうちに、自然と使い方が身につきますよ!

コメント

タイトルとURLをコピーしました