目次
nslookupとdigの違いのまとめ
nslookupとdigは、DNS(ドメイン名とIPアドレスの対応)を確認するためのコマンドです。
どちらも名前解決の結果を確認する用途で使われますが、機能の豊富さ・出力の詳細さ・用途に違いがあります。
| 項目 | nslookup | dig |
|---|---|---|
| 主な用途 | 簡易的な名前解決確認 | 詳細調査・トラブルシュート |
| 出力 | シンプル | 詳細(構造化) |
| 対話モード | あり | 対話モードは持たない |
| レコード指定 | 可能(やや制限あり) | 柔軟に指定可能 |
| DNSサーバ指定 | 可能 | 可能(より柔軟) |
| 環境 | Windows/Linux/macOS | 主にLinux/Unix/macOS |
| 実務での位置づけ | 簡易確認用 | 詳細解析用 |
どちらを使うべきか
| nslookup | とりあえず名前解決できるか確認したい Windows標準環境のみで調査したい 簡単な疎通確認 |
| dig | DNSの問題調査(最重要) 権威DNSやレコードの詳細確認 TTLや応答内容の検証 DNSの経路確認(trace) |
nslookupとは
nslookupは、DNSサーバに問い合わせを行い、ドメイン名とIPアドレスの対応を確認するためのコマンドです。
古くから利用されており、現在でもWindows/Linux/macOSなど多くの環境で利用可能です。
特徴
- 簡単に名前解決の結果を確認できる
- 対話モードで連続して問い合わせが可能
- OSごとに実装や出力形式が異なる(Windows版とBIND版で差あり)
コマンド実行例
$ nslookup www.example.com
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: www.example.com
Address: 93.184.216.34
Server/Address
→問い合わせに使用したDNSサーバ
Non-authoritativeanswer
→権威DNSサーバから直接取得した回答ではないことを示す
(キャッシュ経由などを含む)
Name/Address
→名前解決結果(Aレコードなど)
補足
- 出力形式はOSや実装により異なる
- 詳細調査にはやや不向き(最低限の確認向け)
digとは
dig(Domain Information Groper)は、DNSの詳細な情報を取得するためのコマンドです。
主にLinux/Unix系で広く利用され、DNSの調査・トラブルシューティングで標準的に使われます。
特徴
- 詳細なDNS情報を取得可能
- レコード種別(A,MX,TXT,NS,SOAなど)を指定可能
- 問い合わせ先DNSサーバを明示できる
- DNSの応答構造(ヘッダ・セクション)を確認可能
コマンド実行例
$ dig www.example.com
; <<>> DiG 9.18.12 <<>> www.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:
;www.example.com. IN A
;; ANSWER SECTION:
www.example.com. 2605 IN A 93.184.216.34
;; Query time: 25 msec
;; SERVER: 8.8.8.8#53(8.8.8.8)
;; WHEN: Sat Sep 13 01:20:00 JST 2025
;; MSG SIZE rcvd: 65
2行目は、使用しているdigのバージョンと、問い合わせたドメインを表示しています。
; <<>> DiG 9.18.12 <<>> www.example.com
5行目は、先頭は;;でコメントですがDNSヘッダという実データを元にしています。
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 12345
| opcode: QUERY | 実行した操作の種類(opcode) 通常の名前解決クエリ(QUERY) |
| status:NOERROR | 応答の状態(status) ・NOERROR=正常 ・NXDOMAIN=ドメインが存在しない ・SERVFAIL=サーバ内部エラー |
| id | DNSメッセージの識別子(リクエストとレスポンスの対応付け) |
6行目も、先頭は;;でコメントですがDNSメッセージのヘッダ情報を、digが人間向けに要約表示した行です。
;; flags: qr rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
| flags: qr rd ra | DNSヘッダに含まれるビットフラグを表しています。 主な意味: qr(QueryResponse) →応答(レスポンス)である(サーバが返す) rd(RecursionDesired) →クライアントが再帰的に解決してほしいと要求(クライアントの要求) ra(RecursionAvailable) →DNSサーバが再帰対応可能であること(サーバが返す) |
| QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1 | QUERY:1 →問い合わせ内容(質問)が1件 例:example.comのAレコードを聞いた ANSWER:1 →回答が1件 例:IPアドレスが1つ返ってきた AUTHORITY:0 →権威DNS情報なし (この応答には権威サーバ情報は含まれていない) ADDITIONAL:1 →追加情報が1件 例:NSレコードに対応するIPなど |
9行目は、;でコメントですが、何を問い合わせたかを表示しています。
;; QUESTION SECTION:
;www.example.com. IN A
| www.example.com. | 問い合わせ対象(FQDN) |
| IN | クラス(通常はIN = Internet) |
| A | レコード種別(IPv4アドレス) |
12行目は、DNSサーバの応答内容です。
;; ANSWER SECTION:
www.example.com. 2605 IN A 93.184.216.34
| www.example.com. | ドメイン名 |
| 2605 | TTL(キャッシュ可能秒数、ここでは2605秒) |
| IN | クラス(通常はIN = Internet) |
| A | レコード種別(IPv4アドレス) |
| 93.184.216.34 | 値 |
14-17行目も;;でコメントですが、中身は有用な情報です。
| Querytime:25msec | DNS応答にかかった時間 ・単位:ミリ秒 ・小さいほど速い ポイント ・遅い場合→DNS遅延の可能性 ・0msに近い→キャッシュヒットの可能性 |
| SERVER:8.8.8.8#53(8.8.8.8) | 実際に問い合わせたDNSサーバ ・8.8.8.8→サーバIP ・#53→ポート番号(DNS標準) ・(8.8.8.8)→実IP(名前解決後) ポイント ・想定したDNSに問い合わせているか確認できる ・調査時にどのDNSを見ているかは超重要 |
| ;; WHEN: Sat Sep 13 01:20:00 JST 2025 | 問い合わせ実行時刻 ポイント ・ログとの突き合わせに使う ・DNS変更直後の確認などで重要 |
| MSG SIZE rcvd: 65 | 受信したDNSメッセージサイズ(バイト) ポイント ・通常はあまり気にしない ・ただし以下で重要になる: ・異常に大きい → DNSSEC / TXT大量 ・512byte超 → TCPフォールバックの可能性 |
よく使うdigの使い方
レコード種別を指定
dig example.com MX
dig example.com TXT
DNSサーバを指定
dig @8.8.8.8example.com
結果だけ取得(スクリプト向け)
dig example.com +short
DNSの委任経路を確認
dig example.com +trace
権威DNSを直接確認
dig @ns1.example.com example.com
Windows環境での補足 PowerShellのResolve-DnsName
WindowsではPowerShellの以下のコマンドも利用できます。
Resolve-DnsName
Resolve-DnsName example.com
特徴
- オブジェクト形式で結果を取得可能
- スクリプト処理と相性が良い
- nslookupの代替として利用可能な場面が多い
関連の記事
