DNS の設定がうまくいかず、戻るような現象について考察する
私も間違っているかもしれませんので、変なところがあれば指摘して頂きたい。
権威サーバへの問い合わせ
まず、DNS には権威サーバと呼ばれるサーバと、キャッシュサーバと呼ばれるサーバがある。
ドメインの管理画面から設定をして、設定が書き出されるのは、権威サーバである。
例えば、www.example.com の権威サーバを調べに行きたければ、ルートサーバから辿る。
dig +norec NS www.example.com @a.root-servers.net.
とする。
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 43407 ;; flags: qr; QUERY: 1, ANSWER: 0, AUTHORITY: 13, ADDITIONAL: 27 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;www.example.com. IN NS ;; AUTHORITY SECTION: com. 172800 IN NS e.gtld-servers.net. com. 172800 IN NS b.gtld-servers.net. ... ;; ADDITIONAL SECTION: e.gtld-servers.net. 172800 IN A 192.12.94.30 e.gtld-servers.net. 172800 IN AAAA 2001:502:1ca1::30 b.gtld-servers.net. 172800 IN A 192.33.14.30 b.gtld-servers.net. 172800 IN AAAA 2001:503:231d::2:30 ...
のような応答があるはずだ。大事なのは、AUTHORITY SECTION だ。ここが、次に見に行く先のサーバを示している。サーバの IP アドレスは、ADDITIONAL SECTION に示されている。
dig +norec NS www.example.com @a.gtld-servers.net.
とすると
example.com. 172800 IN NS a.iana-servers.net.
と応答がある。
dig +norec NS www.example.com @a.iana-servers.net.
とすると
;; AUTHORITY SECTION: example.com. 3600 IN SOA sns.dns.icann.org. noc.dns.icann.org. 2018112845 7200 3600 1209600 3600
なので、SOA レコードが返ってきた。これで、a.iana-servers.net. が責任をもったサーバであるということが分かる。以降は a.iana-servers.net. に問い合わせる。
dig +norec A www.example.com @a.iana-servers.net.
に対して
;; ANSWER SECTION: www.example.com . 86400 IN A 93.184.216.34
より、www.example.com. の IP アドレスを得ることができた。
いちいち探すのはやってられない…キャッシュサーバ
いちいち、まず権威サーバを探し、次に、本来の問い合わせをする…のは面倒でやってられないので、この流れを代わりにしてくれるのがキャッシュサーバと思ってよい。
今まで出てきた 86400 というのは TTL と呼ばれ、「この秒数まではキャッシュしてよいよ」という数字である。この時間、キャッシュサーバは、同一の問い合わせに、覚えていた(キャッシュした)値を返してよい。逆に、今すぐに設定を書き換えても、86400秒は新しい設定を見てもらえない可能性があるということだ。
キャッシュサーバへの問い合わせ
+norec を外して
dig A www.example.com @8.8.8.8
8.8.8.8 を好きではない方には申し訳ないが…等としてみる。8.8.8.8 は公開キャッシュサーバである。
;; ANSWER SECTION: www.example.com. 4676 IN A 93.184.216.34
と答えが返ってくる。TTL の値が違うのが分かるだろう。
キャッシュするのは誰?
では、一般的なクライアントがアクセスする際に、キャッシュをしてしまうのは誰かというと、
・使っている PC
・PC の問い合わせ先キャッシュサーバ
であると考えられる。使っている PC の、キャッシュ時間がいくらぐらいなのかは、少し調べたがわからなかった。(TTL 以下でキャッシュをクリアしても問題がないのである)
問い合わせ先は、DHCP で設定されることもある。結局 ISP のサーバとなることが多いだろう。
設定が戻ったりするのはなぜなのさ
基本的に、問い合わせ先のキャッシュ DNS サーバ…つまり優先 DNS サーバは1台なので、戻ることはなさそうな気がする。
ここからが面倒なのだが、「同一 IP で実は複数のマシンが世界のあちこちに存在する」ということが許されており、そのような場合は、複数のマシンで別のキャッシュ応答をする可能性がありそうだ。
dig の問い合わせ先を、そのキャッシュサーバの IP に設定して、問い合わせを繰り返して確認するのが、「今何が起きているか」を把握するための、1番の近道だと思われる。
権威サーバ側についても同じ問題(IP anycast や 負荷分散)は生じえるが、こちらは遅れがあまりないうちに同期されるように、ドメイン管理業者がマネジメントしているはずである。
なぜ「DNSの浸透」は問題視されるのか は良い記事なので、ぜひ目を通していただきたい。
ディスカッション
コメント一覧
まだ、コメントがありません