web-dev-qa-db-ja.com

DNSレコードがインターネットに伝播しないのはなぜですか?

ドメインのネームサーバーをネットワーク上で実行します。 bind/namedを使用します。ドメインexample.comを呼び出します。最近気付いたことの1つは、 http://network-tools.com のようなWebサイトにアクセスし、ネームサーバーで定義されたURLでクエリを実行すると、すぐに変更が表示されることです。

たとえば、DNSサーバーにURLfunny.example.comのエントリを追加し、そのURLを http:// network-tools .com 、適切な外部静的IPがすぐに表示されます。

これは、example.comに関連するDNSリクエストが毎回直接DNSサーバーに送信されることを示しています。

私の疑いは、私たちのDNSサーバーが非常に短い期間ダウンした週の初めに確認されました。そして、その期間中に http://network-tools.com を使用してexample.comまたはそのサブドメインのいずれかをクエリした場合、結果はゼロです。 DNSサーバーがダウンしていて、到達できなかったためです。

だから私は私の質問に連れて行きます。 DNSサーバーへの変更がインターネット上で他のDNSサーバーに伝播するはずだと思いました。このように、DNSが一時的にダウンしても、インターネット上の他のサーバーは、IPアドレスexample.comが指しているものをまだ認識しています。

このDNSについて誤解していますか?私たちのようなサードパーティが制御するDNSサーバーは、DNS情報をネット上の他のサーバーに伝播することを許可されていませんか?

なぜ変更が反映されないのかについて、どこから調査を開始すればよいですか?ファイアウォールで、ポート53トラフィックがDNSサーバーに適切に送信されていることがわかります。

[〜#〜]更新[〜#〜]

  1. DNS設定を即座に公開することは不可能だと言っているのはわかっていますが、知っているのはこれだけです。DNSサーバーでDNSを変更し、すぐに確認した場合 http:// network-tools.com 、変更がすぐにわかります。

  2. DNSサーバーをオフにしてから、 http://network-tools.com を使用してURLを確認しようとすると、サイトはURLを見つけることができません。しかし、DNSサーバーをオンラインに戻すと、突然 http://network-tools.com が再びURLを見つけることができます...これは、サーバーがDNS設定をキャッシュしていないことを示しています。私が間違っている?また、現在のTTL設定は900(15分)に設定されており、DNSサーバーは1年以上稼働しています。したがって、インターネット上のDNSサーバーとは異なります。 TTLが現時点で非常に低いため、サーバーが設定をキャッシュしていないのはなぜですか?それが理由である場合、それはある程度意味があります。

23
Jake Wilson

はい、DNSの仕組みを誤解しています。ここではいくつかの強調を使用しますが、意図されていないので気を悪くしないでください。

DNSレコードは伝播されません。キャッシュされます。

そうは言っても、ここで何が起こるかを簡単に説明します:

  1. 新しいDNSレコードを作成します(A、CNAMEなど)

  2. リモートユーザー(具体的には、ユーザーによって起動されたプロセス\アプリケーション)が、そのDNSレコードを介してアクセスされるサービス(たとえば、funny.example.comで実行されているWebサイトにアクセスしようとしているWebブラウザー)にアクセスしようとします。

  3. ユーザーのDNSクライアントがDNSサーバーにDNSクエリを送信すると、DNSサーバーはネームサーバーを検索し(通常、一連の再帰的なDNSクエリを通じて)、funny.example.comに関する情報を要求します。

  4. あなたのネームサーバーは答えで応答します

  5. 次に、ユーザーのDNSサーバーはこの情報をユーザー(より具体的には、ユーザーのDNSクライアントリゾルバー)に送信します。ユーザーは、情報をprocess\applicationに返します。この情報は、TTL(Time To Live)と呼ばれるものに付属しており、DNSクライアントリゾルバに、この情報をDNSキャッシュ(メモリ内)に保持できる期間と、情報を保持できる期間を通知します。最新かつ正確であると見なされる

  6. ユーザーのDNSクライアントリゾルバーは、TTLの有効期限が切れると、この情報をフラッシュします。問題のDNSレコードに対する新しいリクエストには、新しいDNSルックアップが必要であり、上記のプロセスが繰り返されます。

つまり、長くて短いのはこれです。

DNSレコードは伝播しません。他のDNSサーバーには、DNSレコードまたはゾーンのコピーはありません。 DNSクライアントまたはサーバーは、DNSレコードまたはゾーンに関する情報(DNSレコードおよびゾーンのDNSクエリに基づく)をDNSキャッシュにキャッシュする場合があります。この情報は一時的にキャッシュされ、TTLの有効期限が切れるとDNSキャッシュから削除されます。

ネームサーバーがダウンしている場合、キャッシュにDNSレコードのいずれかがあるDNSクライアントのみが、これらのDNSレコードを解決できます。これは、TTLが期限切れになるまでです。また、= TTL期限切れ(新しいDNSロックアップが必要))これらのDNSクライアントは、DNSレコードを解決できなくなります。

