著名Public DNSの日本直近バックエンドとEDNS Client Subnetのクエリログ

1か月ほど前に「Cloudflare Resolver(1.1.1.1)でArchive.todayにアクセスできなワケ」を書いたが、最近また同じような話題で盛り上がっているようだ。

そこで著名なPublic DNSのバックエンドとECS (EDNS Client subnet)の有無について、権威DNSサーバを立ち上げてクエリログを確認してみた。

テスト条件

テスト用DNSサーバ―にはICS BIND 9.12.4をインストールし、持て余していたgTLD(記事中ではexample.netに置き換えている)のゾーンを設定した。

テスト用クライアントにはWebARENAのVPSクラウド(157.65.27.7)にホスティングされているCMANインターネットサービスのnslookup(dig)テストを利用した。

Google Public DNS (8.8.8.8)

client 173.194.171.10#46726 (example.net): query: example.net IN A -E(0)DC (192.168.1.10) [ECS 157.65.27.0/24/0]
client 173.194.171.2#51854 (example.net): query: example.net IN A -E(0)DC (192.168.1.10)
client 172.217.42.10#43244 (example.net): query: example.net IN A -C (192.168.1.10)

Google Public DNSの日本直近のバックエンドは台湾にあるようだ。公式のFAQではGoogle Public DNSの使用する可能性のあるIPアドレス範囲として空港コード「nrt」(成田)=東京がリストに載っているが、お休み中だったのだろうか。全ての範囲が使用されるわけではない、という断り書きもある。

また、公式のFAQに書かれている通りECSを送信しており、1行目の末尾に[ECS 157.65.27.0/24/0]のログが確認できる。CMANの生IPアドレス(157.65.27.7)の上位24bit分が権威DNSサーバ側に通知されていることが分かる。

ECSは権威DNSサーバ側が対応していればデフォルトで有効であり、オプトアウトする手段は見つけることができなかった。

Cloudflare Resolver (1.1.1.1)

client 210.150.255.28#15514 (example.net): query: example.net IN A -E(0)DC (192.168.1.10)
client 162.158.116.10#35091 (example.net): query: example.net IN A -E(0) (192.168.1.10)
client 108.162.227.28#53869 (example.net): query: example.net IN A -E(0) (192.168.1.10)

Cloudflare Resolverの日本直近のバックエンドは日本国内に複数あり、要求ごとにラウンドロビンしているようだ。興味深いことに、下の2つはCloudflareの公開するIPアドレス範囲に属するが、1つ目はWebARENAのDNSサーバ(nc3.arena.ne.jp)である。何かの間違いではないかと思って条件を変えて試してみたが、やはりここからDNS要求が飛んで来た。どういうことだろうか。

公式の謳い文句通りECSは送信されていない。

Quad9 (9.9.9.9)

client 74.63.20.247#14233 (example.net): query: example.net IN NS -E(0)DC (192.168.1.10)
client 74.63.20.247#38853 (example.net): query: example.net IN A -E(0)DC (192.168.1.10)
client 74.63.20.247#60815 (example.net): query: example.net IN NS -E(0)DC (192.168.1.10)
client 74.63.20.247#22484 (example.net): query: example.net IN A -E(0)DC (192.168.1.10)
client 74.63.20.247#16466 (example.net): query: example.net IN NS -E(0)DC (192.168.1.10)
client 74.63.20.247#34062 (example.net): query: example.net IN A -E(0)DC (192.168.1.10)
client 74.63.20.247#13796 (example.net): query: example.net IN NS -E(0)DC (192.168.1.10)
client 74.63.20.247#53978 (example.net): query: example.net IN A -E(0)DC (192.168.1.10)
client 74.63.20.247#46582 (example.net): query: example.net IN NS -E(0)DC (192.168.1.10)
client 74.63.20.247#17755 (example.net): query: example.net IN A -E(0)DC (192.168.1.10)

Quad9の日本直近のバックエンドはシンガポールにあるようだ。

公式の謳い文句通りECSは送信されていない。

Quad9は2018年2月にプライバシーとCDNの恩恵のバランスを妥協したExtended Client Subnet (ECS) への対応予定を掲げていたが、まだ実現していないようだ。

この3秒後、同じくシンガポールからのDNS要求が記録されていた。

client 172.217.32.137#46789 (example.net): query: example.net IN AAAA -E(0)DC (192.168.1.10) [ECS 119.252.174.0/24/0]
client 74.125.190.138#48029 (example.net): query: example.net IN A -E(0)DC (192.168.1.10) [ECS 119.252.174.0/24/0]
client 74.125.190.154#47670 (example.net): query: example.net IN AAAA -E(0)DC (192.168.1.10)
client 74.125.190.151#54984 (example.net): query: example.net IN A -E(0)DC (192.168.1.10)
client 172.217.32.130#64387 (example.net): query: example.net IN AAAA -C (192.168.1.10)
client 74.125.190.151#45016 (example.net): query: example.net IN A -C (192.168.1.10)
client 74.125.190.154#44726 (example.net): query: example.net IN A -E(0)DC (192.168.1.10) [ECS 119.252.174.0/24/0]
client 74.125.190.140#63480 (example.net): query: example.net IN AAAA -E(0)DC (192.168.1.10) [ECS 119.252.174.0/24/0]
client 172.217.47.4#50367 (example.net): query: example.net IN A -E(0)DC (192.168.1.10)
client 172.217.47.1#61397 (example.net): query: example.net IN AAAA -E(0)DC (192.168.1.10)
client 172.217.32.142#36773 (example.net): query: example.net IN AAAA -C (192.168.1.10)
client 74.125.190.14#59459 (example.net): query: example.net IN A -C (192.168.1.10)

