本文へスキップ
BecomeCoder

ネットワークコース · 第3章 つながりを確かめる · レッスン12

DNS ― 名前からIPアドレスを引く

ブラウザで完結

導入

私たちは 93.184.216.34 ではなく example.com という名前でサーバーにアクセスします。でもコンピュータが実際に通信するには IP アドレスが必要でした。この「名前 → IPアドレス」の変換を担うのが DNS(Domain Name System)。インターネットの電話帳です。

説明

ブラウザに example.com と入れると、通信の前に必ず「その名前の IP アドレスは?」を DNS に問い合わせます。この流れを図にするとこうです。

sequenceDiagram
    participant あなた as あなた/サーバー
    participant DNS as DNSサーバー(電話帳)
    participant Web as Webサーバー
    あなた->>DNS: example.com のIPは?
    DNS-->>あなた: 93.184.216.34 です
    あなた->>Web: 93.184.216.34 に接続(HTTP)
    Web-->>あなた: ページを返す

この「名前を引く」作業を、手で確かめられるのが dig です。

dig example.com

ANSWER SECTION の行に注目してください。example.com. ... A 93.184.216.34 とあり、「example.com の A レコード(IPv4アドレス)は 93.184.216.34」だと分かります。結果の IP だけをサッと見たいなら +short を付けます。

dig +short example.com

同じことは nslookuphost でもできます。nslookup は対話型の定番、host はいちばん簡潔です。

nslookup example.com
host github.com

存在しない名前を引くと NXDOMAIN(そんな名前は無い)と返ります。前のレッスンで ping example.com が「名前を解決できない」と出た仕組みも、これでつながります——DNS で住所が分からなければ、そもそも通信は始められないのです。

dig nope.invalid

Web サイトが開けないとき、「サーバーが落ちている」のか「DNS が引けていない(名前解決の失敗)」のかは、原因がまったく違います。dig で名前が引けるかを確かめるのは、切り分けの重要な一手です。DNS は第2章で学んだポートでいうと 53番 を使います。

やってみよう

dig example.comANSWER SECTION に IP が出ることを確認し、dig +short example.com で結果だけを取り出しましょう。nslookup example.comhost github.com でも名前が引けること、dig nope.invalid では NXDOMAIN になることも見てください。

演習

example.com の IP アドレスを、DNS に問い合わせて調べてください(結果全体が出る基本の形で構いません)。

ヒント1を見る

名前からIPを引くコマンドは dig 名前 です。

ヒント2を見る

dig example.com。結果だけなら dig +short example.com

実際に動かしてみよう

本文のサンプルや演習のコードは、コードブロック右上の「コピー」ボタンでコピーして、下のエディタに貼り付ければそのまま実行できます。

Linux シェル(シミュレート)

ブラウザ内でコマンドを試せる仮想シェルを読み込みます(本物のLinuxカーネルではなく学習用の再現です)。
スクロールして表示された時点でも自動で読み込まれます。