nslookupコマンドとは?
nslookup(Name Server Lookup)はLinux、macOS、Windowsなどで使用できるコマンドラインのコマンドの一つで、DNS(Domain Name System)関連の問題を調査・診断するためのコマンドラインツールです。
nslookupでできること
nslookupでは以下のようなことができます。
- ドメイン名から対応するIPアドレスを調べる正引きです。例えば、example.comがどのIPアドレスに割り当てられているかを確認できます。
- IPアドレスから関連するドメイン名を調べる逆引きも可能です。例えば、192.0.2.1がどのドメイン名に対応しているかを調査できます。
- デフォルトのDNSサーバーではなく、Google DNSの8.8.8.8など特定のDNSサーバーに直接問い合わせることもできます。
- メール受信サーバーを示すMXレコードや、ドメインを管理するネームサーバーを示すNSレコードなどのレコードの照会ができます。
なぜトラブル対応に役立つのか?
「インターネットに繋がらない」や「メールが届かない」といったトラブルの多くはDNSに起因するとされており、nslookupを使用することでDNSの解決状況を確認し、問題の切り分けやサーバー移行・ドメイン設定変更時のDNS伝播状況の確認に非常に役立ちます。
使用例
メールが届かない/遅れるとき
メールが届かなかったり遅れたりする場合は、宛先あるいは送信先のDNS レコードを確認してみる必要があります。 特にDNSレコードのうち、MXレコードを確認する必要があります。 このとき、nslookupを使用すると、MXレコードを確認することができます。
社内のインターネットが不安定なとき
社内のネットワークでWebサイトにアクセスできないが、スマホのテザリングなど別のネットワークでは問題がない場合、まずは社内のDNSサーバーの応答を確認することが重要です。
WindowsのコマンドプロンプトやMac・Linuxのターミナルで「nslookup google.com」と入力すると、現在使用しているDNSサーバーで名前解決ができるかを確認できます。もし応答がなかったり「Server failed」と表示された場合は、社内DNSサーバーに問題がある可能性が高いです。逆に、正しいIPアドレスが返ってくる場合は、DNS以外の原因(ファイアウォールなど)を調査する必要があります。
次に、GoogleのパブリックDNSサーバー(8.8.8.8)を指定して「nslookup google.com 8.8.8.8」を実行し、同じ名前解決を試みます。こちらで正しく解決できる場合は、社内DNSサーバーの障害が確定します。
実際の使い方とコマンド例
基本的な使い方
nslookupコマンドは、直接コマンドと実行対話モードの2つの方法で使うことができます。
まず、直接コマンド実行では、一行ずつ以下のように入力します。
例えば、正引きであれば「nslookup google.com」、逆引きであれば「nslookup 8.8.8.8」のように入力します。
対話モードでは、コマンドプロンプトやターミナルで「nslookup」と入力すると対話モードが起動します。ここで「server」と入力すると現在使用中のDNSサーバーを確認できます。
本文では直接コマンド実行で進めます。
コマンド例
コマンドプロンプトまたはターミナルを開き、正引き「nslookup yahoo.co.jp」を入力すると、以下の結果が出ます。
逆引き「nslookup 182.22.31.252」を入力すると、以下の結果が出ます。
現在のデフォルトDNSサーバーではなく、他のDNSサーバーを活用してIPアドレスを取得してみます。
「nslookup yahoo.co.jp 1.1.1.1」を入力すると、以下の結果が出ます。ここで、1.1.1.1はCloudflareという会社が提供するパブリックDNSサーバです。
順序の違いはありますが、返却されるIP アドレスは同じであることが確認できます。
最後にDNSレコードを確認してみます。nslookupを通じてDNSレコードを確認する方法は、“-type=”を追加すればいいです。
「nslookup -type=MX yahoo.co.jp 」を入力すると以下のような結果が出ます。
MXレコードのみ確認しましたが、複数のレコード(Aレコード、AAAレコード、CNAMEなど)も同じ形式(-type=A)で確認できます。
まとめ
nslookupについて解説いたしました。
nslookupコマンドとは、DNS(Domain Name System)関連の問題を調査・診断するためのコマンドです。