プライベート DNS と DoH アプリ比較
Android のプライベート DNS はアプリなしで DNS over TLS による暗号化が可能。DoH アプリが向く場面、両者の競合、どちらでも直せないことを解説。
「Android 暗号化 DNS」と検索すると、たぶん二つの答えに出会ったはずです。一つは「アプリは不要、プライベート DNS をオンにするだけ」。もう一つは「DNS over HTTPS のアプリを入れよう」。どちらも理にかなっています。同じ問題を別の方法で解決し、別の場面でつまずきます。このガイドでは、それぞれの仕組み、苦手な場面、選び方を説明します。私たちは DoH クライアントを内蔵した GreenTunnel の開発元なので、それを念頭に置いてお読みください。
プライベート DNS とは実際には何か
Google は Android 9 でプライベート DNS を追加しました。たいていは設定 → ネットワークとインターネット → プライベート DNS にありますが、正確な場所はメーカーによって異なります。選択肢は三つです。
- OFF: 問い合わせは、今のネットワークが割り当てる DNS サーバーに平文で送られます。
- 自動: デフォルトです。Android はネットワーク自身の DNS サーバーで DNS over TLS を試し、そのサーバーが対応していれば使います。対応していなければ、問い合わせは平文のままです。日和見モードと呼ばれることが多く、ほとんどの家庭やモバイルのネットワークでは、まったく暗号化されないことを意味します。
- プライベート DNS プロバイダのホスト名: プロバイダーのホスト名を入力します。たとえば Google Public DNS なら
dns.googleです。すると Android はそのサーバーを必ず使います。つながらなくても、黙って平文の DNS に戻ることはありません。Google の発表によると、代わりにネットワークをインターネット接続なしとして扱います。
DNS over TLS は RFC 7858 で標準化されており、専用のポート 853 を使います。この専用ポートは強みであり弱みでもあります。すっきりして無駄がない反面、ネットワークにとって見分けてブロックするのも簡単です。
Android の DNS over HTTPS はどうなのか
多くのガイドが見落としている細かい点があります。2022年7月、Google は、Google Play システム アップデートを通じて、Android 11 以降の端末が、対応している有名な DNS サーバーに対して DNS over TLS の代わりに DNS over HTTP/3 を使うようになると発表しました。開始時の対象プロバイダーは Google と Cloudflare でした。Google の投稿では、使う DNS サービスは変わらず、変わるのは通信方式だけだと強調しています。ホスト名は同じプライベート DNS の欄に入力します。任意の DoH アドレスを入れる欄はなく、他のプロバイダーではプライベート DNS は DNS over TLS のままです。
DoH アプリは何が違うのか
DoH アプリ、または DoH クライアントを持つ VPN アプリは、Android の VPN の枠を通じて端末全体の DNS を引き受けます。各問い合わせは、RFC 8484 で定義された https://cloudflare-dns.com/dns-query のような DoH サーバーへ、HTTPS の中に入って送られます。
- ポート 443 を使う。 ネットワークから見ると、他の HTTPS 接続とほとんど同じです。DNS over TLS を止めるためにポート 853 をブロックするネットワークも、たいていこれには手を出しません。
- サーバーとプロトコルを選べる。 アプリは DoH と DoT のプロバイダーを並べて提供し、切り替えられます。
- ネットワークのリゾルバーを完全に避けられる。 優れたクライアントは DoH サーバーの固定のブートストラップ IP アドレスに接続するので、DNS サーバーを見つけることさえネットワークの DNS に頼りません。
- VPN の枠を使う。 Android では VPN は一度に一つしか使えません。DoH アプリは他の VPN アプリと同時に動かせません。
比較表
| プライベート DNS(ホスト名) | DoH アプリ | |
|---|---|---|
| 追加のアプリが必要 | いいえ | はい |
| プロトコル | DNS over TLS、または Android 11 以降の一部の有名プロバイダーでは DNS over HTTP/3 | DNS over HTTPS(DoT も提供するアプリあり) |
| ポート | DoT は 853 | 443 |
| サーバーがブロックされた場合 | 設定を変えるまでネットワークがインターネットなしと表示される | アプリによる。別のプロバイダーに切り替えるものもある |
| VPN の枠を使う | いいえ | はい |
| 他の VPN アプリと併用 | 可能、ただし以下で説明する競合あり | 不可、VPN は一度に一つだけ |
| HTTPS での名前によるフィルタリングに効く | いいえ | アプリがそれにも対応している場合のみ |
プライベート DNS が苦手なところ
- ポート 853 をブロックするネットワーク。 職場、学校、公衆 Wi-Fi の中にはこれをブロックしているところがあります。ホスト名モードでは、ネットワークが壊れているように見えます。どう現れるかはモバイルデータでは開くのに Wi-Fi では開かない?をご覧ください。
- ネットワークごとの癖。 設定は全体共通ですが、ネットワークはそうではありません。モバイルデータで動くホスト名が、特定の Wi-Fi では動かないことがあります。
- 公衆 Wi-Fi のログインページ。 サインインページのあるホテルやカフェのネットワークでは、サインインを終えるまで固定のホスト名がうまく動かないことがあります。一時的に自動に切り替えると、たいてい解決します。
- 自動は暗号化されないことが多い。 ほとんどの ISP の DNS サーバーは DNS over TLS に対応していないので、自動は黙って平文の DNS のままになります。
DoH アプリが苦手なところ
- 動き続ける必要がある。 Android が電池節約のためにアプリを止めると、DNS の保護も止まります。Android で VPN を動かし続ける方法をご覧ください。
- 他の VPN を締め出す。 同じスマートフォンで仕事用の VPN と組み合わせられません。
- サーバーが IP アドレスでブロックされうる。 ネットワークが DoH サーバーのアドレスをブロックしている場合、ポート 443 は役立ちません。別のプロバイダーに切り替えられるクライアントの方がうまく対処できます。
競合: プライベート DNS と VPN アプリ
Android 10 以降、プライベート DNS のホスト名は VPN アプリの動作中にも適用されます。Google 自身の Public DNS の説明には、Android 9 では VPN がプライベート DNS より優先されていたが、Android 10 で修正されたと書かれています。実際には、ホスト名を設定してから独自の DNS を持つ VPN アプリをオンにすると、Android は代わりにプライベート DNS のプロバイダーに問い合わせを送ります。VPN の暗号化 DNS やブロックリストにはその名前が届きません。そのプロバイダーが今のネットワークでブロックされていれば、すべてのサイトが開かなくなります。
GreenTunnel を使う間は、プライベート DNS を OFF または自動にしてください。これはまだサイトがブロックされる?で最初に確認する項目の一つです。
GreenTunnel の DNS の扱い方
GreenTunnel は暗号化 DNS クライアントを内蔵したローカル VPN です。Settings → DNS で三つのプロバイダーのどれか、または Automatic(自動)を選びます。
- Cloudflare、DoH、
https://cloudflare-dns.com/dns-query - Google、DoH、
https://dns.google/dns-query - Quad9、DoT、
dns.quad9.net:853
Automatic は Cloudflare、Google、Quad9 の順に試し、応答したものを使い続けます。各プロバイダーには内蔵のブートストラップ IP で接続するので、ISP の DNS に問い合わせることはありません。DoQ には対応していません。詳しい手順は DoH と DoT の解説にあります。
DNS だけのアプリとの違いは、名前解決の後に起こることです。GreenTunnel は、単純な名前によるフィルタリングをすり抜けるために HTTPS 接続の最初のパケットの形も変え、Requester でアプリごとの接続を表示し、Inspect URL(URL を調べる)でサイトをテストできます。あなたが調べたドメインを私たちが収集することはありません。
暗号化 DNS の正直な限界
暗号化 DNS は、どの方法で使っても、一種類のブロックを直します。DNS の応答を偽ったり捨てたりするネットワークです。HTTPS のハンドシェイクでネットワークがサイト名を読むことは止められず、それにはパケットの形の変更か ECH が必要です。IP ブロックも突破できません。IP アドレスを隠すこともなく、ISP にはどのアドレスに接続しているかが引き続き見えます。選んだ DNS プロバイダーには、ISP の代わりにあなたの問い合わせが見えるので、方針を信頼できるところを選んでください。GreenTunnel も匿名化ツールではありません。
どちらを使うべきか
- 普通に動くネットワークで問い合わせを暗号化したいだけ? プロバイダーのホスト名を設定したプライベート DNS がシンプルで、アプリも不要です。
- ネットワークがポート 853 をブロックする、DNS を偽る、サイト名でフィルタリングする? DoH アプリ、できれば名前によるフィルタリングにも対応するものの方が合っています。プライベート DNS は OFF か自動にしてください。
- すでに仕事用の VPN を使っている? VPN アプリは一つしか動かせないので、プライベート DNS のままにしましょう。
GreenTunnel は Android と iPhone で無料で使え、任意の Premium があります。仕組みはホームページをご覧ください。
よくある質問
Android のプライベート DNS は DoH と DoT のどちらを使いますか?
ポート 853 の DNS over TLS です。2022年の Google Play システム アップデート以降、Android 11 以降では、Google と Cloudflare をはじめ、対応している一部の有名プロバイダーに対して代わりに DNS over HTTP/3 を使います。カスタムの DoH アドレスは入力できません。
GreenTunnel を使う間もプライベート DNS はオンのままでいいですか?
OFF か自動にしてください。プロバイダーのホスト名を設定すると、Android はそのプロバイダーに直接問い合わせを送るので、GreenTunnel の暗号化 DNS と自分のブロックリストが素通りされます。
DoH は DoT よりプライバシーが高いですか?
どちらも問い合わせを同じようにしっかり暗号化します。違いは、見分けてブロックするのがどれだけ簡単かです。DoT は専用のポートを使い、DoH はポート 443 の HTTPS に紛れ込みます。
暗号化 DNS ですべてのサイトのブロックが解除されますか?
いいえ。DNS によるブロックしか直りません。名前によるフィルタリングでブロックされたサイトにはさらに対策が必要で、IP アドレスでブロックされたサイトにはまったく別の経路が必要です。
出典
- Android Developers Blog、DNS over TLS support in Android P Developer Preview(2018年4月)。
- Google Security Blog、DNS-over-HTTP/3 in Android(2022年7月)。
- Google Public DNS、Get started(Android のプライベート DNS の設定と Android 9 の VPN に関する注記)、2026年11月に参照。
- IETF、RFC 7858: DNS over TLS。
- IETF、RFC 8484: DNS Queries over HTTPS。