DynamicDNSはすぐにどのように機能しますか?


16

DNSのコア機能の私の理解は、ドメイン名(例blah-whatever.com)とIPアドレス(例100.2.3.4)の間にネーミング/マッピングサービスを提供することです。

さらに、インターネットDNSサーバーがどのように機能するかについての私の理解は、ドメイン/ IPマッピングレコードが変更された場合(たとえば、blah-whatever.com現在の105.2.3.4を指すように変更した場合など)、この変更は世界中のすべてのDNSサーバーに伝達される必要があるということです変更が「完全」であると言うことができる前に。この伝播期間は最大24時間続くことがあります。

そもそも、これまでに言ったことが間違っているか間違っている場合は、まず修正してください!

多かれ少なかれ正しいと仮定すると、CloudFlareやDynamicDNSのような企業がDNSレコードを変更する「インスタントロールオーバー」タイプのサービスを提供する方法を理解していません- ブーム -変更はすぐに反映されます。

この瞬間的なロールオーバー機能で役割を果たす「TTL」(存続時間、私は推定!??)と呼ばれるものがあることを理解していますが、何から始まるのかを理解するのは難しいので、このTTLは、またはそれが提供する目的です。

だから私は尋ねる:ダイナミックDNSとその競合他社がDNSマッピングを即座に(他の人のようにDNSの変更を伝播するのに24時間かかることなく)変更できるのは何ですか?また、TTLはこのプロセスにどのように適合しますか?前もって感謝します。

回答:


3

DNSの変更がどのように伝播されるかについていくつかの誤解があったため、以前の回答には誤った情報が含まれていました。そこで、2回目の試行を行います。詳細な説明については、Alex answerを読むことをお勧めします。

私の理解では、DNSの変更が伝播する速さには2つの要因が関係しています。

  1. ゾーンに対して権限を持つDNSサーバー間のゾーン転送。
  2. そのゾーンの単一レコードに設定されたTTL。

ゾーン転送

ゾーンを管理するために2つの異なるネームサーバーが必要な場合、これらのサーバーでそのゾーンの最新バージョンをすぐに利用できるようにする必要があります。

これは、一定の間隔でゾーンの最新バージョンをプルするか、承認されたネームサーバーからのNOTIFYを待機することで実現されます。

このメカニズムは、ネームサーバーを実行するユーザーの完全な制御下にあるため、この領域の遅延は完全に制御できます。

TTL

TTLは、ゾーン内のすべての単一のリソースレコードに指定されたタイムアウトです。この値は、権限のないDNSプロバイダーがレコードをキャッシュする期間を定義します。

この値は、既存のレコードが変更された場合にのみ作用することに注意してください。新しいレコードはまだキャッシュできません。

TTLもゾーンを制御する人の完全な制御下にあるため、遅延も完全に制御できます。


ありがとう@Oliver(+1)-「インスタントロールオーバー」は都市伝説のようですね。私のフォローアップの質問は、DNSレコードを自分で編集するだけではどうでしょうか?特定のイベントが発生したときにDNSの変更を自動化できるように、これらの企業がAPIを提供しているからでしょうか?私は彼らがそもそもどんな目的に役立つのかを探していると思います!
-pnongrata

1
@zharvey:もちろん、独自のDNSサーバーを実行して、自分でゾーンを直接編集できます。ただし、ゾーンがルートサーバーに受け入れられることを許可する少なくとも2つの異なるDNSサーバーを提供する必要があります。通常、人々はそのようなインフラストラクチャを利用できません。
デアホッホステープラー

1
DNSレコードは自分で編集できます。(異なるサブネットで)ネームサーバーのペアを実行するだけです。しかし、DynDNSはそれを機能させ、比較的簡単な更新を可能にします。基本的に、あなたはいくつかの仕事をアウトソーシングしています。
ヘネス

@zharveyはもちろん「インスタントロールオーバー」を行うことができます。あなたが文字通りそれを意味するのであれば、両方のマシンにIPを切り替えさせてください(常に可能とは限りません)。それ以外は、常に一定の遅延が発生します。通常、サービスを別のサーバーに移動する場合、管理者はTTLを事前に変更します(たとえば、1時間などに下げます)。そのため、変更が発生した場合、遅延は最小限になります。完了したら、TTLを再び(たとえば24時間以上に)増やして、DNSクエリでのキャッシュの改善と応答の高速化を可能にします。ただし、通常はDynDNSを使用しません;)
Izzy

2
失礼で申し訳ありませんが、この答えはほとんどすべての点で間違っています。
アレックス

18

あなたはいくつかの誤解を持っているので、私は全体のプロセスを説明しようとします。(パブリックダイナミックDNSサービスの運用に関わっているので、私は詳細に精通しています)。

