web-dev-qa-db-ja.com

ルートネームサーバーのDNSレコードでTTLを確認する方法はありますか?

現在、あるDNSサーバープロバイダーから別のDNSサーバープロバイダーにDNSゾーンを移行しています。変更が反映されるまでにかかる時間を見積もり、途中でロールバックすることを選択した場合の遅延を理解しようとしています。

以前は、私はできると思っていました:

Dig example.com ns

残りのTTL NSレコードが何であったかを確認するために、今私はこれがNSレコードがNSレコードはゾーン内のサブドメイン用であり、NSレコードはルートサーバーから発せられるレコードではありません。これは、最終的にどのネームサーバーに対してクエリを実行するかを決定するレコードです。送信されます。

これをテストするには、各プロバイダーのゾーンにテストレコードを設定します。

Provider1 test.example.com 10.0.0.1
Provider2 test.example.com 192.168.0.1

両方のプロバイダーについて、TTL on NS records in 0、the NS records at the TLD Registrar level point Provider1のネームサーバーに。

NSレコードを変更すると、これがNSクエリにほぼ即座に反映されることがわかります( 'Dig example.com ns'を使用)) 。

ただし、Aレコードのクエリを送信すると、

test.example.com

それは常に戻ります

10.0.0.1

プロバイダー1のゾーンのNSレコードが何に設定されているかに関係なく。

これに基づいて、NSゾーンファイル内のレコードは移行とは無関係であり、TLDレベルのネームサーバーレコードのみが重要であると結論しました。

ただし、変更が伝播するまでにどれほどの時間がかかる可能性があるかについては、順方向または逆方向のどちらでも読み取ることができません。

TTLがTLDルートサーバーから発せられるレコードに対してどのように機能しているかをクエリすることは可能ですか?

5
Garreth McDaid

これに基づいて、NSゾーンファイル内のレコードは移行とは無関係であり、TLDレベルのネームサーバーレコードのみが重要であると結論しました。

これは誤った仮説ですが、間違いを犯しやすいものです。 apexの主題についてもう少し読むことができますNS records here 。短いバージョンは両方が重要であり、使用されるものは、 DNSサーバーのキャッシュは、以前にドメインをクエリしたか、クエリしていない。

ほとんどの再帰DNSサーバーは最小TTLを適用するため、TTLがゼロの場合の実験から導き出された結論はほとんど間違いなく不正確です。これが正しくない唯一のケースは、クエリ対象のサーバーで使用される最小のTTLポリシー。

現在、あるDNSサーバープロバイダーから別のDNSサーバープロバイダーにDNSゾーンを移行しています。変更が反映されるまでにかかる時間を見積もり、途中でロールバックすることを選択した場合の遅延を理解しようとしています。

残りの質問で誤ったスタートがいくつかあるので、このトピックに焦点を当てます。まず、TTLは再帰DNSサーバーにキャッシュされることを覚えておくことが重要です。インターネット上のすべての人が異なる再帰DNSサーバーを使用しているため、n秒で、nを使用すると、onlyであると想定できます。 = TTLの値です。

これにより、ここでどのTTLが関連しているかがわかります。

  • キャッシュにある個々のレコードのTTL。 NSレコードが期限切れになっても、キャッシュにある個々のレコードのリクエストは自動的に期限切れになりません。例:もしtest.example.com IN Aは10分後に期限切れになりますが、example.com IN NSは今から5分で期限切れになりますtest.example.comは、NSレコードが変更された後もキャッシュに残ります。新しいサーバーでのこのレコードの値に関連する問題は、レコードの有効期限が切れて更新されるまで明らかになりません。
  • TLD DNSサーバーによって提供されるNSグルーレコードのTTL。これらは、最初に要求されたときにドメインに関する情報を取得する必要がある再帰サーバーによって使用されます。これらのTTLは、ゾーンファイルにリストされているDNSサーバーが次の更新に使用されるまでの時間に影響します。 (これについては、上でリンクしたQ&Aを参照してください)
  • ゾーンファイルの先頭にリストされているNSレコードのTTL。グルーレコードTTLが期限切れになると、代わりにこれらのTTL mightが使用されます。実装はこの詳細によって異なります。あなたはインターネット全体のさまざまな実装を扱っているので、唯一の安全な仮定は、一部のサーバーがそれを使用しているということです。

インターネット上のキャッシュされたNSレコードTTLのすべてが1つのソースからのものであるとは限りません。このため、運用していない再帰DNSサーバーに本当に関心がない場合を除き、2つのうち高い方を計画する必要があります。

これらすべてをまとめると、次の結論に達します。

  • 特定のDNSレコードが新しいネームサーバーに対して更新するのに必要な最大時間は、そのレコード、グルーのNSレコード、およびゾーンのNSレコードの間で最高TTLです。
  • 新しいDNSサーバーのTTLが古いサーバーと同じであると仮定すると、ロールバックに必要な最大時間はつのTTLの最大値、もう一度です。 DNSサーバーを最初に変更してから変更を元に戻すまでの間に新しいサーバーに到達したクエリは、新しいサーバーから取得した値に依存します。
  • 最後のNSレコードの変更後にすべてのTTLの有効期限が切れるまで、変更に関係するすべてのDNSサーバーを実行して同期させることは非常に重要です。最新の変更を取得していないクライアントが利用できるすべてのサーバーが必要なだけでなく、2つの間のレコードデータに不整合があると、事態がさら​​に混乱する可能性があります。
