Chapter 03

DNSの全体像を把握しよう(実践編)

koyamaso
koyamaso
2021.04.07に更新

curl google.comを実行した時、どのように動いているかを示します

ここでは具体的なソフトウェアの名前を書いていますが、これらを一般的な用語と対応させていきます

スタブリゾルバ(DNSクライアント)

https://jprs.jp/glossary/index.php?ID=0197 より引用すると

自身で名前解決ができないため、通常、フルサービスリゾルバー(キャッシュDNSサーバー)に名前解決の実行を委ねるリゾルバーです。プログラムをコンパクトにできることから主として利用者側の端末で動作し、アプリケーションとの橋渡しを行います。
例えば、Webブラウザーがドメイン名に対応するIPアドレスを調べる場合、そのWebブラウザーがスタブリゾルバーを呼び出します。スタブリゾルバーは、フルサービスリゾルバー(キャッシュDNSサーバー)に対して問い合わせを行い、得られた応答結果をWebブラウザーに返します。

一般的なソフトウェアは名前解決をしたいとき、getaddrinfo を呼び出します

getaddrinfoglibc/resolv を呼び出すことがあります。

glibc/resolvでは/etc/resolv.confに書かれているIPアドレスに向けて名前解決をリクエストします
glibc/resolvをスタブリゾルバ、またはDNSクライアントと呼びます。

スタブリゾルバを構成する主なソフトウェアを示します。
これらは自身で名前解決が出来ません。

  • glibc/resolv
  • systemd-resolved
  • dnsmasq

フルサービスリゾルバ(キャッシュDNSサーバー)

https://jprs.jp/glossary/index.php?ID=0158 より引用すると

フルサービスリゾルバー(キャッシュDNSサーバー)
スタブリゾルバー(DNSクライアント)から送られる「名前解決要求」を受けて、他の権威サーバー(権威DNSサーバー)に対して「非再帰検索(反復検索)」という形で問い合わせを行い、その結果をスタブリゾルバーに応答として返すリゾルバーです。

ネームサーバで最も有名なソフトウェアはBINDです。

BINDの設定は基本的に/etc/named.confまたは/etc/bind/named.confに記述されています。

$ cat /etc/named.conf
option {
(中略)
  recursion: yes;
(中略)
}

recursion: yesとなっていると、再帰検索要求を受け付けます。このとき、BINDはフルサービスリゾルバ(別名: キャッシュDNSサーバ、再帰的DNSサーバなど)の役割を果たします。

フルサービスリゾルバを構成する主なソフトウェアを示します。

  • (recursion: yesが設定されている) BIND
  • Unbound

権威サーバー(権威DNSサーバー)

https://jprs.jp/glossary/index.php?ID=0145 より引用すると

DNSにおいて、あるゾーンの情報を保持し、他のサーバーに問い合わせることなく応答を返すことができるサーバーのことです。
権威サーバー(権威DNSサーバー)は、自身が管理するゾーン及び委任情報(委任先の権威サーバーに関する情報)を保持し、問い合わせに対して自身が管理している情報のみを答えます。

基本的に再帰検索要求を受け付けず、反復検索要求のみを受け付けます。反復検索では、自身が持っている情報のなかで最適なものを返します。

権威サーバーを構成する主なソフトウェアを示します

  • BIND
  • NSD