ネットワーク管理者として、nslookupコマンドは最も必要なツールの一つであることがわかるでしょう。nslookupを使用すると、DNSサーバーや特定のDNSレコードの問題をトラブルシューティングするためにDNSレコードをチェックすることができます。この記事では、nslookup を詳しく見て、その使い方の実用的な例をいくつか紹介します。

nslookup とは何か?

nslookup は “ネームサーバー検索” の略です。nslookup コマンドラインツールはドメインネームシステム (DNS) に問い合わせ、 ドメイン名や IP アドレスのマッピング、その他の DNS レコードを取得するために使われます。シンプルでありながら強力であり、DNS レコードの詳細情報を調べるために使用することができます。

なぜ nslookup を使うのか?

nslookup コマンドは非常に強力な DNS クエリツールです。DNS の問題のトラブルシューティングに使ったり、単に DNS レコードの情報を取得するために使ったりできます。たとえば、nslookupを使用して、WebサイトのIPアドレスを調べたり、ドメインのDNSレコードを調べたりすることができます。

ということで、nslookup のインストール方法と使用方法を詳しく見ていきましょう。

Linux での nslookup のインストール

ほとんどのLinuxディストリビューションでは、nslookupは bind-utils パッケージに含まれています。

DebianやUbuntuでは、aptパッケージマネージャを使用することができます。

sudo apt install dnsutils-y

Centos/RHEL/Fedoraでは、yumパッケージマネージャを使用することができます。

sudo yum install bind-utils -y

ArchLinux では

pacman -Sy dnsutils

簡単なクエリを実行する

nslookup コマンドの一般的なシンタックスは以下の通りです。

nslookup <ドメイン名><オプション

nslookup は問い合わせたいドメイン名であり、` は使用したいオプションである。これらのオプションはnslookupがどのように動作するかを制御します。オプションについては、このチュートリアルで詳しく説明します。とりあえず、簡単な例から始めましょう。

簡単なDNSクエリを実行するには、オプションを指定せずに、クエリしたいドメイン名を指定します。

例えば、google.comというドメイン名のDNSレコードを問い合わせるには、以下のコマンドを実行します。

nslookup google.com

このコマンドは指定されたドメイン名に対するすべてのDNSレコードを返します。

出力を理解する

オプションを指定せずにnslookupコマンドを実行すると、デフォルトで多くの情報が返されます。この出力が何を意味するのか、もう少し詳しく見てみましょう。

最初に表示されるのは、nslookupが使用しているサーバーアドレスです。デフォルトでは、nslookupはあなたのシステムで設定されているDNSサーバーを使用します。ほとんどの場合、これはあなたのISPのDNSサーバーになります。

この場合、サーバーは “127.0.0.53” で、これは localhost の IP アドレスです。このチュートリアルは、私の DNS サーバーをホストしているのと同じマシンで nslookup を実行しています。独自のDNSサーバーを実行していない場合は、ISPのDNSサーバーのIPアドレスが表示されます。

ポート53はDNSクエリに使用されるポートで、DNSクエリの標準的なポートです。

サーバー情報の後に、Non-authoritative answerの行が表示されます。この行は、nslookupが受け取った回答が、そのドメインの権威あるDNSサーバーからのものではないことを示しています。この回答は、nslookupが問い合わせたローカルサーバーからキャッシュされ、転送されたものです。

ほとんどの場合、これはまったく問題なく、心配する必要はありません。しかし、DNSの問題をトラブルシューティングしている場合、ドメインの権威あるDNSサーバーから回答を得たいと思うかもしれません。

Non-authoritative answer`の行の下に、指定したドメイン名に対するDNSレコードが表示されます。この場合、2つのAレコードが返されます。これらのAレコードには、ドメイン名に対するIPアドレスが含まれています。

また、Googleが “DNSロードバランシング “を設定しているため、異なるIPアドレスが返されていることがわかります。GoogleのDNSサーバーに問い合わせると、毎回異なるIPアドレスが返され、サーバーにかかる負荷を分散し、誰もが高速に処理できるようにしているのです。

注意:もし結果が出ない場合は、システムのDNSキャッシュをフラッシュする必要があるかもしれません。もし “/etc/hosts” ファイルを編集しているなら、それは nslookup の結果にも影響を与えるかもしれません。

