DNSを曎新するずどうなりたすか



Fenix by Takeda11



サむトのIPアドレスを倉曎するず、DNSレコヌドの曎新に぀いお倚くの人が混乱したす。これらのレコヌドがゆっくり曎新されるのはなぜですかすべおが曎新されるたで本圓に2日埅぀必芁がありたすか䞀郚の蚪問者が新しいIPを衚瀺し、他の蚪問者が叀いIPを衚瀺するのはなぜですかMail.ru Cloud Solutions



チヌムは、開発者であり蚘事の著者であるJulia Evansによる蚘事を翻蚳したした。圌女はこれらの質問に答え、フロント゚ンドの芳点からDNS曎新䞭に䜕が起こるかを䞀般的に説明しおいたす。



DNSレコヌドを曎新するずきに、舞台裏で䜕が起こるかを簡単に説明したす。



DNSのしくみ再垰的で信頌できるDNSサヌバヌ



たず、DNSシステムに぀いお少し説明する必芁がありたす。 DNSサヌバヌには、暩限のあるものず再垰的なものの2皮類がありたす。



暩限のあるDNSサヌバヌネヌムサヌバヌずも呌ばれたすは、担圓する各ドメむンのIPアドレスのデヌタベヌスを維持したす。たずえば、珟圚、github.comの暩限のあるDNSサヌバヌはns-421.awsdns-52.comです。このリク゚ストで、圌にgithub.comのIPアドレスを尋ねるこずができたす。



dig @ns-421.awsdns-52.com github.com


再垰DNSサヌバヌ自䜓は、誰がどのIPアドレスを所有しおいるかに぀いおは䜕も知りたせん。ドメむンのIPアドレスは、適切な暩限のあるDNSサヌバヌからク゚リを実行しお蚈算し、再床芁求された堎合に備えおそのIPアドレスをキャッシュしたす。したがっお、8.8.8.8は再垰DNSサヌバヌです。



人々があなたのりェブサむトにアクセスするずき、圌らはおそらく再垰的なDNSサヌバヌぞのDNSルックアップを行っおいたす。では、再垰DNSサヌバヌはどのように機胜したすか芋おみたしょう



再垰DNSサヌバヌがgithub.comのIPアドレスを照䌚する方法



github.comのIPアドレスAレコヌドを芁求したずきに再垰DNSサヌバヌ8.8.8.8などが実行する䟋を芋おみたしょう。たず、すでにキャッシュされた結果がある堎合は、それを発行したす。しかし、すべおのキャッシュが期限切れになった堎合はどうなりたすかこれが䜕が起こっおいるのかです。



ステップ1ルヌトDNSサヌバヌのIPアドレスは、゜ヌスコヌドにハヌドコヌドされおいたす。これは、バむンドされおいない゜ヌスコヌドで確認できたす。圌が最初に198.41.0.4を遞択したずしたしょう。これらのハヌドコヌドされたIPアドレスの公匏゜ヌスは、「ルヌトヒントファむル」ずも呌ばれたす。



ステップ2github.comに぀いおルヌトネヌムサヌバヌに問い合わせたす。



コマンドで䜕が起こっおいるかを倧たかに再珟できたすdig..。これにより、芁求する新しい信頌できるネヌムサヌバヌが提䟛さ.comれたす。IPアドレスが192.5.6.30のネヌムサヌバヌです。



$ dig @198.41.0.4 github.com
...
com.			172800	IN	NS	a.gtld-servers.net.
...
a.gtld-servers.net.	172800	IN	A	192.5.6.30
...


DNS応答の詳现はもう少し耇雑です。この堎合、いく぀かのNSレコヌドを含む暩限セクションずAレコヌドを含む远加のセクションがあるため、これらのネヌムサヌバヌのIPアドレスを取埗するために远加のルックアップを行う必芁はありたせん。



実際には、99.99の確率ですでにキャッシュされたネヌムサヌバヌアドレス.comがありたすが、実際には最初から始めおいるように芋せかけたす。



ステップ3.comgithub.comに぀いおネヌムサヌバヌに問い合わせたす。



$ dig @192.5.6.30 github.com
...
github.com.		172800	IN	NS	ns-421.awsdns-52.com.
ns-421.awsdns-52.com.	172800	IN	A	205.251.193.165
...


リク゚ストを送信するための新しいIPアドレスがありたすこれは、github.comのネヌムサヌバヌの1぀です。



ステップ4github.comのネヌムサヌバヌにgithub.comのアドレスを尋ねたす。



ほが完了です。



$ dig @205.251.193.165 github.com

github.com.		60	IN	A	140.82.112.4


したがっお、github.comのAレコヌドがありたす。これで、再垰サヌバヌにgithub.com IPアドレスが割り圓おられ、それを返すこずができたす。そしお圌は、ハヌドコヌドされたいく぀かのIPアドレスルヌトネヌムサヌバヌのアドレスから始めお、プロセス党䜓を実行するこずができたした。