こちらはインドネシアのECSが含まれている。ユーザーからのDNS要求にはECSを含めないが、Quad9自身の自発的なDNS要求にはECSを含めるポリシーなのかもしれない。

Quad9 (9.9.9.10)

client 74.63.20.248#33583 (example.net): query: example.net IN A -E(0)D (192.168.1.10)

Quad9には悪意のあるドメインをブロックする9.9.9.9と、ノンブロックな9.9.9.10の2種類が用意されている。先人の調査によれば、1年前までは9.9.9.10ではECSが送信されるかのようにFAQに書かれていた(が実際には送信していないという挙動だった)ものの、現在FAQは修正され、両者ともECSは送信しないことになっている。

Secure IP: 9.9.9.9 Provides: Security blocklist, DNSSEC, No EDNS Client-Subnet sent. If your DNS software requires a Secondary IP address, please use the secure secondary address of 149.112.112.112
Unsecured IP: 9.9.9.10 Provides: No security blocklist, no DNSSEC, No EDNS Client-Subnet sent. If your DNS software requires a Secondary IP address, please use the unsecured secondary address of 149.112.112.10

OpenDNS (208.67.222.222)

client 208.69.37.70#60650 (example.net): query: example.net IN A -E(0) (192.168.1.10)
client 208.69.37.70#2543 (example.net): query: example.net IN A - (192.168.1.10)

OpenDNSの日本直近のバックエンドは日本国内にあるようだ。

デフォルトでECSは含まれていないが、メールで申請することでホワイトリストに加えることができるらしい。

IIJ Public DNSサービス

client 203.180.146.222#35403 (example.net): query: example.net IN A -E(0)DC (192.168.1.10)
client 203.180.146.222#49861 (example.net): query: example.net IN A -E(0)DC (192.168.1.10)
client 203.180.146.222#19257 (example.net): query: example.net IN A -E(0)DC (192.168.1.10)
client 203.180.146.222#57191 (example.net): query: example.net IN A -E(0)DC (192.168.1.10)
client 203.180.146.222#12428 (example.net): query: example.net IN AAAA -E(0)DC (192.168.1.10)
client 203.180.146.222#35347 (example.net): query: example.net IN NS -E(0)DC (192.168.1.10)
client 203.180.146.222#39293 (example.net): query: example.net IN A -E(0)DC (192.168.1.10)
client 203.180.146.222#33898 (example.net): query: example.net IN AAAA -E(0)DC (192.168.1.10)
client 203.180.146.222#39387 (example.net): query: example.net IN NS -E(0)DC (192.168.1.10)
client 203.180.146.222#29738 (example.net): query: example.net IN AAAA -E(0)DC (192.168.1.10)
client 203.180.146.222#46636 (example.net): query: example.net IN NS -E(0)DC (192.168.1.10)
client 203.180.146.222#52999 (example.net): query: example.net IN AAAA -E(0)DC (192.168.1.10)
client 203.180.146.222#55911 (example.net): query: example.net IN NS -E(0)DC (192.168.1.10)
client 203.180.146.222#59612 (example.net): query: example.net IN AAAA -E(0)DC (192.168.1.10)
client 203.180.146.222#55188 (example.net): query: example.net IN NS -E(0)DC (192.168.1.10)
client 203.180.146.222#39830 (example.net): query: example.net IN A -E(0)DC (192.168.1.10)

昨日ベータ版が公開されたIIJ Public DNSサービス(https://public.dns.iij.jp/dns-query)の日本直近のバックエンドは当然ながら日本国内にあるようだ。

FAQでは言及されていないが、ECSは送信されていない。

まとめ

WebARENAからのテストだけでは心許ないのでOCN回線からも追試したが、概ね同様の結果が得られた。

今回テストしたPuclic DNSサービスの中で、デフォルトでユーザーのECSを送信しているのはGoogle Public DNSのみであった。Cloudflare ResolverとOpenDNSはECSを送信しないが、バックエンドが国内にあるため、CDNトラフィックの混乱は少ないように思える。Quad9はECSを送信しない上に日本直近のバックエンドが東南アジアのため、CDNの混乱で不便を被る可能性があるが、ブロックリストやDoHといった便益と引き換えにするかはユーザーに選択権がある。

WebサーバにアクセスするとIPアドレスが残ることは知られているし、DNSリゾルバも同様であることは自明だが、その先の権威DNSサーバにまでECSでIPアドレスの一部が送信される事はもっと広く知られて良いだろう。