※ 2019 年 8 月 26 日現在の情報をもとに作成しています
1. はじめに
Umbrella の DNS サーバー (208.67.222.222/208.67.220.220) には、ドメインの名前解決にかかる時間を短くする技術やプライバシーに関する技術が取り入れられています。本記事では、これらに該当する Anycast DNS と EDNS Client Subnet、QNAME Minimization の概要について説明します。
2. Anycast DNS
Anycast DNS は、複数の DNS サーバーに対して同じ IP アドレスを設定する技術のことで、この IP アドレスに対して DNS クエリーを送信すると、送信者の最寄りの DNS サーバーが応答を返します。
例えば、日本国内から Umbrella の DNS サーバー (208.67.222.222/208.67.220.220) 宛てに DNS クエリーを送信した場合、利用している ISP にもよりますが、通常、東京、香港、シンガポールのデータセンターにある DNS サーバーから応答が返り、高速な名前解決が期待できます。
以下のページには、Umbrella の DNS サーバーが収容されている世界各地のデータセンターに関する情報があります。
DATA CENTER LOCATIONS
https://www.opendns.com/data-center-locations/
実際にどのデータセンターへ DNS クエリーが送られるかは、nslookup –type=txt debug.opendns.com. コマンドを実行することで確認することができます。以下はその実行例 (一部抜粋) となります。
> nslookup -type=txt debug.opendns.com.
サーバー: resolver1.opendns.com
Address: 208.67.222.222
権限のない回答:
debug.opendns.com text =
"server m53.nrt"
この server m53.nrt という箇所がデータセンターの場所を示しており、nrt は東京を意味します。
Which Geographical Location is my DNS Traffic Routed to?
https://support.umbrella.com/hc/en-us/articles/115005880266-Which-Geographical-Location-is-my-DNS-Traffic-Routed-to-
なお、Umbrella では Anycast の IP アドレスを DNS サーバーのほか、Intelligent Proxy サーバーやブロック ページのサーバーでも使用し、アクセスの高速化を図っています。
以下のブログ記事には、Umbrella が使用している Anycast DNS についてのより詳細な説明がありますので、併せてご参照ください。
How OpenDNS achieves high availability with Anycast routing
https://umbrella.cisco.com/blog/2013/01/10/high-availability-with-anycast-routing/
3. EDNS Client Subnet
EDNS Client Subnet は前項の Anycast DNS とは異なり、Umbrella の DNS サーバーと CDN (Content Delivery Network) が管理する権威 DNS サーバー間で用いられる技術です。

具体的には、Umbrella の DNS サーバーが CDN の権威 DNS サーバーに問い合わせを行う際、まず DNS の拡張領域 (EDNS) にクライアントの IP アドレスのサブネット (通常、/24) を格納します。そして、CDN の権威 DNS サーバーはその情報をもとにクライアントから最も近いと思われる IP アドレスを返します。
これにより、クライアントは最寄りの CDN のサイトにアクセスできることになります。なお、EDNS Client Subnet は登録制 (Whitelist) となっており、すべての権威 DNS サーバーに対して行われるわけではありません。
EDNS と聞いて、クライアントの DNS クエリーが Umbrella の DNS サーバーに送られる際の付加情報のことを思い出された方がいるかもしれませんが、こちらも同じ EDNS の領域を使用しています。EDNS は自由に情報が入れられる構造となっています。
※ EDNS0 という名前が使われている文書がありますが、EDNS0 は EDNS バージョン 0 のことを指し、現時点では EDNS とほぼ同じ意味で用いられます
以下のサポート記事には、EDNS Client Subnet についてのより詳細な情報と、一部の CDN との間で注意すべき点についての説明があります。
Akamai Content and Cisco Umbrella: Understanding issues with CDNs and troubleshooting steps
https://support.umbrella.com/hc/en-us/articles/230563447-Akamai-Content-and-Cisco-Umbrella-Understanding-issues-with-CDNs-and-troubleshooting-steps
また、OpenDNS のサポート記事となりますが、以下のリンクにも EDNS Client Subnet に関する情報があります。
Using dig for testing EDNS client-subnet
https://support.opendns.com/hc/en-us/articles/227987687-Using-dig-for-testing-EDNS-client-subnet
EDNS Client Subnet FAQ
https://support.opendns.com/hc/en-us/articles/227987647-EDNS-Client-Subnet-FAQ
4. QNAME Minimization
Umbrella の DNS サーバーは、ユーザーからの問い合わせの回答をキャッシュしていない場合、通常のフル サービス リゾルバと同様に DNS ルート サーバーから順に問い合わせを行って、最終的に回答を得ます。例えば、www.cisco.com の名前解決の場合、ルート サーバー、com. の DNS サーバー、cisco.com. の DNS サーバーの順に問い合わせを行います。
そして、Umbrella の DNS サーバーはこれらの問い合わせの際に、各 DNS サーバーに対して、名前解決したいドメイン名 (上記の例だと www.cisco.com) を情報として送ります。言い換えれば、問い合わせを受ける DNS サーバーは、名前解決したいドメイン名を知ることができます。また、この DNS クエリーを中継する機器も、盗聴によりドメイン名を知ることが技術的に可能です。
この「何を問い合わせした」という情報が知られるだけでは、それほど大きな問題とはならないと考えられますが、前述の EDNS Client Subnet に含まれる IP アドレスのサブネットと組み合わせると、「誰が (どこが) 何を問い合わせした」というプライバシーに関わる情報を提供してしまうことになります。
この問題に対応するため、Umbrella の DNS サーバーに QNAME Minimization (RFC 7816) が導入されました。
QNAME Minimization を DNS サーバーに導入すると、各 DNS サーバーへの問い合わせの際に、名前解決したいドメイン名をそのまま送るのではなく、ドメイン名の必要な部分のみを送ります。この QNAME Minimization の詳細な動作や注意点については以下のサポート記事に記載されています。
Cisco Umbrella DNS and QNAME Minimization
https://support.umbrella.com/hc/en-us/articles/360032551931-Cisco-Umbrella-DNS-and-QNAME-Minimization