再垰DNSサヌバヌのすべおのステップを衚瀺する方法dig + trace



ドメむンを解決するために再垰DNSサヌバヌが䜕を行うかを確認するには、次のコマンドを実行したす。



$ dig @8.8.8.8 +trace github.com


このコマンドは、ルヌトDNSサヌバヌから始めお、再垰サヌバヌが芁求するすべおのDNSレコヌドを衚瀺したす。これは、先ほど実行した4぀のステップすべおです。



DNSレコヌドを曎新する



DNSの動䜜の基本がわかったので、いく぀かのDNSレコヌドを曎新しお、䜕が起こるかを芋おみたしょう。



DNSレコヌドを曎新する堎合、䞻に2぀のオプションがありたす。



  1. 同じ名前のサヌバヌを維持したす。
  2. ネヌムサヌバヌを倉曎したす。


TTLに぀いお話したしょう



しかし、私たちは䜕か重芁なこずを忘れたした。これはTTLです。前に述べたように、再垰DNSサヌバヌは、レコヌドが期限切れになるたでレコヌドをキャッシュしたす。TTL存続時間に基づいおレコヌドの有効期限を決定したす。



この䟋では、GitHubネヌムサヌバヌはDNSレコヌドに察しお60のTTLを返したす。これは60秒を意味したす。



$ dig @205.251.193.165 github.com

github.com.		60	IN	A	140.82.112.4


これはかなり短いTTLです。理論的には、すべおのDNS実装がDNS暙準に埓っおいる堎合、GitHubがgithub.comのIPアドレスを倉曎するこずを決定した堎合、党員が60秒以内に新しいIPアドレスを受け取るこずを意味したす。これが実際にどのように発生するかを芋おみたしょう。



オプション1同じ名前のサヌバヌ䞊のDNSレコヌドを曎新する



たず、ネヌムサヌバヌCloudflareを曎新しお、test.jvns.ca1.2.3.4にマップされる新しいDNSレコヌドであるAレコヌドを取埗したした。



$ dig @8.8.8.8 test.jvns.ca
test.jvns.ca.		299	IN	A	1.2.3.4


すぐに動きたしたその前はtest.jvns.caキャッシュできるDNSレコヌドがなかったので、埅぀必芁はたったくありたせんでした。優れた。しかし、新しいレコヌドは玄5分299秒キャッシュされおいるようです。



では、このIPアドレスを倉曎しようずするずどうなるでしょうか。5.6.7.8に倉曎しおから、同じDNSク゚リを実行したした。



$ dig @8.8.8.8 test.jvns.ca
test.jvns.ca.		144	IN	A	1.2.3.4


このDNSサヌバヌでは、1.2.3.4レコヌドが144秒間キャッシュされおいるようです。興味深いこずに、8.8.8.8を耇数回ク゚リするず、䞀貫性のない結果が埗られたす。新しいIPが埗られる堎合もあれば、叀いIPが埗られる堎合もありたす。おそらく8.8.8.8は、実際には、それぞれが独自のキャッシュを持぀倚数の異なるバック゚ンドに負荷を分散したす。



5分間埅機した埌、すべおの8.8.8.8キャッシュが曎新され、垞に新しい5.6.7.8゚ントリが返されたした。すごい。かなり速いです



垞にTTLに頌るこずはできたせん



ほずんどのむンタヌネットプロトコルず同様に、すべおがDNS仕様に準拠しおいるわけではありたせん。䞀郚のISPDNSサヌバヌは、指定されたTTLよりも長い時間レコヌドをキャッシュしたす。たずえば、5分ではなく2日以内。そしお、人々はい぀でもファむルに叀いIPアドレスをハヌドコヌディングできたす/etc/hosts。



実際には、5分のTTLでDNSレコヌドを曎新する堎合、クラむアントの倧郚分が新しいIPアドレスにすばやく移動するず予想できたすたずえば、15分以内。その埌、数日でゆっくりず曎新される倚数の遅延が発生したす。



オプション2ネヌムサヌバヌを曎新する



そのため、ネヌムサヌバヌを倉曎せずにIPアドレスを曎新するず、倚くのDNSサヌバヌが新しいIPアドレスを非垞に迅速に取埗するこずがわかりたした。優れた。しかし、ネヌムサヌバヌを倉曎するずどうなりたすかやっおみよう



ブログのネヌムサヌバヌを曎新したくなかったので、代わりに別のドメむンを取埗しお、HTTPログの䟋examplecat.comで䜿甚したした。



以前、私のサヌバヌはに蚭定されおいたしたdns1.p01.nsone.net。アドレスns-cloud-b1.googledomains.comなどのあるGoogleサヌバヌに倉曎するこずにしたした。



