DNS のあれこれについて。
権威サーバーとキャッシュサーバー
DNS といっても、大きく 2 つの機能に分かれている。それが権威サーバーと キャッシュサーバー。権威サーバーは自身が管理するドメインの名前と IP ア ドレスを解決するサーバー。データソースみたいなもの。キャッシュサーバー は、自身以外のドメインも含めた名前解決サーバー。自身が管理していないド メインについては、再帰的に上位サーバーへ問い合わせる。問い合わせ結果を キャッシュする (?) ので、キャッシュサーバーと呼ばれる。名前解決専用み たいなもの。
BIND は両方の機能を持つ。NSD は権威サーバーのみ、Unbound はキャッシュ サーバーのみの機能を持つ。
zone ファイル
zone ファイルの形式は RFC 1035 で規定されている。なので BIND でも NSD でも使いまわせる。
内部向け DNS, 外部向け DNS
zone ごとにアクセスを受け付けるホストを設定することができる。このとき ローカルネットワークからのアクセスを認めるのが内部向け、どこのアクセス からでも受け入れるのが外部向けの DNS であると言える。
内部向けは、その名の通り内部ネットワーク用の名前解決サーバーである。
外部向けは、自身が管理するドメインを、外部ネットワークに知らせるための サーバーであると言える。例えば IP アドレス a.b.c.d を自身が持つドメイ ン example.com に割り当てるとして、外部向け DNS にて
exapmle.com IN A a.b.c.d
のような記述を行っておく。このような設定しておき、しばらく放っておくと、 名前の情報が外部の DNS サーバーへ「浸透」して、他の DNS サーバーでも example.com の名前解決ができるようになる。
mydns.jp について
mydns.jp では、サービス自体が DNS サーバーを提供している。よって mydns.jp の DDNS サービスを使ってサーバーを運用する場合、外部向けの DNS は不要である (mydns.jp が肩代わりしている)。
NSD と Unbound の連携
名前解決はあくまでも Unbound が行うものである。ローカルネットワーク専 用の名前解決を行う場合には、
- Unbound 自身の設定に 名前 <-> アドレス の対応を埋め込む
- 権威サーバーに移譲する
の 2 つの対応を選択することができる。前者は CNAME などを扱えないので、 この辺が使いたければ後者を選択することになる。権威サーバーとは、すなわ ち NSD や BIND のことを指す。
NSD と Unbound は、役目は異なるものの同じ DNS サーバーという括りである ため、デフォルトのポート番号として、いずれも 53 番が割り当てられている。 同じサーバー上で 2 つのサービスを同時に動かしたい場合には、ポート番号 を変える必要がある。
Unbound には do-not-query-localhost
というオプションがあり、その名の
通り、ローカルホストへの名前解決クエリを発行するかどうかのオプションで
ある。デフォルトでは yes
(つまりクエリ発行しない) となっているが、同
一ホスト上で移譲先の権威サーバーを動かす場合には、これを no
としなけ
ればならない。