44
joeqwerty

実際のドメイン名を教えていただければ、非常に役立ちます。実際の設定を参考にして質問に回答し、障害を指摘することができます。

DNSの問題を迅速に診断するために、私は http://dns.squish.net/ を信頼する傾向があります。これにより、変更後に問題がどこにあるかがわかります。基本的に、アップストリームからの委任が正しく、2〜3台のネームサーバーがすべて同じ答えを返し、誰かが新しいレコードを表示していない場合、ローカルネットワークが変更を確認するまで待つ必要があります。そのチェッカーから、サーバーの1つが他のサーバーと同じ応答をしていないことがわかった場合は、その問題を修正する必要があります。

DNSの変更をすぐに公開する方法はありません-すぐに公開できますが、他の世界は各レコードのTTL=設定に従って遅延します。たとえば、 ve TTL 86400秒(1日)のレコード)を設定して変更を加えると、ローカルキャッシュは、レコードのコピーの有効期限が切れます。

大きなDNS変更の前に、TTL=を600(10分)に減らして、古いレコードを長時間保持しないようにインターネット上のキャッシュを奨励することをお勧めします。ただし、一部のキャッシュは無視しますこれ、または1日、または1週間と仮定します。

とりとめのない質問に対するとりとめのない答えですが、何か役に立つものがあったといいのですが。

11
Matthew Bloch

はい、「DNSの変更がインターネット経由で反映されるまでに24〜48時間かかる可能性があります」という古い格言は、より正確に「過去86400秒以内にこのレコードをクエリしたDNSサーバーにDNSの変更がキャッシュされる可能性があります。」

サーバーがオフラインになった場合にDNSの冗長性を確保するには、バックアップDNSサービス(dyndns.comなど)を調べるか、独自のセカンダリNSを作成する必要があります。

8
willbradley

インターネット上のすべてのDNSサーバーは「サードパーティによって制御」されています(ルートDNSサーバーをインターネットに対して「独自のもの」と見なすことができると思いますが、独自のプライベートルートを置くことができる技術的な理由もありません)。

DNSサーバーは、提供する各回答に推奨される「存続時間」(TTL)を提供します。リモートリゾルバー(クライアント、クライアントリゾルバーライブラリなどの再帰的解決を実行する他のDNSサーバー)はが想定されるまで、回答をキャッシュするTTLキャッシュから破棄する前。

既存のレコードに加えた変更が実際のクエリに反映されていない場合は、おそらくTTLの値が高すぎて、ネット上のリゾルバキャッシュから既存の回答が古くなるのを確認します。

サーバー障害の背景: DNSが「伝播」と呼ばれるのはなぜですか?

5
Evan Anderson

インターネット上の誰か(または何らかのコンピューター)がいわば自分のマシンに接続したい場合、ローカルネームサーバーに、関心のあるホスト名と一致するIPアドレスを要求します。

したがって、誰かに「ねえ、私のクールなWebサイトを見てください http://www.example.com 」と言うと、他の男のコンピュータはローカルネームサーバーに尋ねますwww.example.com?」

ローカルネームサーバーがその質問への回答をこれまでに検索したことがない場合、ルートネームサーバーに「.com」の検索を処理するサーバーを見つけるように要求します。その答えを得ると、「example.com」のルックアップを処理するサーバーを尋ねます。その答えが得られると、ifはそれらのサーバーに「www.example.com」のIPアドレスを要求します。

Example.comのサーバーがwww.example.comのIPアドレスで応答すると、要求側のネームサーバーにも、この質問への回答を記憶する必要がある時間についてのヒントが提供されます。そのヒントは「TTL」または「生存時間」と呼ばれ、秒単位で測定されます。すべてのサーバーがTTL-に注意を払うという保証はありません-一部のネームサーバーは、ルックアップへの回答を記憶しないように設定されている場合があり、毎秒数回尋ねられた場合でも常にプロセスを繰り返します。他のネームサーバーは、おそらくネットワークトラフィックを最小限にしたいために、データを短時間のみ保持するように提案した場合でも、回答を長期間保持するように構成されている可能性があります。TTL =は単なる提案であり、要件や保証ではありません。