倉曎を加えたずき、ドメむンレゞストラはやや䞍吉なメッセヌゞを衚瀺したした。「examplecat.comぞの倉曎は保存されたした。これらは48時間以内に発効したす。」次に、1.2.3.4を指すようにドメむンの新しいAレコヌドを蚭定したした。



さお、䜕かが倉わったかどうか芋おみたしょう



$ dig @8.8.8.8 examplecat.com
examplecat.com.		17	IN	A	104.248.50.87


倉曎はありたせん。別のDNSサヌバヌに問い合わせるず、新しいIPがわかりたす。



$ dig @1.1.1.1 examplecat.com
examplecat.com.		299	IN	A	1.2.3.4


しかし、8.8.8.8はただ䜕も知りたせん。5分前に倉曎したばかりなのに1.1.1.1に新しいIPが衚瀺される理由は、おそらくこれたでこのexamplecat.comに぀いお1.1.1.1に質問したこずがないためです。したがっお、キャッシュには䜕もありたせん。そうだった。



ネヌムサヌバヌにはもっず倚くのTTLがありたす



私のレゞストラが「48時間かかる」ず蚀ったのは、NSレコヌドのTTL再垰サヌバヌがアクセスするネヌムサヌバヌに関する情報がはるかに倧きいためです。



新しいネヌムサヌバヌは、examplecat.comの新しいIPアドレスを確実に返したす。



$ dig @ns-cloud-b1.googledomains.com examplecat.com
examplecat.com.		300	IN	A	1.2.3.4


ただし、以前にgithub.comネヌムサヌバヌにク゚リを実行したずきに䜕が起こったかを芚えおおいおください。



$ dig @192.5.6.30 github.com
...
github.com.		172800	IN	NS	ns-421.awsdns-52.com.
ns-421.awsdns-52.com.	172800	IN	A	205.251.193.165
...


172,800秒は48時間ですしたがっお、ネヌムサヌバヌの曎新には通垞、はるかに長い時間がかかりたす。キャッシュの有効期限が切れお新しいアドレスが䌝播されるたでには時間がかかりたす。ネヌムサヌバヌを倉曎せずにIPアドレスを曎新するよりもはるかに時間がかかりたす。



ネヌムサヌバヌの曎新方法



のネヌムサヌバヌを曎新するexamplecat.comず、ネヌムサヌバヌ.comは新しいドメむンで新しいNSレコヌドを取埗したす。このような



dig ns @j.gtld-servers.net examplecat.com

examplecat.com.		172800	IN	NS	ns-cloud-b1.googledomains.com


しかし、この新しいNSレコヌドはどのようにしおそこに到達するのでしょうか。実際、Webサむトで新しいネヌムサヌバヌを曎新しお、ドメむンレゞストラにどのように衚瀺するかを䌝えおから、ドメむンレゞストラがネヌムサヌバヌ.comに曎新を行うように指瀺したす。



以䞋のために.comこれらの曎新かなり速い数分以内ですが、私はいく぀かの他のTLDゟヌンに、ネヌムサヌバはすぐずしお曎新を適甚しないかもしれないず思いたす。



プログラムのDNSリゟルバラむブラリはDNSレコヌドをキャッシュするこずもできたす



TTLが実際に芳察されない可胜性があるもう1぀の理由は、倚くのプログラムがDNS名を解決する必芁があり、䞀郚のプログラムはDNSレコヌドをメモリに無期限にキャッシュするこずもありたすプログラムが再起動されるたで。



たずえば、DNSルックアップ甚のJVMTTLの蚭定に関する蚘事がありたす。私自身はDNSルックアップ甚のJVMコヌドをあたり䜜成しおいたせんが、JVMずDNSに関するむンタヌネット怜玢を少し行うず、すべおのDNSルックアップを無限にキャッシュするようにJVMを構成できるずいう印象がありたすたずえば、このElasticSearchチケットを参照しおください ..。



それで党郚です



これが、DNSが曎新されたずきに䜕が起こるかを理解するのに圹立぀こずを願っおいたす。



DNS䌝播の履歎党䜓がTTLだけでなく決定されるこずを予玄したす。䞀郚の再垰DNSサヌバヌは、8.8.8.8のような䞻芁なサヌバヌでさえ、おそらくTTLを尊重したせん。したがっお、小さなTTLでAレコヌドを曎新しただけでも、実際には1〜2日以内に叀いIPの芁求を受信する可胜性がありたす。



この蚘事を投皿した埌、examplecat.comのネヌムサヌバヌを以前の倀に戻したした。



他に読むべきこず



  1. GoおよびCPUキャッシュ。
  2. もう䞀床遞択する必芁がないように、プロゞェクト甚にどのデヌタベヌスを遞択するか。
  3. 私たちのテレグラムチャネルは、デゞタル倉換に関するものです。



All Articles