特定の DNS サーバーを利用する

特定の DNS サーバーを使うことは、特定の DNS サーバーに関連する DNS の問題をトラブルシューティングする場合に便利です。あるいは、プライベートな DNS サーバーを使用しているネットワーク上で、ISP の DNS サーバーではなく、そのサーバーを使用して問い合わせをしたい場合などです。

nslookupで特定のDNSサーバーを使用するには、照会するドメイン名の後にDNSサーバーを指定する必要があります。例えば、Google DNS サーバー (8.8.8.8) を使用して superuser.com の DNS レコードを照会するには、次のコマンドを実行します。

nslookup superuser.com 8.8.8.8

Google DNS サーバーは高速で信頼性が高いのでおすすめですが、どの DNS サーバーを使ってもかまいません。

今回、Google DNS サーバーから DNS レコードを取得しました。superuser.com は 4 つの異なる DNS サーバーを使ってトラフィックを処理しているので、2 つの代わりに 4 つの A レコードを取得しています。

これと同じ手法で、任意のDNSサーバーに問い合わせることができます。ドメイン名の後に、DNSサーバーのIPアドレスを指定します。

レコードタイプの指定

デフォルトでは、nslookupはドメインに対するすべてのA DNSレコードを返します。しかし、特定のレコードタイプのみを照会したい場合はどうしたらよいでしょうか。

たとえば、Webサイトにアクセスしようとしているのに、DNSサーバーがそのドメインのAレコードを見つけられないというエラーが発生するとします。この場合、nslookupを使用してAレコードを照会し、それが正しいIPアドレスを返しているかどうかを確認することができます。

特定のDNSレコードタイプを問い合わせるには、 -type オプションを使用します。このオプションは1つの引数を取り、それが問い合わせたいレコードのタイプになります。最も一般的なDNSレコードのタイプは以下のとおりです。

特定のレコードタイプを問い合わせるには、次の構文を使用します。

nslookup <ドメイン>  set type=

例えば、superuser.comの CNAME レコードを問い合わせるには、以下のコマンドを実行します。

nslookup superuser.com -type=cname

google.comのMXレコードを問い合わせるには、以下のコマンドを実行します。

nslookup google.com -type=mx

同様に、他のDNSレコードタイプも問い合わせることができます - コマンドで正しいレコードタイプを使用することだけを確認してください。

全てのDNSレコードタイプを問い合わせる

もし、あるドメインのすべてのDNSレコードタイプを問い合わせたい場合は、 -type=any オプションを使用する必要があります。これは、A、AAAA、CNAME、MXなどを含む、ドメインのすべてのレコードタイプを返します。

このオプションは、あるドメインのDNSレコードの全体像を把握したい場合に便利です。

例えば、google.comのすべてのDNSレコードを照会するには、次のコマンドを実行します。

nslookup -type=any superuser.com

以下のように、このコマンドはgoogle.comのすべてのDNSレコードを返します。

DNS逆引きの実行

ドメインに関する情報をDNSサーバーに問い合わせることに加えて、nslookupを使用してIPアドレスに関する情報をDNSサーバーに問い合わせることができます。これは、DNSの逆引きと呼ばれます。

あるサーバーのIPアドレスを持っていて、そのサーバーのホスト名を見つけたいとします。DNSの逆引きは、それを行うのに役立ちます。

DNSの逆引きを行うには、nslookupコマンドの後に、調べたいIPアドレスを指定して実行します。

例えば、IPアドレス “142.250.204.46 “のDNS逆引きを行うには、以下のコマンドを実行します。

nslookup 142.250.204.46

これはIPアドレス142.250.204.46を持つサーバーのホスト名を返します。

デバッグモードの有効化

上級ユーザーはDNSクエリに関するより多くの情報を得るために、nslookupのデバッグモードを有効にすることができます。このモードは、DNSの問題をトラブルシューティングしているときに、舞台裏で何が起こっているかを確認したい場合に便利です。

デバッグモードを有効にするには、-debug オプションを使用します。例えば、google.comのAレコードを照会し、デバッグモードを有効にするには、次のコマンドを実行します。

nslookup -debug google.com

このコマンドは、DNSクエリに関する多くの情報を返します。この情報はDNSの問題をトラブルシュートしようとするときに役に立ちます。

