前回は、pingコマンドを使ってネットワークの接続状態を確認する方法を紹介しました。
調査をしていると、「IPアドレスにはpingが通るのに、ドメイン名では通らない」ということがあります。
このようなときに役立つのが、nslookup(エヌエスルックアップ)コマンドです。
この記事では、Windowsでnslookupを使い、ドメイン名やDNSの問題を調べる基本的な方法を紹介します。
INDEX
nslookupコマンドとは
nslookupは、DNSサーバーに問い合わせて、ドメイン名に対応するIPアドレスなどを調べるコマンドです。
DNSは、google.comのような人間が覚えやすいドメイン名を、コンピューターが通信に利用するIPアドレスへ変換する仕組みです。
電話帳で名前から電話番号を調べるような仕組みと考えると、分かりやすいでしょう。
nslookupを実行する方法
Windowsでは、コマンドプロンプトまたはPowerShellから実行できます。
- スタートボタンをクリックします。
- 検索欄に「cmd」と入力します。
- 「コマンドプロンプト」を開きます。
- nslookupコマンドを入力してEnterキーを押します。
管理者として起動する必要はありません。
ドメイン名からIPアドレスを調べる
基本的な使い方は、nslookupの後ろに調べたいドメイン名を入力するだけです。
nslookup google.com
実行すると、次のような情報が表示されます。
サーバー: example.router
Address: 192.168.1.1
権限のない回答:
名前: google.com
Addresses: 2404:6800:4004:xxx::200e
142.250.xxx.xxx
「サーバー」と「Address」の部分には、問い合わせに使用したDNSサーバーの情報が表示されます。
「名前」と「Addresses」の部分には、調べたドメイン名と対応するIPアドレスが表示されます。
IPv4とIPv6の両方が登録されている場合は、複数のIPアドレスが表示されることがあります。
「権限のない回答」と表示されても問題ない
nslookupの結果には、「権限のない回答」または「Non-authoritative answer」と表示されることがあります。
これはエラーではありません。
そのドメインを直接管理しているDNSサーバーではなく、契約しているプロバイダーやルーターなどのDNSサーバーから回答を受け取ったことを表しています。
一般的なnslookupの利用では、表示されても問題ありません。
別のDNSサーバーを指定する
nslookupでは、問い合わせ先のDNSサーバーを指定できます。
たとえば、Google Public DNSを使って調べる場合は、次のように実行します。
nslookup google.com 8.8.8.8
通常使用しているDNSサーバーでは検索できないのに、8.8.8.8を指定すると検索できる場合は、普段使用しているDNSサーバーやルーターのDNS設定に問題がある可能性があります。
CloudflareのパブリックDNSを使って確認することもできます。
nslookup google.com 1.1.1.1
複数のDNSサーバーで結果を比較すると、DNSの問題を切り分けやすくなります。
IPアドレスからホスト名を調べる
nslookupにIPアドレスを指定すると、そのIPアドレスに登録されているホスト名を逆引きできます。
nslookup 8.8.8.8
逆引き用の情報が登録されていれば、対応するホスト名が表示されます。
ただし、すべてのIPアドレスに逆引き情報が登録されているわけではありません。結果が表示されなくても、必ずしも異常とは限りません。
メールサーバーを調べる
nslookupでは、IPアドレス以外のDNS情報も確認できます。
たとえば、「-type=mx」を付けると、そのドメインで使用しているメールサーバーを調べられます。
nslookup -type=mx google.com
MXは「Mail Exchange」の略で、メールの配送先を表すDNSレコードです。
メールが届かない原因を調査するときや、ドメインのメール設定を確認するときに利用されます。
名前解決の問題を切り分ける
前回紹介したpingと組み合わせると、次のように問題を切り分けられます。
ping 8.8.8.8
ping google.com
nslookup google.com
| 確認結果 | 考えられる状態 |
|---|---|
| 8.8.8.8にも接続できない | インターネット接続自体に問題がある可能性 |
| 8.8.8.8には接続できるが、google.comには接続できない | DNSによる名前解決に問題がある可能性 |
| 通常のnslookupだけ失敗する | 普段利用しているDNSサーバーに問題がある可能性 |
| 8.8.8.8を指定すると検索できる | ルーターやプロバイダーのDNS設定に問題がある可能性 |
ただし、サーバーやネットワーク機器がpingへの応答を拒否している場合もあります。pingの結果だけで判断せず、nslookupの結果と合わせて確認することが大切です。
まとめ
nslookupは、ドメイン名とIPアドレスの関係や、DNSによる名前解決の状態を確認できるコマンドです。
基本的な使い方は、次の2つです。
nslookup google.com
nslookup google.com 8.8.8.8
通常のDNSサーバーと別のDNSサーバーで結果を比較すると、問題のある場所を切り分けやすくなります。
「インターネットには接続できているのに、Webサイトをドメイン名で開けない」という場合は、nslookupを使ってDNSの状態を確認してみましょう。
次回は、共有フォルダーの接続や切断に使える「net useコマンド」を紹介します。
