清水理史の「イニシャルB」
Windows 11で可能になったパブリックDNS利用時のDoHによる暗号化を試す
2021年11月22日 06:00
Windows 11では、ネットワークとインターネット設定からアダプターごとに「DNS over HTTPS(DoH)」の設定が可能になった。Google(8.8.8.8)やCloudflare(1.1.1.1)などのパブリックDNSを利用する場合は、端末とDNSサーバーとの間の通信を暗号化できる。
DoHがネットワークアダプターの設定に登場
従来のWindows 10では、Edgeのオプション設定として用意されていたDoHが、Windows 11ではネットワークアダプターの設定として利用可能になった。
これにより、Edge以外のウェブブラウザーやアプリでも名前解決にDoHが利用できるようになり、パブリックDNSを利用した名前解決を暗号化できるようになった。
DoHは、HTTPSの仕組みを利用して、DNSの問い合わせや応答を暗号化する仕組みだ。従来のDNSでは、「watch.impress.co.jp」というホスト名から実際に通信するための宛先となる「202.218.128.207」というIPアドレスを知るために、「watch.impress.co.jp」というホスト名を平文のままDNSサーバーに送信する仕組みとなっていた。これを暗号化しようというわけだ。
DNSの通信を暗号化する方法は、大きく分けて「DNS over TLS(DoT)」と「DNS over HTTPS(DoH)」の2種類がある。
DoTは、TLSの仕組みを利用する方法で、853番ポートを利用してDNSのやり取りを暗号化する。どちらかというと特定のアプリの通信に依存せず、OS全体で利用する仕組みとして利用されるが、現状、Windows 11ではサポートされていない。
一方のDoHは、HTTPSの仕組みを利用する方法で443番ポートを利用してDNSのやり取りを暗号化する。こちらは、ウェブブラウザー向けの機能として提供されてきたが、Windows 11では、アダプターの設定としてOS全体に適用可能となっている。
DoTは853番ポートを利用するためファイアウォールなどで遮断される可能性があるが、DoHはHTTPSと同じ443番ポートを利用するため、ほとんどの環境で利用可能なのがメリットとなる。
なお、DoHで暗号化されるのは端末と参照サーバーの間の通信のみとなる。パブリックDNSのサーバー(例えば8.8.8.8や1.1.1.1)との間のやり取りは暗号化されるが、このサーバーで参照できなかった(キャッシュにない)場合に、実際にその情報が登録されている権威サーバーと参照サーバーの間でやり取りされる情報は平文となる。
いつ利用する機能なのか?
具体的にどのようなシーンで利用するかというと、外出先での利用が想定される。
例えば、公衆Wi-Fiなどのインターネット接続サービスを利用する場合、自動設定されるDNSが信頼できない、応答が遅い、もしくはセキュリティ目的のフィルタリングがかかっていて意に反して通信がブロックされる、といったケースがある。
この場合、GoogleやCloudflareが提供するパブリックDNSを設定し、標準DNSを利用しないことで、上記の問題を回避することができる。
しかし、パブリックDNSはインターネット上に存在するため、その経路上で通信が盗聴されたり、改ざんされたりする可能性がゼロとは言えない。そこで、DoHでDNSに対する問い合わせや回答を暗号化して保護しようというわけだ。
DNSの通信を暗号化しようという試みには、プライバシーの保護とセキュリティ上の対策という大きく2つの側面があるが、Windows 11に搭載される機能は、どちらかというと後者、つまり経路上の中間者攻撃を防ぐ目的で利用される機能と言える。
なお、後述するように、そもそもDHCPでルーターからDNSのアドレスを取得したり、プロバイダーのDNSを設定したりする場合、この機能は有効にできない。というか、あまり意味がない。なぜなら、自宅内のルーターとの通信やISPとの間の通信が盗聴される可能性は低いからだ。あくまでもパブリックDNSを利用する場合に、暗号化を設定する機能となる。
Windows 11でDoHを設定する
DoHの設定は、[設定]の[ネットワークとインターネット]の項目から実行するが、有線LANとWi-Fiでは設定方法が微妙に異なる。
有線LANの場合は、接続中のイーサネットのプロパティを表示し、[DNSサーバーの割り当て]にある[編集]をクリックする。標準では[自動(DHCP)]となっているので、これを手動に切り替え、優先DNSと代替DNSに以下のパブリックDNSのアドレスを設定し、[暗号化のみ(HTTPS経由のDNS)]を選択する。
事業者 | プライマリ | セカンダリ |
8.8.8.8 | 8.8.4.4 | |
Cloudflare | 1.1.1.1 | 1.0.0.1 |
Quad9 | 9.9.9.9 | 149.112.112.112 |
事業者 | プライマリ | セカンダリ |
2001:4860:4860::8888 | 2001:4860:4860::8844 | |
Cloudflare | 2606:4700:4700::1111 | 2606:4700:4700::1001 |
Quad9 | 2620:fe::fe | 2620:fe::9 |
[記事訂正:2022年11月21日]
上記の表において、IPv6のQuad9のセカンダリサーバーの記述に誤りがありました。お詫びして訂正いたします。
誤:2620:fe::fe:9
正:2620:fe::9
Wi-Fiの場合は、接続先のプロパティではなく、[設定]の[Wi-Fi]から[ハードウェアのプロパティ]を開き、ここで上記と同様にDNSサーバーの割り当てを編集する。Wi-Fiの場合、利用場所ごとにSSIDが切り替わるため、SSIDに紐づくプロパティではなく、ハードウェアそのもののプロパティで設定する必要があるわけだ。
なお、パブリックDNSは上記以外に国内でIIJが試験的に提供しているサービスもあるが、Windows 11では、あらかじめOSにパブリックDNSとして登録されているサービスでないと暗号化をオンにできない(グレーアウトして有効化できない)仕様になっている。
設定の確認
設定ができたかどうかは、Cloudflareの「Browsing Experience Security Check」を利用するのが簡単だ。
以下のサイトにアクセスし、[Check My Browser]をクリックすると、たいていは「Encrypted SNI」以外の項目にチェックマークが付くはずだ。これでDNSのリクエストが暗号化されたことになる。
なお、「Encrypted SNI」はサーバー側の対応も必要なため、クライアント側だけでは対応が難しい。
SNI SSLは、サーバーを共有するタイプのレンタルサーバーなどで使われる方式で、1つのIPアドレスで複数のドメイン名に対してSSL証明書を利用できる仕組みだが、こうしたサーバーにアクセスする場合、アクセス時にアクセス先のドメインを通知する必要がある。上記「Encrypted SNI」は、この通知が暗号化されているかどうかというチェックとなる。
デメリットもある
このようにWindows 11では、DoHを簡単に設定できるようになったが、DoHを利用するデメリットもある。
例えば、企業などでDNSをベースにしたフィルタリングなどを導入している場合は、DoHによりリクエストが暗号化されてしまうと、このフィルタリングをすり抜けてしまう可能性がある。
家庭用のルーターなどに搭載されているフィルタリング機能やペアレンタルコントロール機能も影響を受ける可能性があるが、実際にすり抜けるかどうかはルーター次第と言える。
シンプルにDNSのリクエストしかチェックしていない機能ではすり抜けてしまうが、最近のフィルタリング機能は複合的な方法で判断しているようで、DoHを設定してもしっかりフィルタリングが有効のままになるケースもある。
例えば、手元にあったTP-Linkの「Deco X60」には、トレンドマイクロの技術をベースにしたセキュリティ機能「Homecare」が搭載され、ペアレンタルコントロール機能も備えているが、この機能ではPCでDoHが設定されていたとしても、きちんとアダルトサイトなどへのアクセスを遮断できた。
可能性として、DoHによってフィルタリングなどが無効化されてしまう可能性はあるが、それは実際の環境次第と言えそうだ。
また、厳密には、パフォーマンスの低下も発生すると考えられるが、日常的な利用シーンでは気になることはほとんどない。このほか、トラブル時にパケット解析がしにくいなどの課題もある。
パブリックDNS利用時に検討を
以上、Windows 11のDoH設定を試してみた。ルーターやISPのDNSを使っている場合はメリットがない(そもそも設定ができない……)が、パブリックDNSを利用する場合は、利用を検討するといいだろう。将来的には、標準で暗号化される時代になるのかもしれないが、現状はまだ課題も多いため、試験的な取り組みとも言えそうだ。