注意: この記事はLLMによって英語から翻訳されたものです。正確性については保証いたしかねますので、あらかじめご了承ください。 英語の原文はこちら。
最近、iPhoneのデフォルトDNSサーバーを、モバイル通信とWi-Fiの両方でDoH対応のものに変更したいと思いました。残念ながら、設定アプリにはその方法がありません(特定のWi-FiネットワークだけにDNSサーバーを設定する場合を除きます)。
この記事では、なぜ同じことをしたいと思うかもしれないのか、そしてその方法を説明します。
DoHとDoTとは#
従来のDNSプロトコルは、機密性の面でかなり問題があります。DNSリクエストはネットワーク上を平文で通過するため、ネットワークの提供者は、あなたがどのウェブサイトにアクセスしているかを確認できる場合があります。
これを防ぐため、DoT(DNS over TLS)とDoH(DNS over HTTPS)が、それぞれ2016年(RFC 7858)と2018年(RFC 8484)に標準化されました。
これらを使うと、UDPポート53で平文のまま送る代わりに、安全な接続を通じてDNSリクエストを送信できます。
暗号化DNSの普及は進んでいますが、まだどこでも使われているわけではありません。Firefoxは2020年、米国のユーザーに対してDoHをデフォルトで有効にし始めました。Chromeは、設定されたDNSプロバイダーが対応していれば、自動的にDoHへアップグレードできます。Appleも同じ2020年に、iOS 14でDoHとDoTのネイティブサポートを追加しました。
デフォルトのDNSを変更する理由#
iPhoneのDNS設定は通常、接続先のネットワークから提供されます。
- Wi-Fiでは、そのネットワーク(多くの場合はルーター)から提供されます。手動でそのネットワークのDNSを設定している場合は別です。
- モバイル通信では、携帯電話会社から提供されます。
DNSリクエストが暗号化されていない場合、ネットワーク事業者は検索したドメイン名を確認できる可能性があります。
DoHまたはDoTに変更すると、端末とリゾルバーの間でリクエストを盗み見たり改ざんしたりされるのを防ぎやすくなります。プライバシーの向上には役立ちますが、完全に保護されるわけではありません。ウェブサイトに接続すると、そのドメイン名は通常TLSハンドシェイクで見えるためです。また、当然ながら、選んだリゾルバー自体はリクエストを見ることができます。
これを防ぐためにECH(Encrypted Client Hello)という機能が作られましたが、アクセス先のサービスと使用するソフトウェアの両方が対応している必要があります。下記のMozillaWikiの資料によると、現在WebKit/SafariはECHへの対応を表明していますが、まだ実装していません。
DNSを変更する方法#
Appleは設定アプリからモバイル通信のDNSサーバーを設定できるようにしていません。そのため、モバイル通信とWi-Fiの両方で選んだDNSを使うには、構成プロファイルを作成する必要があります。
構成プロファイルは、拡張子が.mobileconfigのXMLプロパティリストファイルです。
iOS 27までは、DNSSettingsが推奨される構成方法でした。ファイルにXMLを書くだけでよく、簡単に使えました。
ただし、これはiOS
27以降では非推奨になりました。新しい構成オブジェクトであるcom.apple.configuration.network.dns-settingsも構造はかなり似ていますが、base64にエンコードしてDeclarationオブジェクトに組み込む必要があるため、少し複雑です。
その作業を簡単にするため、Web Tools Utilsに新しいツールを追加しました。
このツールでは、使いたいDNSプロバイダーを1つ以上指定でき、必要に応じて、そのDNSを使わない特定のWi-Fiネットワークも設定できます。接続の種類(Wi-Fi、モバイル通信など)に応じたフィルターも設定できますが、私は使っていないため含めていません。
後から構成を編集したい場合は、作成済みのプロファイルをツールにアップロードし直すこともできます。各種識別子が維持されるため、OSは新しい構成の追加ではなく、既存の構成の更新だと認識できます。
プロファイルを端末に保存したら、次の手順でインストールできます。
- ファイルを開きます。「レビューが必要」と表示されます。
- 「設定 / 一般 / VPNとデバイス管理」を開きます。
- 「ダウンロード済みプロファイル」の下にプロファイルが表示されます。
- プロファイルを選択すると、内容の詳細が表示されます。
- 「インストール」を選択し、パスコードを入力して、もう一度「インストール」を選択します。
- 再び「設定 / 一般 / VPNとデバイス管理」を開きます(最後の項目名は「VPN、DNSとデバイス管理」に変わっています)。新しい「制限とプロキシ」セクションに「DNS」設定が表示されます。ファイルに複数のDNSが含まれている場合は、ここで使用するDNSを選択できます。
新しく追加された選択メニューには「自動」もあります。これを選ぶと、設定したDNSサーバーを使わないデフォルトの動作に戻ります。
すべての設定が完了したら、このツールを使って、端末が想定どおりに動作しているか確認できます。
参考資料#
- プロトコル仕様(RFC)
- ブラウザーとプラットフォームの対応
- Mozilla: Firefoxが米国ユーザー向けにDoHをデフォルトで有効化 (2020年2月)。
- Chromium: ChromeがSecure DNSの展開を開始 (2020年5月)。設定されたDNSプロバイダーが対応している場合、ChromeはDoHにアップグレードします。
- Apple WWDC20: Enable encrypted DNS。AppleがiOS 14を含む各プラットフォームでDoHとDoTをネイティブサポートすると発表しました。
- Apple WWDC22: Improve DNS security for apps and servers。暗号化DNSとDDRによる自動検出を取り上げています。
- Mozilla: Encrypted Client Hello FAQ (Firefoxはバージョン119からECHをデフォルトで有効にしています)。
- Chrome Enterprise: Encrypted Client Hello設定 (ChromeのECH対応と、ECHが使われる条件について説明しています)。
- MozillaWiki: WebにおけるECH (WebKit/SafariはECHへの対応を表明していますが、まだ実装していないとしています)。
- 関連記事


