2026/10/09

nslookup チートシート

## 1. 基本の書式

```
nslookup [オプション] <調べる名前> [問い合わせ先DNSサーバー]
```

| 部分 | 内容 | 例 |
|---|---|---|
| オプション | レコードの種類の指定やデバッグ表示など | `-type=mx`、`-debug` |
| 調べる名前 | ドメイン名・ホスト名・IPアドレス(**名前の末尾に `.` を付けるのが確実**。3章参照) | `example.com.` |
| 問い合わせ先 | 省略すると、PCに設定されたDNS(ルーターやプロバイダのDNSなど)を使う | `ns1.example.net` |

### 対話モード
引数なしで実行すると、対話モードになります。

| 対話モードのコマンド | コマンドラインでの同等の指定 |
|---|---|
| `set type=mx` | `-type=mx` |
| `set debug` / `set nodebug` | `-debug` |
| `server ns1.example.net` | 末尾に問い合わせ先 `ns1.example.net` を指定 |
| `example.com.`(名前だけを入力) | 問い合わせの実行 |
| `set all` | (なし)現在の設定(type、debug、問い合わせ先など)を一覧表示する |
| `exit` | 対話モードの終了 |

---

## 2. よく使うオプション

| オプション | 意味 |
|---|---|
| `-type=<種類>` | レコードの種類を指定する(`-q=<種類>` も同じ)。省略するとA(とAAAA) |
| `-debug` | 実際に送った問い合わせ名(QUESTIONS)、応答の種類、TTLなどの詳細を表示する |
| `-norecurse` | 問い合わせ先に「代わりに調べて」と頼まない(相手のDNSが持っている情報だけを見たいとき) |
| `-timeout=<秒>` | 応答を待つ時間 |

### レコードの種類(`-type=`)

| 種類 | 内容 | 主な用途 |
|---|---|---|
| `a` | 名前 → IPv4アドレス | Webサイトやサーバーの接続先の確認 |
| `aaaa` | 名前 → IPv6アドレス | 同上(IPv6) |
| `mx` | メールの受信先サーバー(優先度付き) | メールがどこに届くかの確認 |
| `txt` | 任意の文字列 | SPF(`v=spf1 …`)、DMARC(`_dmarc.` の下)、ドメインの所有権確認 |
| `ns` | そのドメインを管理するDNSサーバー(向き先) | どのDNSでゾーンが管理されているかの確認 |
| `soa` | ゾーンの管理情報(管理元・シリアル番号・既定値など) | ゾーンの有無、変更の目安 |
| `cname` | 別名 | 別名の参照先の確認 |
| `ptr` | IPアドレス → 名前(逆引き) | IPアドレスがどのサーバーのものかの確認 |
| `any`(`all` も同じ) | 全種類 | **確認には使わない**。DNSサーバーによって返る内容が異なり、最小限の応答(`HINFO RFC8482`)しか返さないものも多い。全レコードの一覧は得られない |

---

## 3. 注意点

### 名前の末尾には `.` を付ける(Windowsの場合)
Windows の `nslookup` は、末尾に `.` のない名前を問い合わせるとき、**まずPCのDNSサフィックス(例:`isp.example.ne.jp`)を補った名前で問い合わせます**。

```
nslookup -type=ns example.com a.dns.jp
→ 実際には example.com.isp.example.ne.jp を問い合わせ、無関係な結果が表示されることがある

nslookup -type=ns example.com. a.dns.jp
→ 意図どおり example.com を問い合わせる
```
(`a.dns.jp`:.jp ドメインを管理するJPRSのDNSサーバー)

- 通常のDNSサーバーに問い合わせた場合は、補った名前が「存在しない」と返り、元の名前で問い合わせ直すので気付きにくい。
- 上位のDNSサーバー(`a.dns.jp` など)は「委任先の案内」を返すため、補った名前の結果がそのまま表示されてしまう。
- 実際に送った名前は、`-debug` の `QUESTIONS:` 欄で確認できる。
- PCに設定されているサフィックスは、`ipconfig /all` の「接続固有の DNS サフィックス」「DNS サフィックス検索一覧」で確認できる(Windowsの場合)。

### レコードの種類を必ず指定する
`-type` を省略するとAレコードとして問い合わせます。たとえばDMARC(TXTレコード)を種類なしで問い合わせると「ない」という結果になり、**設定されていないと誤認**します。

### 問い合わせ先によって結果の意味が変わる

| 問い合わせ先 | 得られるもの |
|---|---|
| 省略(PCのDNS) | キャッシュを含む結果。TTLは**残り時間**(カウントダウンされた値) |
| 権威DNS(そのゾーンを持つDNS) | ゾーンに設定されている**正の値**。TTLは設定値 |
| 上位のDNS(TLDを管理するDNS) | 「このドメインはどのDNSが管理しているか」という委任の情報 |

---

## 4. 出力の読み方
表示の文言は、Windowsの場合のものです。

| 表示 | 意味 |
|---|---|
| `Non-authoritative answer:` | キャッシュDNSからの応答(権威DNSの応答ではない) |
| `auth. answer`(`-debug` のヘッダー) | 権威DNSからの応答 |
| `ttl = 3600 (1 hour)`(`-debug`) | TTL。権威DNSに問い合わせたときは設定値 |
| SOAだけが返る(`primary name server = …` だけ表示) | **その名前・種類のレコードはない**(ゾーン自体はある) |
| `can't find … : Non-existent domain` | その名前自体が存在しない |
| `Query refused` | そのDNSサーバーは、そのドメインを管理していない(または問い合わせを拒否している) |
| `HINFO CPU = RFC8482` | `-type=any` への最小限の応答。全レコードの一覧ではない |
| `??? unknown type 65 ???` | nslookupが表示に対応していない種類のレコード(例:65はHTTPSレコード) |
| `default TTL = …`(SOAの表示) | SOAの最後の項目(MINIMUM)。現在の規格では**ネガティブキャッシュの時間**(「存在しない」という応答を保持する時間) |
| 権威DNSなのにTTLが問い合わせのたびに減る | 参照先の値を返すエイリアス型(CNAMEフラットニング)のレコードと考えられる |