あなたの質問に対する文字通りの答え-なぜあなたのDNSレコードがインターネットに伝播しないのか-は、彼らが想定されていないので、彼らがそうしていないということです。

また、DNS情報を調査またはデバッグするように設計されたサイトを使用して独自のDNS情報を表示している場合、TTL提案です。これは、サイトの目標がおそらくDNSシステムが今言っていることに関する情報を提供することであり、5、50、500秒前ではないためです。これが、変更がすぐに反映され、サービスが機能しなくなる理由ですネームサーバーを切断するとすぐに。

根本的な質問は、「DNSサーバーが再起動したり、ハードディスクが停止したりしても、インターネット上の他の人が私のWebページを表示できるようにするにはどうすればよいですか?」

その質問への答えは、ドメインに複数のネームサーバーを設定し、それらを異なるマシンで実行することです。理想的には、異なる物理コンピューターだけでなく、異なる都市、州、国や大陸でも異なるネットワーク接続を使用します。これらのネームサーバーのほとんどは「スレーブ」として設定されます。つまり、「マスター」ネームサーバーに情報を問い合わせ、データを要求する人にその情報を繰り返します。

したがって、ドメイン名登録事業者のWHOISデータでは、ドメインに4つのネームサーバーを構成することができます。

ns1.example.com ns2.example.com ns1.otherguy.com ns2.otherguy.com

ここで、ns1.example.comは現在のDNSサーバーです。 ns2.example.comは、会社/組織内の別のマシンである可能性があります-理想的には、ns1.example.comと同じサブネットおよび同じサーバーラック(または同じ担当者のデスク)にはありません。

ns1.example.comは「マスター」サーバーと見なされ、DNSを変更する場合は、そのマシンで変更を行います。

ns2.example.comは「スレーブ」サーバーとして構成され、ns1.example.comで設定したデータをコピーするだけですが、外部の世界ではマスター/スレーブの区別ns2.exampleは考慮されません。 .comは、ns1.example.comと同じように「公式」と見なされます。

ns1.otherguy.comとns2.otherguy.comは、別の場所にセットアップされているマシンです-別の組織の友人/同僚と互いにネームサーバーを実行するように取り決めたり、dyndns.comをセットアップしたりします。またはeverydns.netまたはその他の無料または商用のDNSプロバイダー。ただし、うまくいくと、それらのマシンがスレーブとして構成され、ns1.example.com(「マスター」)からexample.comのDNS情報が取得され、そのDNS情報がそれを求めるインターネット。

ドメインレジストラがドメインの新しいNSレコードを公開すると(これはほぼ瞬時に行われるはずです)、インターネット上の誰かが「example.com」を処理するドメインネームサーバーに尋ねたとき、 4つの答えを取得します-

ns1.example.com、ns2.example.com、ns1.otherguy.com、ns2.otherguy.com

他の男のネームサーバーの設定方法によっては、これらの4つをリストとして扱い、「www.example.com」に到達する方法を一度に1つずつ尋ねるか、4つすべてに同じ質問をするかもしれません。同時に、どちらのマシンが最初に答えたとしても、その答えを取ってください。どちらの方法でも、ハードディスクが停止したか、再起動するなどしてns1.example.comがダウンした場合、代わりに他の3台のマシンが質問に回答できるようになり、Webサイトは引き続き表示されます。

この問題を解決する最も簡単な方法は、ドメインのDNSを処理するDNSサービスプロバイダーにサインアップすることです。この価格は、月額無料から数千ドル(おそらく数万または数十万ドル)にも及びます。あなたが望むサービスのレベル。あなたは30ドル/年程度で合理的に信頼できるサービスを得ることができます。無料サービスはひどいものではないため、かなり優れた投資効果がありますが、Webサイトを利用してお金を稼ぐ場合は、1年分のDNSに30ドルを払うことができるはずです。 。

次に、DNSサービスプロバイダーの指示に従って、ドメイン名レジストラーでNSレコードを変更します。これで準備は完了です。

2
gbroiles

他のDNSサーバーが行うキャッシュは、TTLに依存します。場合によっては、TTLが非常に低いまたは高いです。詳細を教えてください。あなたのDNS構成について?

0
radius