見出し画像

Cloudflare Resolver(1.1.1.1)でArchive.todayにアクセスできないワケ

Cloudflare ResolverとHTTPS Everywhereが原因でArchive.todayにアクセスできなかった話」を書いた後、改めて調べてみると、その原因が何となく解ってきた。

結論から言うと、Archive.todayが意図的にCloudflareからのDNS問い合わせをブロックしていた。

海外では既知の問題

Cloudflare Resolver(1.1.1.1)でArchive.todayにアクセスできない件は、2018年2月の時点で既知の問題であった。

Cloudflare側の主張2018年の春にはCloudflare Communityにスレッドが立ち、Cloudflareの開発者が問題の解決にあたるが、Archive.today側に問題があるとしてスレッドは閉じられてしまう。

調査の結果、archive.isのネームサーバ(anna.archive.is)は通常Aレコードでホスティング事業者OVHのIPアドレスを返すが、問い合わせ元がCloudflareの場合に限って、何故かCNAMEレコードで"cdn-wo-ecs.archive.is"(サブドメインはおそらく"Content Delivery Network without  EDNS Client Subnet"の意)を返すことが判明している。その"cdn-wo-ecs.archive.is"のAレコードにはCloudflareのIPアドレス(104.28.24.2)が設定されているが、Archive.todayは現在Cloudflareを利用していないため、このDNS応答を使ったHTTPリクエストは失敗するのだという。

なお上記は2018年当時の話であり、現在はCloudflare Resolverを通じたDNS要求にはAレコードでループバックアドレス(127.0.0.3や127.0.0.4)を返す。FirefoxでCloudflare Resolverを設定していても別のリゾルバにフォールバックしてArchive.todayにアクセスできるようになったのは、それが関係しているのだろう。

世界各地からのDNS応答はDig web interfaceで調べることができる。これでarchive.isを調べると、要求元の回線に応じて様々なAレコードが返ってくることが分かる。それぞれが直近のOVHのCDNサーバのIPアドレスのようだ。

archive.is@1.1.1.1 (CloudFlare):
archive.is. 69814 IN A 127.0.0.3
archive.is@8.8.8.8 (Google):
archive.is. 297 IN A 78.108.190.21
archive.is@208.67.222.222 (OpenDNS):
archive.is. 159 IN A 51.38.113.224
archive.is@9.9.9.9 (Quad9):
archive.is. 300 IN A 46.45.185.30

Archive.todayの主張

2018年7月にとあるセキュリティ研究者が上記のスレをArchive.todayのTwitterアカウント(@archiveis)に示して対応を求めるが、Archive.today側はCloudflare ResolverがEDNS Client Subnetをサポートしていないことを理由に対応を拒んでいる。

ここでCloudflareの部門責任者であるJustin(@xxdesmus)が会話に混じってくる。

Archive.today曰く、DNSとHTTPリクエストの送信元の不一致は多くのトラブルを引き起こすので、EDNS情報が欠落したCloudflareからのDNS要求を無効と見なしているのだという。さらに続けて、

1.1.1.1(ECSをサポートしないパブリックリゾルバ)の背後にある理念は、Anycast IPにお金を払う余裕がなく、DNSからの情報に依存している格安CDNに妨害を与えることです。

と陰謀論めいたことを述べている。

すかさずJustinがそれを否定し、EDNSはエンドユーザーのプライバシーに関する情報(IPアドレスの一部)を漏洩することになる(のでCloudflareでは対応してない)と述べているが、EDNSで漏洩する情報はDNSの次に行われるHTTPリクエストに含まれる情報に比べたら微々たるものだとArchive.todayが反論したところでリプライ合戦は終わっている。

本当にEDNS Client Subnetが理由?

確かにCloudflare Resolverはユーザのプライバシー保護を理由にEDNS Client Subnetに対応していない。

1.1.1.1 is a privacy centric resolver so it does not send any client IP information and does not send the EDNS Client Subnet Header to authoritative servers.
(1.1.1.1はプライバシー重視のリゾルバであるため、クライアントのIP情報は送信せず、権威サーバにEDNS Client Subnetヘッダは送信されません。)

そのため、ネームサーバ(権威サーバ)はクライアントの位置情報を知ることができず、遠くのエッジサーバからArchive.todayのコンテンツをダウンロードすることになる可能性はある。

しかし、たったそれだけのことでダミーのCNAMEレコードを用意してまでCloudflare Resolverを積極的に排除しようとする姿勢は余人に理解しがたいものがある。Twitterでの攻撃的な言動から察するに、Cloudflareに対して何か確執や遺恨でもあるのだろうか。

Google Public DNSを利用してEDNS Client Subnetヘッダによる位置情報の推定を許容するか、普段はCloudflare Resolverを利用しつつArchive.todayは通常のDNSリゾルバへのフォールバックを許容するか、完全にCloudflare ResolverのみとしてArchive.todayへのアクセスは諦めるか、どれも大差ないように思えるのがまた悩ましい。