---

## 5. 用途別コマンド集

### 5-1. ドメインを管理しているDNSサーバーはどこか(NSレコード)

```
nslookup -type=ns example.com.
nslookup -type=ns example.jp. a.dns.jp
```
- 上位のDNSに問い合わせると、「どのDNSサーバーがこのドメインの設定(ゾーン)を管理しているか」という登録内容(委任)が分かる。**ここに出るDNSサーバーだけが外部から参照される。**
- `a.dns.jp`:.jp を管理するJPRSのDNSサーバー(a〜hの8台)。.com・.net の場合は `a.gtld-servers.net` など。
- TLDを管理するDNSサーバーの一覧は、次のコマンドで確認できる。
```
nslookup -type=ns jp.
nslookup -type=ns com.
```

### 5-2. DNSサーバーがそのドメインの設定(ゾーン)を持っているか(SOAレコード)

```
nslookup -type=soa example.com. ns1.example.net
```
- SOAが返れば、そのDNSサーバーはゾーンを持っている。
- シリアル番号は、日付形式(例:`2024010500`)で付けられていることが多く、最終変更の目安になる。

### 5-3. メールがどのサーバーに届くか(MXレコード)

```
nslookup -type=mx example.com.
nslookup -type=mx example.com. ns1.example.net
```
- 優先度(preference)の値が小さいサーバーから順に使われる。

### 5-4. どのサーバーからのメール送信が許可されているか(SPF:TXTレコード)

```
nslookup -type=txt example.com. ns1.example.net
```
- 返ってきたTXTのうち、`v=spf1` で始まるものがSPF。**1本だけ**であることを確認する(2本以上あると無効)。
- 例:`v=spf1 include:spf.example.net ~all` は、`spf.example.net` で許可された送信元を許可し、それ以外は「怪しいが受け取ってよい」(`~all`)という意味。`-all` の場合は「拒否してよい」。
- 参考:include 先の名前のTXTを問い合わせると、許可されている送信元(IPアドレスなど)を見られる。
```
nslookup -type=txt spf.example.net.
```

### 5-5. 認証に失敗したメールの扱いが指定されているか(DMARC:TXTレコード)

```
nslookup -type=txt _dmarc.example.com. ns1.example.net
```
- **`-type=txt` を必ず指定する**。
- `p=none`(何もしない)、`p=quarantine`(迷惑メール扱い)、`p=reject`(拒否)のいずれかが指定されている。

### 5-6. 送信メールの電子署名を検証する公開鍵があるか(DKIM:TXTレコード)

```
nslookup -type=txt <セレクタ>._domainkey.example.com.
```
- セレクタ名が分からないと照会できない。送信側の設定や、受信したメールのヘッダー(`DKIM-Signature` の `s=`)で確認する。

### 5-7. レコードがどれくらいの時間キャッシュされるか(TTL)

```
nslookup -debug -type=mx example.com. ns1.example.net
```
- 権威DNSに `-debug` 付きで問い合わせると、`ttl =` に設定値が表示される。
- 何度か問い合わせて値が変わらなければ固定の設定値、減っていく場合はキャッシュの残り時間か、エイリアス型のレコード。

### 5-8. 名前とIPアドレスの対応(Aレコード/逆引きのPTRレコード)

```
nslookup -type=a mail.example.com.
nslookup -type=ptr 10.2.0.192.in-addr.arpa.
nslookup 192.0.2.10                       ← IPアドレスを渡すと逆引きになる
```
- 逆引きの名前は、IPアドレスを逆順に並べて `.in-addr.arpa.` を付けたもの(192.0.2.10 → `10.2.0.192.in-addr.arpa.`)。

### 5-9. 実際にどの名前で問い合わせたか(補完の確認)

```
nslookup -debug -type=ns example.com a.dns.jp
```
- `QUESTIONS:` 欄に表示される名前が、実際に問い合わせた名前。サフィックスが補われていないかを確認できる(3章参照)。

### 5-10. DNSの変更がすべての管理サーバーに反映されたか

```
nslookup -debug -type=mx  example.com. ns1.example.net
nslookup -debug -type=mx  example.com. ns2.example.net
nslookup -debug -type=txt example.com. ns1.example.net
nslookup -debug -type=txt example.com. ns2.example.net
```
- 権威DNSが複数ある場合は、**すべてに問い合わせて**同じ新しい値が返ることを確認する(外部からは、どの権威DNSに問い合わせが行くか分からないため)。
- PCのDNS(問い合わせ先を省略)では、TTLが切れるまで古い値が返ることがある。

---

## 6. 補足:WHOIS(ドメインの登録情報)
WHOISのコマンドは、OSによっては標準で入っていない(Windowsでは、Sysinternals の Whois を別途導入する)。次のWebサービスでも確認できる。
- .jp ドメイン:JPRS WHOIS([https://whois.jprs.jp/](https://whois.jprs.jp/))
- .com・.net・.org などのgTLD:ICANN Lookup([https://lookup.icann.org/](https://lookup.icann.org/))。ドメイン名の国際的な管理団体(ICANN)の公式ページ
- その他の国別ドメイン(.uk、.de など):IANA WHOIS([https://www.iana.org/whois](https://www.iana.org/whois))でTLDを検索すると、そのTLDを管理するレジストリとWHOISサーバーが分かる

0 件のコメント:

コメントを投稿

人気の投稿