ドメインがexample.comで、example.comドメインが動的DNS会社でホストされているとしましょう。これをlightfastdns.net(架空名)と呼びましょう。ドメインにはDNSレコード-somehost.example.comが含まれており、現在1.1.1.1を指します。

  1. DNSレコードに変更を加えると、この変更は最初に、lightfastdns.net(例:updates.lightfastdns.net)が運営する中間サーバーに送信されます。これは、ほぼ瞬時に(秒単位で)発生します。Webインターフェース、動的更新クライアント、またはAPIを使用して、更新を送信できます。それは重要ではありません。いずれにしても、この更新はDNS更新を処理するサーバーに届きます。

  2. この更新サーバーは、更新されたレコード(たとえば、1.2.3.4)をドメインの「マスター」DNSサーバーにプッシュします。このDNSサーバーはlightfastdns.netでも運用されています。それがどれほど速く起こるか:DNSプロバイダーがソフトウェアをどのように設計したかに依存します。(それは即座にすることができ、24時間ごとにすることができます。例gandi.netプッシュDNSの更新については1時間に1回。)もちろん、私たちのlightfastdns.netは即座にそれを行います。

  3. このマスター DNSサーバーは、example.comドメインのスレーブ DNSサーバーに更新をプッシュします。このサーバーも同じlightfastdns.net会社によって運営されています。これがどれほど速いか:最新のソフトウェアでは、マスターはすぐにスレーブに NOTIFYメッセージを送信し、マスターから更新されたレコードを即座に取得します。古いソフトウェアでは、SOAレコードにREFRESHとRETRYの値がありましたが、今日ではほとんど関係ありません。もちろん、lightfastdns.netはNOTIFYを実装し、更新は即座に伝播します。

現在、ドメインのすべての「権限のある」サーバーが更新されたレコード(1.2.3.4)を受信しています。lightfastdns.netそれは2秒程度かかりました。

  1. 次に、ロシアのイヴァンの家に移動します。イヴァンは、ブラウザで「somehost.example.com」を開きたいと考えています。彼が以前にそれを開かなかった場合、彼のブラウザはアドレスを知らないので、ブラウザは彼のオペレーティングシステムに尋ねます。しかし、彼が最近サイトにアクセスした場合、アドレスはまだブラウザ内に保存されている可能性があり、古い(廃止された)アドレスを使用します!どれだけの時間 ?-ブラウザによって異なりますが、たとえばGoogle ChromeはDNSレコードを最大60秒間しか保存しません。最大60秒の遅延があります。この事実のために、DNSの変更はまだこのブラウザに伝播していなかったと思います。

  2. いずれにせよ、60秒後、またはすぐに、ブラウザーは最終的にオペレーティングシステムにアドレスの取得を要求します。オペレーティングシステムはすでに(古い、時代遅れの)答えを知っていて、それを返すかもしれません。この場合、新しいレコードはまだIvanのOSに伝播していなかったと思います。OSが古い値を保存する期間-これはTTLパラメーターによって制御される最新のオペレーティングシステムです。DNSのTTLは、レコードがキャッシュに保存される期間を定義します。私たちのlightfastdns.netは、非常に低いTTL(30秒)の使用を許可していたため、これまでのところ、最大で30秒(全体では90秒)の新しい遅延がありました。

  3. OSが回答を知らない場合、または知っている回答がTTLで古くなっている場合、OSはDNSリゾルバーに問い合わせます(IvanのISPはDNSリゾルバーdns.moscow-telecom.ruを割り当てました)。ここでは、古いレコードがTTL秒までキャッシュされるか、dns.moscow-telecom.ruがアドレスを認識しない場合があります。dns.moscow-telecom.ruもTTL値以下でDNSをキャッシュするため、さらに30秒取得し ます。我々は持っている120秒の遅延を。それが、新しいDNSレコードがモスクワテレコムの DNSサーバーにまだ伝播されていなかったということです。

  4. ISPのDNSサーバーが回答を知らない場合、またはTTLの有効期限が切れているために知っている回答が既に廃止されている場合-dns.moscow-telecom.ruは、example.netのAUTHORITATIVE DNSサーバーの1つに問い合わせます(覚えていますか?)。それらは約118秒前に変更を取得し、新しい回答を返します。この回答はチェーンによってDNSリゾルバ、OS、およびIvanのブラウザにすぐに送信されます。

したがって、さまざまなキャッシュの状態に応じて、レコードの伝播には2〜120秒かかりました。TTLが長い-遅延が長くなる場合があります。

完全にするために- 一部の ISPは標準に違反し、長時間レコードをキャッシュします。古いOSの中には、長い間古いレコードを保持しているものや、古いブラウザーもあります。しかし、ほとんどのユーザーにとっては期待どおりに機能します。


この冗長な結果が出たことを非常に残念に思います。たぶん誰かが(別の答えとして)もっと短いバリアントを作りたいと思うかもしれません-どういたしまして。
アレックス

@zharvey実際に、動的と非動的の違いは何ですかと尋ねました。それは、ステップ(2)と(3)を処理する速度と、設定できるTTLの低さです。
アレックス

3

いいえ。変更は世界中のすべてのDNSサーバーに伝播する必要ありませ

何かを変更し、誰かがDNSサーバー上の変更されたレコードを照会すると、結果は即座に現れます。

問題は、以前にこの名前を照会し、キャッシュされた場合です。その後、キャッシュが期限切れになるまで古いIPを取得します。DNSでは、古いクエリの有効期間を設定でき、その期間は多くの場合数日に設定されます。DynDNSの場合、通常は低く設定されますが、すべてのDNSリゾルバーがそれを尊重するわけではありません。


ありがとう@Hennes(+1)-オリバーの答えの下に私の質問を見てください-私はあなたのために同じ質問を持っています!
-pnongrata
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.