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の浸透」は問題視されるのか は良い記事なので、ぜひ目を通していただきたい。

misc

Posted by tako