導入
私たちは 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
同じことは nslookup や host でもできます。nslookup は対話型の定番、host はいちばん簡潔です。
nslookup example.com
host github.com
存在しない名前を引くと NXDOMAIN(そんな名前は無い)と返ります。前のレッスンで ping example.com が「名前を解決できない」と出た仕組みも、これでつながります——DNS で住所が分からなければ、そもそも通信は始められないのです。
dig nope.invalid
Web サイトが開けないとき、「サーバーが落ちている」のか「DNS が引けていない(名前解決の失敗)」のかは、原因がまったく違います。
digで名前が引けるかを確かめるのは、切り分けの重要な一手です。DNS は第2章で学んだポートでいうと 53番 を使います。
やってみよう
dig example.com で ANSWER SECTION に IP が出ることを確認し、dig +short example.com で結果だけを取り出しましょう。nslookup example.com・host github.com でも名前が引けること、dig nope.invalid では NXDOMAIN になることも見てください。
演習
example.com の IP アドレスを、DNS に問い合わせて調べてください(結果全体が出る基本の形で構いません)。
ヒント1を見る
名前からIPを引くコマンドは dig 名前 です。
ヒント2を見る
dig example.com。結果だけなら dig +short example.com。