こんにちは!NOC(ネットワークオペレーションセンター)のシニアエンジニア兼、技術メディア主筆の「タカさん」です。
データセンターの冷たい風と、何百台ものサーバーが放つ排熱の匂いに囲まれて四半世紀。これまで数え切れないほどのネットワーク障害を解決してきました。そんな私が、トラブル対応の現場で今でも毎日のように使い、そして新人エンジニアが入社したときに一番最初に教えるコマンドがあります。
それが、今回ご紹介するnslookup(エヌエス・ルックアップ)です。
「DNSとか、レコードとか、なんだか難しそう……」と感じているあなたも大丈夫。この記事を読み終える頃には、パケットの裏側にある「インターネットの住所録」が手に取るように見えてくるはずです。一歩ずつ、私と一緒に楽しく理解していきましょう!
—
1. DNSってなに? 郵便配達に例えて考えてみよう
ネットワークの世界を理解する一番の近道は、私たちの「現実世界」に例えてみることです。
インターネットという巨大な街を想像してください。そこには、星の数ほどの「家(サーバー)」が建っています。
- IPアドレス(例:
192.0.2.1):これは、GPSの「緯度・経度」のようなものです。正確ですが、人間が「ちょっと緯度35.658, 東経139.745の家に行ってきて!」と言われても、どこのことか分かりませんよね。 - ドメイン名(例:
example.com):これは「東京タワー」のような、人間にとって分かりやすい「名前(住所)」です。
人間はドメイン名でアクセスしたいけれど、コンピューターはIPアドレスという数字の羅列しか理解できません。
そこで登場するのが、街の「案内所」であるDNS(Domain Name System)サーバーです。
そして、その案内所に行って「すみません、example.comって場所の緯度・経度(IPアドレス)を教えてください!」と尋ねるための道具が、今回主役となるnslookupコマンドなのです。
—
2. これだけは覚えたい! 4つの「DNSレコード」
DNS案内所には、様々な種類の情報(これをDNSレコードと呼びます)が保管されています。まずは、実務で最もよく使う4つのレコードを、身の回りのものに例えて整理しましょう。
| レコード名 | 読み方 | 役割(現実世界での例え) |
| :— | :— | :— |
| A | エー | ドメイン名をIPv4アドレス(普通の住所)に変換する基本のレコード。 |
| AAAA | クアッド・エー | ドメイン名をIPv6アドレス(近未来の、より広い新しい住所)に変換するレコード。 |
| MX | エムエックス | メールの宛先サーバー(郵便受け・メールボックス)の場所を示すレコード。 |
| CNAME | シーネーム | ドメイン名の「あだ名(別名)」。別のドメイン名に転送するためのレコード。 |
「メールが届かない!」というトラブルならMXレコードを調べますし、「Webサイトが表示されない!」ならAレコードを調べます。これらはトラブルシューティングの基本中の基本になります。
—
3. nslookupを使ってみよう!【一問一答モード】
それでは実際に、コマンドを叩いてみましょう!
お使いのパソコン(Windowsなら「コマンドプロンプト」、MacやLinuxなら「ターミナル」)を開いて、以下のコマンドを入力してみてください。
まずは一番シンプルな「一問一答モード(非対話モード)」です。コマンドの後ろに、調べたいドメイン名を直接書きます。
# google.com のIPアドレスを調べてみましょう!
nslookup google.com
コマンドを実行すると、画面に以下のような結果が返ってきます。
サーバー: Unspecified-DNS-Server
Address: 192.168.1.1 # あなたのパソコンが普段使っているDNSサーバーのIPアドレスです
権限のない回答: # 「私はこのドメインの公式管理人ではないけれど、キャッシュ(一時保存データ)から答えるよ」という意味です
名前: google.com
Addresses: 2404:6800:4004:821::200e # これが google.com の IPv6アドレス(AAAAレコード)です
142.250.196.142 # これが google.com の IPv4アドレス(Aレコード)です
コツ:『権限のない回答』って怪しいの?
初めてこの文字を見ると「えっ、エラー?」と不安になりますよね。でも安心してください。これは正常な動作です。
インターネット上の本物のDNS管理人(コンテンツDNSサーバー)に直接聞きに行ったのではなく、あなたの身近にあるDNS案内所(キャッシュDNSサーバー)が「前に調べたデータが手元に残っているから、これでいい?」と教えてくれたことを意味しています。
—
4. DNSと直接会話する!【対話型モード】
「Aレコードだけじゃなくて、MXレコード(メールの宛先)も調べたいな」
「別のDNSサーバーにも聞いてみたいな」
そんなときに大活躍するのが、DNSサーバーと1対1でおしゃべりするように情報を引き出す「対話型モード」です。
使い方はとても簡単。引数(ドメイン名など)を何もつけずに、ただ nslookup とだけ打ってEnterキーを押します。
# 対話型モードに入ります
nslookup
すると、画面の端っこに > という記号が表示されて、入力待ちの状態になります。これが「対話型モード」に入ったサインです!
ここで、以下のように入力してみましょう。
> set type=mx # 「これからMXレコード(メール宛先)を調べたいです!」と宣言します
> yahoo.co.jp # 調べたいドメイン名を入力します
すると、以下のような結果が返ってきます。
サーバー: Unspecified-DNS-Server
Address: 192.168.1.1
権限のない回答:
yahoo.co.jp MX preference = 10, mail exchanger = mta-v1.mail.vip.co.jp
見事に yahoo.co.jp 宛てのメールが、どのメールサーバー(mta-v1.mail.vip.co.jp)に運ばれるかが分かりましたね!
対話型モードの終了方法
おしゃべりを終えて元のコマンドラインに戻りたいときは、 exit と入力してEnterキーを押すか、キーボードの Ctrl + C を押せばいつでも戻れます。
> exit # 対話型モードを終了して元の画面に戻ります
—
5. 現場直伝! トラブルを解決する実践テクニック
私たちインフラエンジニアが、障害対応の現場で実際に使っている強力なテクニックを1つご紹介します。それは「問い合わせ先DNSサーバーの強制切り替え」です。
「自社の社内DNSサーバーの設定を変更したけれど、世界中に届いているかな?」
「Googleが提供している一般公開用のDNS(8.8.8.8)からは、うちのサイトはどう見えているだろう?」
そんなときは、対話型モードの中で server コマンドを使って、聞きに行く相手を瞬時に切り替えることができます。
# 1. まずは対話型モードに入ります
nslookup
# 2. 問い合わせ先のDNSサーバーを、GoogleのパブリックDNS「8.8.8.8」に変更します
> server 8.8.8.8
既定のサーバー: [8.8.8.8]
Address: 8.8.8.8
# 3. 調べたいレコードの種類を CNAME(別名)に指定します
> set type=cname
# 4. ドメイン名を入力します
> www.yahoo.co.jp
# 5. 結果が表示されます
www.yahoo.co.jp canonical name = edge13.g.yimg.jp.
GoogleのDNSサーバー(8.8.8.8)に直接聞いた結果、 www.yahoo.co.jp の本名(正式なドメイン名)は edge13.g.yimg.jp であることが一発で判明しました!
このように、問い合わせ先を「社内のサーバー」や「世界中の公開サーバー」に切り替えることで、「どこで名前解決のトラブルが起きているのか」をピンポイントで特定することができるのです。
—
6. まとめ:レガシーだけど、今でも最強の相棒
技術の世界では、時おり「nslookupは古いコマンド(レガシー)だから、これからはdigコマンドを使うべきだ」と言われることがあります。
確かに、出力される情報の詳細さではdigコマンドに軍配が上がります。しかし、nslookupには「WindowsでもMacでもLinuxでも、特別な準備なしに最初から必ず入っている」という、圧倒的な強みがあります。
深夜のデータセンターで、手元のPCがWindowsしか使えない極限状態の障害対応において、この「いつでもどこでも使える」という安心感は、何物にも代えがたいものです。
まずは今日、あなたの好きなWebサイトのドメインを nslookup で覗いてみてください。インターネットの裏側で、健気に働くDNSサーバーたちの鼓動が聞こえてくるはずです。
ネットワークエンジニアへの第一歩、素晴らしいスタートを切りましたね。これからも一歩ずつ、一緒に学んでいきましょう!
コメント