出力のファイルへのログ記録

nslookupの出力をファイルに記録すると便利なことがあります。このファイルを保存して、同僚のシステム管理者と共有することで、DNSの問題のトラブルシューティングを支援することができます。

nslookup の出力をファイルに保存するには、次の構文を使用します。

nslookup <ドメイン> > /path/to/file

例えば、google.comのすべてのA DNSレコードを照会して、出力を「google_dns_records.txt」というファイルに保存するには、次のコマンドを実行します。コマンドの出力をファイルにリダイレクトするには、> シンボルを使用します。

nslookup -debug google.com > google_dns_records.txt

以下の ls -la コマンドを実行して、ログファイルが作成されたことを確認します。

ls -la google_dns_records.txt

以下のように、ファイルが正常に作成されていることが確認できます。

ファイルの内容を表示するには、以下の cat コマンドを実行します。

cat google_dns_records.txt

以下のように、ログファイルにはgoogle.comのすべてのDNSレコードが含まれています。

インタラクティブモードの使用

この記事を通して、非対話モードで DNS サーバーに問い合わせるために、異なるオプションを持つ nslookup コマンドを使用してきました。

非対話型モードに加えて、nslookupには対話型モードもある。対話型モードでは、毎回 nslookup コマンド全体を入力しなくても、 DNS サーバーに問い合わせるために異なるコマンドを発行することができる。

一般的に、数回のDNSクエリーを発行するのであれば、非対話型モードが適しています。しかし、多くのDNSクエリーを発行する場合や、異なるnslookupオプションを実験したい場合は、対話型モードの方がより便利で論理的である場合がある。

インタラクティブモードに移行するには、以下のコマンドを実行します。

nslookup

プロンプトが以下のように > に変わります。これは、インタラクティブモードに入ったことを示します。

このチュートリアルで取り上げたすべての nslookup コマンドを、毎回 nslookup と入力することなく実行することができます。

対話型モードを終了するには、exitコマンドを実行します。

nslookup の使用についてもっと知りたい場合は、nslookup の man ページをチェックしてください。

nslookup vs. dig

nslookup と dig はどちらも DNS サーバーに問い合わせるための素晴らしいツールです。一般的に、どちらのツールも同じ結果を得ることができます。両方のツールを使ってクエリを実行し、その結果を比較することができます。これは、クエリの結果をクロスチェックするための素晴らしい方法です。

もし、どちらかのツールを選ばなければならない場合、nslookupは古いので、digを使うことをお勧めします。nslookupは1980年代初頭にリリースされましたが、開発者によってほとんど放棄されています。対照的に、digはまだ活発に開発されており、nslookupよりもdigの方が新機能やバグフィックスを見つけられる可能性が高いのです。

:“No Route to Host “接続エラーが表示される場合は、こちらで修正しています。

よくある質問

nslookup は DNS ですか?

いいえ。nslookupはドメインネームシステム(DNS)を照会するための ネットワーク管理ツールで、動作するにはDNSサーバーが動作している必要が あります。ただし、nslookupはDNS情報のソースとして「/etc/hosts」と呼ばれるファイルを使用することも可能です。

Linux で DNS の設定を確認するにはどうしたらいいですか?

Linuxでは”/etc/resolv.conf “というファイルがDNSの設定を保存しています。このファイルの内容を見るには、catコマンドを使用します。

nslookup を使用する際に “Can’t find server name…” というエラーに遭遇しました。どうすれば直せますか?

これは、nslookupの既知のバグです。回避策としては、ローカルの DNS サーバーを使用してクエリを実行することです。nslookup google.com` としてコマンドからカスタムDNSサーバーのIPアドレスパラメータを省略すれば、うまくいくはずです。

画像引用:Unsplash. すべてのスクリーンショットはNicholas Xuan Nguyenによるものです。

Akira
Akiraは情熱的なゲーマーであり、製品レビュアーです。ゲームをしていないときは、最新のゲーミングアクセサリーを試したり、製品のレビューをしていることが多い。彼の分かりやすいスタイルは、ゲーマーが自分のニーズに最も適した製品を簡単に判断できるようにするものです。また、技術的な問題にも精通しており、その解決方法も知っている。