5
Andrew B

これはWindowsのnslookupで簡単に実行できます。Digでも同じことができると思います。 nslookupでは、デバッグを使用してGTLDネームサーバーの1つにドメインのネームサーバーレコードを照会するだけで、TTLそれらのネームサーバーレコードのあるドメインのネームサーバーのリストを取得できます。

Microsoft Windows [Version 10.0.10240]
(c) 2015 Microsoft Corporation. All rights reserved.

C:\Users\Joe>nslookup
Default Server:  Unknown
Address:  192.168.1.2

> server f.gtld-servers.net
Default Server:  f.gtld-servers.net
Address:  192.35.51.30

> set q=ns
> set debug
> crabbygeezer.com
Server:  f.gtld-servers.net
Address:  192.35.51.30

------------
Got answer:
    HEADER:
        opcode = QUERY, id = 4, rcode = NOERROR
        header flags:  response, want recursion
        questions = 1,  answers = 0,  authority records = 5,  additional = 10

    QUESTIONS:
        crabbygeezer.com, type = NS, class = IN
    AUTHORITY RECORDS:
    ->  crabbygeezer.com
        nameserver = freedns1.registrar-servers.com
        ttl = 172800 (2 days)
    ->  crabbygeezer.com
        nameserver = freedns2.registrar-servers.com
        ttl = 172800 (2 days)
    ->  crabbygeezer.com
        nameserver = freedns3.registrar-servers.com
        ttl = 172800 (2 days)
    ->  crabbygeezer.com
        nameserver = freedns4.registrar-servers.com
        ttl = 172800 (2 days)
    ->  crabbygeezer.com
        nameserver = freedns5.registrar-servers.com
        ttl = 172800 (2 days)
    ADDITIONAL RECORDS:
    ->  freedns1.registrar-servers.com
        internet address = 208.64.122.242
        ttl = 172800 (2 days)
    ->  freedns1.registrar-servers.com
        internet address = 72.20.53.50
        ttl = 172800 (2 days)
    ->  freedns2.registrar-servers.com
        internet address = 208.64.122.244
        ttl = 172800 (2 days)
    ->  freedns2.registrar-servers.com
        internet address = 72.20.38.137
        ttl = 172800 (2 days)
    ->  freedns3.registrar-servers.com
        internet address = 5.135.128.216
        ttl = 172800 (2 days)
    ->  freedns3.registrar-servers.com
        internet address = 62.210.149.103
        ttl = 172800 (2 days)
    ->  freedns4.registrar-servers.com
        internet address = 62.210.149.102
        ttl = 172800 (2 days)
    ->  freedns4.registrar-servers.com
        internet address = 72.20.53.50
        ttl = 172800 (2 days)
    ->  freedns5.registrar-servers.com
        internet address = 192.99.40.34
        ttl = 172800 (2 days)
    ->  freedns5.registrar-servers.com
        internet address = 72.20.53.50
        ttl = 172800 (2 days)

------------
crabbygeezer.com
        nameserver = freedns1.registrar-servers.com
        ttl = 172800 (2 days)
crabbygeezer.com
        nameserver = freedns2.registrar-servers.com
        ttl = 172800 (2 days)
crabbygeezer.com
        nameserver = freedns3.registrar-servers.com
        ttl = 172800 (2 days)
crabbygeezer.com
        nameserver = freedns4.registrar-servers.com
        ttl = 172800 (2 days)
crabbygeezer.com
        nameserver = freedns5.registrar-servers.com
        ttl = 172800 (2 days)
freedns1.registrar-servers.com
        internet address = 208.64.122.242
        ttl = 172800 (2 days)
freedns1.registrar-servers.com
        internet address = 72.20.53.50
        ttl = 172800 (2 days)
freedns2.registrar-servers.com
        internet address = 208.64.122.244
        ttl = 172800 (2 days)
freedns2.registrar-servers.com
        internet address = 72.20.38.137
        ttl = 172800 (2 days)
freedns3.registrar-servers.com
        internet address = 5.135.128.216
        ttl = 172800 (2 days)
freedns3.registrar-servers.com
        internet address = 62.210.149.103
        ttl = 172800 (2 days)
freedns4.registrar-servers.com
        internet address = 62.210.149.102
        ttl = 172800 (2 days)
freedns4.registrar-servers.com
        internet address = 72.20.53.50
        ttl = 172800 (2 days)
freedns5.registrar-servers.com
        internet address = 192.99.40.34
        ttl = 172800 (2 days)
freedns5.registrar-servers.com
        internet address = 72.20.53.50
        ttl = 172800 (2 days)
>

Digを使用して同様のクエリを実行するための構文は次のとおりです。

$ Dig NS crabbygeezer.com @f.gtld-servers.net +trace
1
joeqwerty

以前は、ドメインのSOAレコードをクエリして、デフォルトのTTL値を取得することができました。

Dig example.com. SOA

しかし、それは$ TTLディレクティブのおかげで廃止されました。

興味のある特定のレコードがある場合は、+ ttlidフラグをDigに追加できます。

Dig +ttlid somehost.example.com.

正確なTTL残りを取得するには:

;; ANSWER SECTION:
somehost.example.com.      604800  IN      A       192.168.99.5

(2番目のフィールドはTTL-この場合は604800)

0
Brandon Xavier