メニュー
メニュー
日本語

【AdGuard DNS v2.10】構造化DNSエラー(SDE)に対応しました。

AdGuard DNS v2.10 のリリースは、重要性の観点からはDNS-over-QUICの実装と同等くらい大きいです。

AdGuard DNS は再び、公式な標準規格になる前の新機能を世界初で実装したパブリックDNSリゾルバになりました。今回の新機能は、「構造化DNSエラー(SDE:Structured DNS Error)」というものです。

本記事で、この機能の詳細とそれがなぜ重要なのかについて詳しく説明しております。

長文をお読みになるお時間がない場合は、こちらが簡単な概要です:

  • ウェブサイトがDNSレベルでブロックされた場合、ユーザーにはブロックの理由が説明されていない「このサイトにアクセスできません」や「インターネット接続なし」というエラーが表示されることがあります。
  • 理由を明確にするために、DNSサーバーがユーザーを説明付きの自身ページにリダイレクトさせることも可能です。しかし、この場合、HTTPSウェブサイト(大半のウェブサイトが該当)には別途の証明書が必要になります。
  • よりシンプルな解決策として、構造化DNSエラー(SDE)があります。DNS応答に追加情報(ブロックされた理由、責任者、連絡先など)を送信できるようにすることで、ブラウザがそれを読み取り、ユーザーに表示できるようになり、コミュニケーションの透明性が大幅に向上します。
  • このシステムを機能させるには、ブラウザが構造化DNSエラーをサポートする必要があります。これが私たちが提唱していることです。

具体的に、構造化DNSエラー(Structured DNS Errors)とは

DNSレベルのフィルタリングは広く使用されています。
AdGuard DNS だけでも1億人以上のユーザーがいます。
人々はDNSフィルタリングを使用して広告やトラッカーをブロックしたり、子供たちを保護したりしています。ユーザーが手動でDNSを設定していない場合でも、国や会社のポリシーにより、DNSフィルタリングに遭遇することがあります。
インターネットユーザーのほぼ全員がDNSでブロックされたウェブサイトに遭遇したことがあると考えても安全です。

DNSレベルのブロックは、ドメイン全体へのアクセスを阻止します。
ユーザーが https://example.com を訪問しようとすると、ブラウザがDNSリクエストを行い、DNSサーバーがドメインexample.comがブロックされていると応答し、ブラウザに「このサイトにアクセスできません」または「インターネット接続がありません」と表示されます。

「このサイトにアクセスできません」エラー

ユーザーがこのドメインを手動でブロックしていない場合を除いて、ページが開かない理由がわからないのが普通です。
この時は、ユーザーは次のように疑問に思うでしょう:

  • 「何か問題あるのかな?ページを再読み込みすべきかな?」
  • 「やっても解決しない。インターネット接続がダウンしているのか?」
  • 「いや、インターネットは問題ないね。ページがブロックされているのか?そうだ、でもなぜだ?」
  • 「自分が使っているDNSサービスがダウンしているのかもしれない。報告しておこー。」

このように、DNSサービスとユーザー間のコミュニケーション不足は問題です。
DNSサービス側は、この問題を解決することができますし、解決したいと考えています。例えば、ユーザーをより詳細な説明のあるページにリダイレクトし、何が起こったのか、誰に連絡すればよいのかをユーザーに知らせたいのです。

DNS側はなぜ単にそうしないのか?

それにはワケがあります:

  • HTTPウェブサイトの場合、つまり接続が暗号化されていない場合、DNSサーバーはユーザーを安全に暗号化されていないページにリダイレクトできます。
  • HTTPSウェブサイトの場合、ブラウザは証明書認証を行い、https://example.com の有効な証明書が表示されることを期待します。そこで AdGuard DNS が独自のページにリダイレクトすると、ブラウザは証明書検証エラーを出します。

証明書エラー

一つの解決策は、ユーザーのデバイスに特別な証明書をインストールすることです。しかし、これは常に可能であるとは限らず、安全でもありません。
もっと簡単な方法があります。それは、DNSレスポンスにさらに多くの情報を送信するという方法です。

これを実現するために、2020 Extended DNS Errors 標準 が導入され、DNS 応答にエラーコードと詳細情報を示す EXTRA-TEXT フィールドを含めることができるようになりました。また、構造化DNSエラーの草案では、ブラウザが簡単に読み取り、ユーザーフレンドリーな形式で表示できるI-JSON(JSONの制限付きプロファイル)ファイルをEXTRA-TEXTフィールドに追加することも提案されています。

I-JSONファイルには何が含まれるのでしょうか?

  • ブロックの理由
  • 誤ってブロックされた場合の問い合わせ先
  • このケースにおけるDNSフィルタリングの責任組織(任意)
  • その他の任意の情報

これは本当に便利です。このようなシステムは、DNSサービスとユーザー間の透明性を高め、ユーザーの安全性を確保します。ウェブサイトがブロックされた理由を理解していれば、ユーザーは安全なDNSサーバーを放棄して暗号化されていないサーバーに変更する可能性は低くなります。

拡張DNSエラーと構造化DNSエラーの実装に必要なもの

まず、ブラウザ側がこれらをサポートしている必要があります。
結局のところ、ユーザーにどのような情報を表示されるかは、ブラウザがを決定します。単なる接続エラーなのか、あるいはウェブサイトがブロックされた理由の詳細な説明と、次に何をすべきかを伝えるのかもブラウザが決定します。

そこで、私たちAdGuardはブラウザの代表者たちに、RFC8914 および、理想的にはその提案された更新 へのサポートを追加するよう呼びかけます。
この変更により、何十億もの人々にとってインターネットがより透明性が高く、使いやすくなるでしょう。

AdGuard DNS での表示

「ブラウザが対応しているとしたら、**構造化DNSエラー(SDE)**はどのように機能するか」を確認できるデモ拡張機能を作成しました。

この拡張機能を使用すると、AdGuard DNSによってブロックされたウェブサイトにアクセスしようとした場合、SDE経由で送信された情報を読み取り、わかりやすい説明ページを表示します。
上の例よりもずっとわかりやすいですよね?

説明ページ

拡張機能は Chrome Web Store または GitHub からインストールできます。

DNSレベルでどのように見えるかを確認したい場合は、digコマンドを使って、出力でEDEを見つけるといいです。

% dig @94.140.14.14 'ad.doubleclick.net' A IN +ednsopt=15:0000

...

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 1232
; EDE: 17 (Filtered): ({"j":"Filtered by AdGuard DNS","o":"AdGuard DNS","c":["mailto:support@adguard-dns.io"]})
;; QUESTION SECTION:
;ad.doubleclick.net.		IN	A

...

その他の改善点:ユーザーと組織向けのよりパーソナライズされた体験

自宅でDNSを設定する個人のユーザー様もあれば、大規模な組織のユーザー様もあります。
ユーザーのニーズや経験は様々です。
10台のデバイスを接続できればよく、手動設定で問題ない人もいれば、1,000台のデバイスを接続する必要があり、自動化を好む人もいます。
それぞれのユーザーのニーズをよりよく理解するために、目標や予想されるデバイスの数に関する情報を収集するためのアンケート調査を追加しました。

ダッシュボードのオンボーディング

これにより、例えば自動化オプションについてより詳しい情報を必要とするユーザーにそのような情報を提供するなど、将来的にDNSをカスタマイズするのに役立ちます。

ぜひご意見をお寄せください

いつも通り、フィードバックやご意見は SNS または GitHub にてお待ちしております。

この記事を気に入っていただけましたか?