完全に理解するにはDNSの仕組みそのもについての正確な知識が必要です。
まず、単にレコードを変更する場合についてです。あるAレコードのIPアドレスを別のIPアドレスに変更する場合、世界中にある全ての機器が新しいレコードを参照するようになるには、古いレコードに設定されていたTTLだけの時間が必要です。なぜなら、TTLの時間だけ、組織内のDNSキャッシュサーバーやDNSを参照するあらゆる端末がキャッシュとして保持するからです。もし、レコード変更する直前にDNSを取得した端末があった場合、その端末がキャッシュを使わずに再度問い合わせするのはTTL時間後です。だから、TTLの時間が過ぎないと、世界中にある全ての機器が新しいレコードを参照するとは言えないのです。
さて、DNSサーバー自体の変更、つまり、NSレコードの変更の場合、自体はもっと複雑です。実際のレコードまで同時に変更するとなると、もっと多くの事を考慮する必要があります。まず、NSレコード自体の反映が終わらないと、全てのDNSキャッシュサーバーが新しいDNSサーバーに問い合わせを行うとは限らないという問題がおきます。それから、新しいDNSサーバーのレコードが再度TTL時間分だけ反映されます。また、ドメインのNSレコードの変更というのは、かなり負荷が大きい処理です。たとえば、"teratail.com"のNSレコードを変更する場合、gTLDのDNSサーバーへの変更になるのですが、このgTLDのDNSサーバーは非常に大きく、たくさん存在します。レジストラへ依頼しても、レジストラからgTLDのDNSサーバーへ設定変更以来、そして、設定変更後に、全てのgTLDのDNSサーバーへの浸透もそれなりにかかると予想されます。
teratail.comのNSレコードを変更し、新しいDNSサーバーで新しいAレコードを見せるといった場合を考えましょう。
- gTLDレジストラにNSレコードの変更を依頼します。
- (数時間から数時間後)gTLDレジストラはgTLDのDNSサーバーに変更を依頼します。
- gTLDのプライマリDNSサーバーでteratail.comのNSレコードが変更されます。なお、AレコードのTTLは2日間です。
- (さらに数秒から数時間後)gTLDのセカンダリDNSサーバーにteratail.comのNSレコードが反映されます。(gTLDのDNSサーバーはかなり巨大なため、どれぐらいで同期されるか不明です)
- (さらに2日後)全世界のDNSキャッシュサーバーはteratail.comの新しいNSレコードを取得するようになります。この時初めて、あらゆるDNSキャッシュサーバーが新しいDNSサーバーを見に行って、新しいAレコードを所得します。なお、AレコードのTTLは100秒です。
- (さらに100秒後)全世界の端末が新しいteratail.comのAレコードを持つことになります。
レジストラへの依頼からトップドメインのDNSサーバーへどれだけ早く変更が反映されるかはレジストラやドメインによって異なると思われるため、一概にはいません。しかし、NSレコードは、基本的に長めにTTLが設定されているため、一緒に変更する場合はそれなりに変更時間が必要になります。
その他、Aレコードなどに設定しているTTLは場合によって異なるのでちゃんと計算する必要があります。トップドメインDNSサーバーへの設定さえ終わっていれば、世界中に反映するまでどれぐらいかかるかはちゃんと計算できます。運などと言う要素はありません。
通常、NSレコードを変更する場合、旧DNSサーバーと新DNSサーバーで同じレコードを持つようにします(可能であればゾーン転送します)。その場合は、どちらのDNSサーバーを見に行っても同じなので、NSレコードの反映時間は気にする必要は無くなります。少なくとも、私はそのような方法でしかNSレコードの変更をしたことはありませんので、上のことは間違っているかも知れません。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/12/11 09:53
2020/12/11 10:03
2020/12/11 10:06