・キャッシュについて
・確認方法について
(最終更新日 : 2020年12月6日)
独自ドメインを取得するとDNSへの登録が必要となります。
インターネット上のリソースにアクセスする場合は必ずIPアドレスが必要になります。
「独自ドメインほにゃららのIPアドレスはxxx.xxx.xxx.xxx(IPv4の場合)です」という情報を管理しているのがDNSになります。
一つの権威サーバーが全ての情報をもっているわけではありません。
ドメインの階層ごとにそれぞれの権威サーバーが情報を管理しています。
これをキャッシュと呼んでいます。
要求されたドメインの情報がキャッシュに存在する場合は権威サーバーへの問い合わせをせずにキャッシュの情報を返します。
DNSへの登録方法について詳細は割愛しますが、登録してすぐに反映されるわけではなく若干のタイムラグがあります。
また、前述のキャッシュの仕組みが、既存のドメインの情報を変更した際には悪い方向に働くこともあります。(キャッシュが切れるまでは古い情報を返し続けてしまう)
過去の経験上、数時間で反映されることが多いのですが場合によっては1日程度かかることもあるようです。
DNSについてはかなり難しいというのが個人的な印象です。
今回、幸いなことに記事についていくつがご指摘をいただいたので改めて勉強をしようと思っています。
反映されたかどうかの確認方法
Linux系OSやmacOSであればdigコマンド、Windowsであればnslookupコマンドを使うことでドメイン名とIPアドレスの紐付けを確認することが可能です。
ただし、不用意にコマンドを実行してしまうと「紐付けがない」という情報や変更前の情報がキャッシュされてしまう可能性があるため、下記の手順で順番に確認した方がよろしいかと思います。
-
TLD(Top Level Domain)の権威サーバー情報の取得
ルートサーバーに対して問い合わせを行います。
Linux系OS・macOSの場合
dig @{*.root-servers.net} {独自ドメイン名} +norecurse
Windowsの場合
nslookup -norecurse {独自ドメイン名} {*.root-servers.net}
いずれの場合も「*」にはa〜mのうちのいずれか一文字が入ります。(例 : d.root-servers.netなど)
また、norecurseオプションを付与して非再帰問い合わせをおこないます。 -
2LD(Second Level Domain)の権威サーバー情報の取得
1番のコマンドを実行することで次に問い合わせるべき権威サーバーの情報が表示されます。
表示された中のいずれかのIPアドレスもしくはドメインに対して問い合わせを行います。Linux系OS・macOSの場合
dig @{1番で表示されたIPアドレスもしくはサーバー名} {独自ドメイン名} +norecurse
Windowsの場合
nslookup -norecurse {独自ドメイン名} {1番で表示されたIPアドレスもしくはサーバー名}
こちらもnorecurseオプションを付与して非再帰問い合わせを行います。
-
委譲/委任先のDNSサーバーに対しての問い合わせ
2番のコマンドを実行することで更なる委譲/委任先の権威サーバーの情報が表示されるのではないかと思います。
その権威サーバーに対して問い合わせを行います。Linux系OS・macOSの場合
dig @{2番で表示されたIPアドレスもしくはサーバー名} {独自ドメイン名} +norecurse
Windowsの場合
nslookup -norecurse {独自ドメイン名} {2番で表示されたIPアドレスもしくはサーバー名}
こちらにもnorecurseオプションを付与して非再帰問い合わせを行います。
正常に反映していればホスティング業者から発行されたIPアドレスと独自ドメイン名が紐付いていることが確認できると思います。 -
デフォルトDNSサーバーに対しての問い合わせ
デフォルトDNSサーバーが何になっているかは環境によって違います。
3番のコマンドを実行して紐付けが確認できていればいったんは大丈夫だと思いますが、紐付けの確認が取れなかった場合に問い合わせを行うと前述の通り、誤った情報でキャッシュされてしまう可能性があるのでお気を付けください。Linux系OS・macOSの場合
dig {独自ドメイン名}
Windowsの場合
nslookup {独自ドメイン名}
私が以前試したときはこの結果がしばらく古いままでした。
ホスティング業者のDNSサーバーには新しいものが登録されていたのでこちら側で持っている何かが更新されなかったのか、どこかのキャッシュが古い情報を返してきていたのだと思います。
最終的には時間経過でキャッシュが切れて新しい情報に更新されたようで、その後は正しい情報が返ってくるようになりました。
まとめ
仕組み的にリアルタイムでサクサクと反映されるようなものではありませんのでひとまず様子を見ることが重要だと思います。
また新規ドメインの場合はいいのですが、既存ドメインの変更の場合、一時的ではありますが本来一対一で紐づくべきドメインとIPアドレスの情報が複数存在する時間が存在します。
この隙きに悪さをする輩もいるようなので既存ドメインの情報変更は慎重に行う必要があります。
十分お気をつけください。
尚、これ以外にもドメインに関してはいろいろとノウハウがあるようです。
この記事だけではなく、その他のサイトなどもご覧になった上で慎重に作業をされることをオススメします。
コメント
コメント一覧 (6件)
先に権威サーバに問い合わせるべきですね。権威サーバに登録される前からキャッシュサーバに問い合わせるとネガティヴキャッシュ、あるいは古いデータのキャッシュを突っ込むことになります。
浸透いうな 様
コメントありがとうございます。
ご指摘ありがとうございます。
仰るとおり、上流から確認を進めないとマズい状況になりそうですね。
改めて記事を編集したいと思います。
ありがとうございました。
> 上位のDNSサーバーが一定時間情報を保持していて、必要に応じてその情報を返す(=下位に問い合わせをしない)仕組みがあり、これをキャッシュと呼んでいます。
上位のDNSサーバーってキャッシュするんですか?
あらしくん 様
コメントありがとうございます。
ご指摘ありがとうございます。
申し訳ありません。
上位と下位を取り違えておりました。
キャッシュするのは下位でした。
記事を修正いたします。
失礼いたしました。
上位と下位の位置づけに、なんというか不自然さを感じました。
リゾルバが下位ってことは、権威サーバーからずっとたどっていくと最終的に「リゾルバ」が名前解決の応答を行う、と言うことになると思うのですが、それだとキャッシュをすることと名前解決の応答をすることは同じ意味になるのでしょうか?
あらしくん 様
コメントありがとうございます。
ご指摘ありがとうございます。
仰るとおり、上位と下位という言葉が不適切に思いますので修正いたします。
ユーザーがリゾルバに対して名前解決を依頼すると、リゾルバが権威サーバーに問い合わせて名前解決をし、結果をユーザーに返すというふうに理解しております。
キャッシュをするかどうかはリゾルバの設定などによる気がしますので同じ意味ではないと思っております。
(DNSサーバーの設定をしたことがなく憶測が入ってしまってすみません)