(bind)ルートDNSサーバとキャッシュサーバの関係とnamed.caについて

名前解決の流れを整理

https://www.xxx.jp というWebサイトにアクセスする場合
①クライアントAは「www.xxx.jp」のIPアドレスを知る為に、PCに設定されたDNSキャッシュサーバに名前解決を依頼する。
②名前解決を依頼された検索用DNSサーバはルートDNSサーバに問い合わせをする。
③ルートDNSサーバ自身は「www.xxx.jp」のIPアドレスは知らないが、「.jp」ドメインを管轄しているDNSサーバBのIPアドレスを知っているのでそのアドレスを返す。
④DNSキャッシュサーバはDNSサーバBに対して問い合わせをする。
⑤DNSサーバB自身は「www.xxx.jp」のIPアドレスは知らないが、「xxx.jp」ドメインを管轄しているDNSサーバCのIPアドレスを知っているのでそのアドレスを返す。
⑥DNSキャッシュサーバはDNSサーバCに対して問い合わせをする。
⑦DNSサーバCは「www.xxx.jp」のIPアドレスを知っているのでそのアドレスを返す。
⑧DNSキャッシュサーバはクライアントAに「www.xxx.jp」のIPアドレスを返す。
⑨DNSキャッシュサーバは「www.xxx.jp」のIPアドレスを元に「https://www.xxx.jp」へアクセスする。

DNSキャッシュサーバのパターン

①ISPが運用するDNSキャッシュサーバを使用する場合
一番スタンダードで特に追加の設定は不要。ONUからIPアドレスを自動取得するとISPのDNSキャッシュサーバも一緒に降ってくる。
②インターネット上のDNSキャッシュサーバを使用する場合
PCにインターネット上のDNSキャッシュサーバのアドレスを手動設定する。有名なDNS1サーバでgoogleの8.8.8.8などがある。
③自前でキャッシュサーバを用意する場合
PCに自前で用意したのDNSキャッシュサーバのアドレスを手動設定する。

named.caについて

自前でキャッシュサーバを用意する場合はLinuxのBIND等を使ってDNSキャッシュサーバを構築する必要がある。

名前解決の流れで記載した通り、DNSキャッシュサーバはルートDNSサーバのに問い合わせを行うのでルートDNSサーバの情報を持っている。デフォルトでは「named.ca」という名前のファイルに記載されていたので中身を見てみる。

; <<>> DiG 9.11.3-RedHat-9.11.3-3.fc27 <<>> +bufsize=1200 +norec @a.root-servers.net
; (2 servers found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 46900
;; flags: qr aa; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 27

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1472
;; QUESTION SECTION:
;.                              IN      NS

;; ANSWER SECTION:
.                       518400  IN      NS      a.root-servers.net.
.                       518400  IN      NS      b.root-servers.net.
.                       518400  IN      NS      c.root-servers.net.
.                       518400  IN      NS      d.root-servers.net.
.                       518400  IN      NS      e.root-servers.net.
.                       518400  IN      NS      f.root-servers.net.
.                       518400  IN      NS      g.root-servers.net.
.                       518400  IN      NS      h.root-servers.net.
.                       518400  IN      NS      i.root-servers.net.
.                       518400  IN      NS      j.root-servers.net.
.                       518400  IN      NS      k.root-servers.net.
.                       518400  IN      NS      l.root-servers.net.
.                       518400  IN      NS      m.root-servers.net.

;; ADDITIONAL SECTION:
a.root-servers.net.     518400  IN      A       198.41.0.4
b.root-servers.net.     518400  IN      A       199.9.14.201
c.root-servers.net.     518400  IN      A       192.33.4.12
d.root-servers.net.     518400  IN      A       199.7.91.13
e.root-servers.net.     518400  IN      A       192.203.230.10
f.root-servers.net.     518400  IN      A       192.5.5.241
g.root-servers.net.     518400  IN      A       192.112.36.4
h.root-servers.net.     518400  IN      A       198.97.190.53
i.root-servers.net.     518400  IN      A       192.36.148.17
j.root-servers.net.     518400  IN      A       192.58.128.30
k.root-servers.net.     518400  IN      A       193.0.14.129
l.root-servers.net.     518400  IN      A       199.7.83.42
m.root-servers.net.     518400  IN      A       202.12.27.33
a.root-servers.net.     518400  IN      AAAA    2001:503:ba3e::2:30
b.root-servers.net.     518400  IN      AAAA    2001:500:200::b
c.root-servers.net.     518400  IN      AAAA    2001:500:2::c
d.root-servers.net.     518400  IN      AAAA    2001:500:2d::d
e.root-servers.net.     518400  IN      AAAA    2001:500:a8::e
f.root-servers.net.     518400  IN      AAAA    2001:500:2f::f
g.root-servers.net.     518400  IN      AAAA    2001:500:12::d0d
h.root-servers.net.     518400  IN      AAAA    2001:500:1::53
i.root-servers.net.     518400  IN      AAAA    2001:7fe::53
j.root-servers.net.     518400  IN      AAAA    2001:503:c27::2:30
k.root-servers.net.     518400  IN      AAAA    2001:7fd::1
l.root-servers.net.     518400  IN      AAAA    2001:500:9f::42
m.root-servers.net.     518400  IN      AAAA    2001:dc3::35

;; Query time: 24 msec
;; SERVER: 198.41.0.4#53(198.41.0.4)
;; WHEN: Thu Apr 05 15:57:34 CEST 2018
;; MSG SIZE  rcvd: 811

A~Mまでの13個のルートDNSサーバのアドレスが記載されている。この情報をもとに冒頭に書いた流れの「www.xxx.jp」の名前解決が出来ていることになる。
ちなみにこの情報は変更されることがあるので、自前でキャッシュサーバを用意する場合は定期的に変更確認をしないといつの間にかインターネット上のWebサイトに繋がらなくなることが考えられる。
因みにこのファイルの最新版は下記のリンクに「named.cache」という名前で存在する。
最新版