※ 2019 年 11 月 14 日現在の情報をもとに作成しています
1. はじめに
本記事では Umbrella の DNS サーバー (208.67.222.222/208.67.220.220) のキャッシュ機能について解説します。
2. DNS クエリーの流れとキャッシュについて
まずは一般的な DNS サーバーにおける DNS クエリーの流れとキャッシュについて説明します。
DNS サーバーには大きく分けて 2 種類あり、ユーザーからの DNS クエリーを代理で対応し、結果を内部にキャッシュする「キャッシュ DNS サーバー」と、特定のドメイン情報を管理する「権威 DNS サーバー」があります。
ユーザーの DNS クエリーはこれら 2 種類のサーバーが連携して名前解決が行われることになりますが、実際の DNS クエリーの流れはキャッシュ DNS サーバー上にキャッシュがあるかないかで大きく異なります。
まずは umbrella.com の A レコードの問い合わせを例に、キャッシュがない場合を見てみます。なお、説明をシンプルにするため、ルート ドメインなどへの問い合わせについては割愛します。
まず、ユーザーから送られてきた umbrella.com の DNS クエリーを受け取ったキャッシュ DNS サーバーは、内部に umbrella.com のキャッシュがあるかどうかを調べます。この例では umbrella.com のキャッシュはないため、umbrella.com を管理する権威 DNS サーバーに問い合わせます。
umbrella.com の権威 DNS サーバーは、umbrella.com の IP アドレスとともに TTL などの情報を返します。なお、TTL は Time To Live の略で、キャッシュを行う時間を権威 DNS サーバー側が指定したものです。
その結果を受け取ったキャッシュ DNS サーバーは、問い合わせ結果を内部にキャッシュし、そのままユーザーに返します。
以上の流れを図に表すと以下のとおりです。

※ 5 番と 6 番の順序が逆の場合もあります
一方、キャッシュ DNS サーバーに umbrella.com のキャッシュがある場合、権威 DNS サーバーへの問い合わせは行われず、キャッシュしてある内容をユーザーに返します。なお、その際の TTL にはキャッシュ DNS サーバーの残り時間が設定されます。図に表すと以下のとおりです。

3. Umbrella の DNS サーバーの場合
Umbrella の DNS サーバーは「キャッシュ DNS サーバー」の機能のみを持ち、実際に行われる動作は基本的に前項で説明したものと同じです。ただし、一つ特徴的な点があります。
それは、Umbrella の DNS サーバーは多くのサーバーによって冗長化されており、ユーザーの DNS クエリーは都度別々のサーバーに送られ、各々のサーバーに結果がキャッシュされることです。これにより、サーバーごとのキャッシュの残り時間はばらばらになります。
例えば、現在、サーバー A が保持する umbrella.com のキャッシュの TTL が 100 秒なのに対し、サーバー B が保持する umbrella.com のキャッシュの TTL は 200 秒といった状況です。
これは、dig コマンドを連続的に実行した際に、その都度アクセスが行われるサーバーが異なり、TTL の値が異なることからも分かります。
(1 回目)
dig umbrella.com @208.67.222.222
;; QUESTION SECTION:
;umbrella.com. IN A
;; ANSWER SECTION:
umbrella.com. 100 IN A 67.215.70.42
(2 回目)
dig umbrella.com @208.67.222.222
;; QUESTION SECTION:
;umbrella.com. IN A
;; ANSWER SECTION:
umbrella.com. 200 IN A 67.215.70.42
※ 出力結果の一部を抜粋
4. キャッシュの参照とクリア
Umbrella では、データセンターごとに保持されている A レコードのキャッシュを参照し、必要に応じてキャッシュをクリアできるサイトを用意しています。サイトの使い方については、以下の記事で説明されています。
How to refresh the DNS cache on OpenDNS' Global Resolvers?
https://support.opendns.com/hc/en-us/articles/227987067-How-to-refresh-the-DNS-cache-on-OpenDNS-Global-Resolvers-
※ OpenDNS とありますが、Umbrella でも同様に使えます