現在、ある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ルートサーバーから発せられるレコードに対してどのように機能しているかをクエリすることは可能ですか?
これに基づいて、NSゾーンファイル内のレコードは移行とは無関係であり、TLDレベルのネームサーバーレコードのみが重要であると結論しました。
これは誤った仮説ですが、間違いを犯しやすいものです。 apexの主題についてもう少し読むことができますNS records here 。短いバージョンは両方が重要であり、使用されるものは、 DNSサーバーのキャッシュは、以前にドメインをクエリしたか、クエリしていない。
ほとんどの再帰DNSサーバーは最小TTLを適用するため、TTLがゼロの場合の実験から導き出された結論はほとんど間違いなく不正確です。これが正しくない唯一のケースは、クエリ対象のサーバーで使用される最小のTTLポリシー。
現在、あるDNSサーバープロバイダーから別のDNSサーバープロバイダーにDNSゾーンを移行しています。変更が反映されるまでにかかる時間を見積もり、途中でロールバックすることを選択した場合の遅延を理解しようとしています。
残りの質問で誤ったスタートがいくつかあるので、このトピックに焦点を当てます。まず、TTLは再帰DNSサーバーにキャッシュされることを覚えておくことが重要です。インターネット上のすべての人が異なる再帰DNSサーバーを使用しているため、n秒で、nを使用すると、onlyであると想定できます。 = TTLの値です。
これにより、ここでどのTTLが関連しているかがわかります。
NS
レコードが期限切れになっても、キャッシュにある個々のレコードのリクエストは自動的に期限切れになりません。例:もしtest.example.com IN A
は10分後に期限切れになりますが、example.com IN NS
は今から5分で期限切れになりますtest.example.com
は、NS
レコードが変更された後もキャッシュに残ります。新しいサーバーでのこのレコードの値に関連する問題は、レコードの有効期限が切れて更新されるまで明らかになりません。NS
グルーレコードのTTL。これらは、最初に要求されたときにドメインに関する情報を取得する必要がある再帰サーバーによって使用されます。これらのTTLは、ゾーンファイルにリストされているDNSサーバーが次の更新に使用されるまでの時間に影響します。 (これについては、上でリンクしたQ&Aを参照してください)NS
レコードのTTL。グルーレコードTTLが期限切れになると、代わりにこれらのTTL mightが使用されます。実装はこの詳細によって異なります。あなたはインターネット全体のさまざまな実装を扱っているので、唯一の安全な仮定は、一部のサーバーがそれを使用しているということです。インターネット上のキャッシュされたNS
レコードTTLのすべてが1つのソースからのものであるとは限りません。このため、運用していない再帰DNSサーバーに本当に関心がない場合を除き、2つのうち高い方を計画する必要があります。
これらすべてをまとめると、次の結論に達します。
NS
レコード、およびゾーンのNS
レコードの間で最高TTLです。NS
レコードの変更後にすべてのTTLの有効期限が切れるまで、変更に関係するすべてのDNSサーバーを実行して同期させることは非常に重要です。最新の変更を取得していないクライアントが利用できるすべてのサーバーが必要なだけでなく、2つの間のレコードデータに不整合があると、事態がさらに混乱する可能性があります。これは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
以前は、ドメインの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)