DNSとは何か|nslookupを打ったら、自分のサイトの住所が数字で返ってきた
autocamp.websiteと打ち込むたびに、その裏でドメイン名をIPアドレスへ変換するDNSという仕組みが動いていた。
nslookupを実際に打って、自分のサイトの住所とキャッシュの有効期限を調べてみた。
毎日「autocamp.website」と打ち込んでこのサイトを開いているけれど、僕は今までその裏側で何が起きているか、ちゃんと考えたことがなかった。
きっかけは、以前このブログで書いたwwwありなしを統一した話だった。
あのとき設定を切り替えたのに、しばらく古い表示が残っていた記憶がある。
あれが何だったのか、今さらだけど自分のサイトで実際に確かめてみることにした。
ドメインは「名前」で、実体は数字の住所
「autocamp.website」はあくまで人間が読むための名前で、コンピューター同士が通信するときはIPアドレスという数字の並びを使っている。
この名前を数字へ変換する仕組みが、DNS(Domain Name System)だ。
言葉だけではピンと来なかったので、自分のパソコンから実際にnslookupというコマンドを打ってみた。
nslookup autocamp.website
返ってきたのは、こんな結果だった。
名前: autocamp.website
Address: 162.43.120.169
「autocamp.website」の正体は、162.43.120.169という数字だった。
ブラウザは僕が住所を打つたびに、この変換をこっそりやってくれていたわけだ。
同じ数字が、契約しているサーバーの名前にも出てきた
ためしに、このサイトを置いているXserverのホスト名でも同じコマンドを打ってみた。
nslookup sv14168.xserver.jp
結果は、さっきと同じ162.43.120.169だった。
「autocamp.website」も「sv14168.xserver.jp」も、指している先は同じ1台のサーバーだった。
ドメインは、その1台のサーバーに貼られた表札のようなもので、貼り替えても中身の建物(サーバー本体)は変わらないんだな、というのが最初の発見だった。
「1時間だけ覚えておいて」という数字が付いていた
もう少し詳しく調べると、DNSの答えには有効期限のようなものが付いていることが分かった。TTL(Time To Live)という値で、この情報をキャッシュしておいていい秒数を表している。
デバッグ用のオプションを付けて、実際の値を確認してみた。
ttl = 3595 (59 mins 55 secs)
3600秒、つまり1時間だった。
一度autocamp.website宛の問い合わせに答えたDNSサーバーやプロバイダは、この答えを1時間だけ覚えておいて、その間は同じ答えを使い回していい、ということらしい。
ここで、以前のwww統一作業の記憶とつながった。
設定を切り替えた直後、ブラウザやプロバイダ側がまだ古い答えをキャッシュしていたなら、TTLの残り時間だけ古い状態が見え続けても不思議はない。
あのとき感じた「なかなか切り替わらない」は、故障でも設定ミスでもなく、TTLという仕組みが正しく働いていた結果だったんだと、今になって納得した。
電話帳を配っている「係」も、1台ではなかった
DNSの答えを持っているサーバーがどこにあるのかも調べてみた。
nslookup -type=NS autocamp.website
返ってきたのは、ns1からns5まで5台のネームサーバーだった。
どの1台に聞いても同じ答えが返ってくるように、答え係が複数台に分散されている。
もし1台が止まっても、残りの4台が答え続けてくれる仕組みだ。
サイトが表示されなくなる事故を疑うとき、自分のサーバーだけでなく、この「電話帳係」の方が落ちている可能性も候補に入れておいた方がいいんだな、と分かった。
名前を数字に変換しているだけなのに、影響範囲は大きい
調べて分かったのは、DNSは「ドメイン名からIPアドレスを教えてくれるだけ」の、実はとてもシンプルな仕組みだということだった。
ただしその答えには1時間という有効期限が付いていて、答え係自体も複数台に分かれている。
このキャッシュとTTLの存在を知らないまま設定変更をしていたら、僕はきっと「切り替えたのに反映されない」ともう一度焦っていたと思う。
ドメインの設定やサーバー移転を触るときは、変更前にそのレコードのTTLがどれくらいかを確認しておく。
それだけで、切り替え後にどれくらい待てばいいのか、あらかじめ見当が付くようになった。
ほかにも書いています
note・スタンプ※noteは運営者が個人で書いているものです。
