2026年6月16日
2026年6月16日
DoH (DNS over HTTPS) の導入手順|Windows・ブラウザー・Linux で使い始め、効いているかを確かめるまで
DoH(DNS over HTTPS)を使い始めるには、「どの DoH サーバーを使うか」を決め、「どこで有効にするか」(OS 全体か、ブラウザーだけか)を選び、最後に「本当に DoH で問い合わせているか」を確かめる、の3段階で進めます。この記事では、端末やサーバーの利用者側として DoH を導入する手順を、Windows 11、主要ブラウザー、Linux の順に説明し、社内ネットワークで起きやすい問題と、サイト運営者が DNS の切り替え作業で戸惑いやすい点にも触れます。自分で DoH サーバーを立てて公開する手順は扱いません。
DoH で変わること・変わらないこと
DoH は、端末とリゾルバーの間の DNS 問い合わせを HTTPS の中に入れて暗号化します。途中のネットワーク(公衆 Wi-Fi、社内 LAN、通信事業者)から、どのドメインを引いたかを読まれたり、応答を書き換えられたりしにくくなります。
一方で、次の点は変わりません。
- リゾルバー自身には問い合わせ内容が見えます。 誰に任せるかが変わるだけなので、事業者のプライバシーポリシーを読んで選びます。
- 接続先の IP アドレスや、TLS の SNI は見えたままです。 閲覧先を隠す仕組みではありません。
- リゾルバーから権威サーバーまでの区間は暗号化されません。 応答が正しいかどうかは、DNSSEC の検証に頼ることになります。
手順1:使う DoH サーバーを決める
公開されている DoH サーバーの例です。URL は「DoH テンプレート」と呼ばれ、設定でこの形のまま入力します。
Cloudflare https://cloudflare-dns.com/dns-query
Google https://dns.google/dns-query
Quad9 https://dns.quad9.net/dns-query
選ぶときは、ログの保存期間、マルウェアや成人向けサイトを遮断する版があるか、EDNS Client Subnet(利用者のおおよその位置を権威サーバーに伝える仕組み)を送るかどうか、を見比べます。どれも事業者の方針で変わることがあるため、各社の公式ページで現行の内容を確かめてください(2026年10月現在の情報をもとに書いています)。
使う前に、その DoH サーバーに手元から届くかを curl で確かめておくと、後の手順でつまずいたときに切り分けが楽になります。
# JSON 形式の API で A レコードを引く(Cloudflare の例)
curl -s -H 'accept: application/dns-json' \
'https://cloudflare-dns.com/dns-query?name=wordpress.org&type=A'
# curl 自身の名前解決を DoH で行い、サイトに接続する
curl -sI --doh-url https://cloudflare-dns.com/dns-query https://wordpress.org/
1つ目で JSON の応答が返り、2つ目で HTTP のヘッダーが返れば、その環境から DoH サーバーに到達できています。社内ネットワークで 443 番の外向き通信が制限されていると、ここで失敗します。
手順2:Windows 11 で OS 全体に設定する
Windows 11 は OS の DNS クライアントが DoH に対応しています。OS 全体で有効にすると、ブラウザー以外のアプリの名前解決も対象になります。
画面から設定する場合は、設定アプリのネットワークの項目から、使っている接続(Wi-Fi やイーサネット)の DNS サーバーの割り当てを編集し、DNS サーバーの IP アドレスを入力したうえで DNS over HTTPS をオンにします。項目の名前や並びは Windows の更新で変わることがあるので、見当たらない場合は「DNS サーバーの割り当て」を目印に探してください。
Windows には主要な DoH サーバーの IP アドレスとテンプレートの対応表があらかじめ登録されていて、その IP を DNS サーバーに指定すれば自動でテンプレートが選ばれます。登録状況は PowerShell で確かめられます。
# 登録済みの DoH サーバー(IP とテンプレートの対応)
Get-DnsClientDohServerAddress
# 対応表にない DoH サーバーを追加する例(管理者の PowerShell で実行)
Add-DnsClientDohServerAddress -ServerAddress '192.0.2.53' `
-DohTemplate 'https://dns.example.com/dns-query' `
-AllowFallbackToUdp $False -AutoUpgrade $True
AllowFallbackToUdp を $False にすると、DoH が使えないときに暗号化されない DNS へ戻らなくなります。安全側の設定ですが、DoH サーバーに届かない場所では名前解決が止まります。持ち歩くノート PC では、まず $True で始めて様子を見る選択もあります。
手順3:ブラウザーで設定する
ブラウザーは OS とは別に、独自の DoH 機能を持っています。OS の設定を触れない端末や、ブラウザーだけを対象にしたいときに使います。
- Chrome・Edge。 設定のプライバシーとセキュリティの中に「セキュア DNS」の項目があります。現在の DNS 事業者が DoH に対応していれば自動で切り替える動作と、DoH サーバーを指定する動作を選べます。
- Firefox。 設定のプライバシーとセキュリティの中に「DNS over HTTPS」の項目があり、保護の段階(使えるときだけ使う、常に使う、など)と事業者を選べます。
どちらも、ラベルの文言や既定の動作はバージョンや地域で変わります。設定後は次の手順4で効いているかを確かめます。
手順4:DoH で問い合わせているかを確かめる
設定画面でオンになっていても、実際には従来の DNS に戻っていることがあります。次の方法で確かめます。
- Firefox。 アドレスバーに
about:networking#dnsを入力すると、名前ごとに DoH(TRR)で解決したかどうかが表示されます。 - Chrome・Edge。
chrome://net-internals/#dnsで内部の DNS キャッシュの状態を見られます。表示内容はバージョンで変わります。 - 事業者の確認ページ。 例えば Cloudflare は、1.1.1.1 の利用状況と DoH の使用有無を表示する確認ページを用意しています。
- Windows。 パケットキャプチャで UDP 53 番への通信が出ていないかを見ると、OS の名前解決が DoH に移ったかを判断できます。
手順5:Linux で使う(dnscrypt-proxy の例)
Linux の systemd-resolved は暗号化 DNS として DoT(DNS over TLS)に対応していますが、DoH には対応していません(2026年10月現在)。Linux で DoH を使いたい場合は、ローカルで動くプロキシを挟み、OS からはそのプロキシに普通の DNS で問い合わせる形にします。ここでは、DoH に対応し、継続して保守されている dnscrypt-proxy を例にします。
# /etc/dnscrypt-proxy/dnscrypt-proxy.toml の一部(例)
listen_addresses = ['127.0.0.1:53']
server_names = ['cloudflare', 'google']
doh_servers = true
require_dnssec = true
require_nolog = true
server_names には、dnscrypt-proxy が配布するサーバー一覧に載っている名前を書きます。require_dnssec と require_nolog は、一覧の中から DNSSEC の検証をうたい、ログを残さないと申告しているサーバーだけを使う、という絞り込みの条件です。設定を変える前に元のファイルのバックアップを取り、起動後に dig @127.0.0.1 wordpress.org で応答が返るかを確かめてから、/etc/resolv.conf やネットワーク管理ツールの DNS 設定を 127.0.0.1 に向けます。systemd-resolved が 53 番を使っている環境では、待ち受けの衝突に注意します。ディストリビューションごとにパッケージの設定ファイルの場所が違うため、手元のパッケージの説明を確かめてください。
WordPress を動かしているサーバーで DoH を使う必要性は、多くの場合あまり高くありません。データセンター内のリゾルバーまでの区間は管理者の手の内にあることが多く、DoH のプロキシが止まると PHP からの外部 API 呼び出しや更新確認がすべて失敗するからです。導入するなら監視を付けます。
社内ネットワークでの注意
DoH は社内のネットワーク設計とぶつかることがあります。
- 社内専用の名前が引けなくなる。 社内 DNS にだけある名前(イントラのホスト名など)は、公開の DoH サーバーでは引けません。ブラウザーだけ DoH にすると、ブラウザーからだけ社内サイトが開けない、という症状になります。
- DNS でのフィルタリングを素通りする。 社内 DNS で危険なドメインを遮断している場合、端末側の DoH はその仕組みを迂回します。
- 管理する側の手段。 Firefox は、ネットワークの DNS が
use-application-dns.netに対して NXDOMAIN を返すと、既定で有効にした DoH を止める仕組みを持っています(利用者が自分で有効にした場合は対象外)。Chrome と Firefox は企業向けのポリシーで DoH の動作を固定できます。端末を一括管理している組織では、ポリシーで方針をそろえるのが確実性の高い方法です。
サイト運営者が戸惑いやすい点
DNS のレコードを切り替えた直後、「ブラウザーでは新しいサーバーが表示されるのに、コマンドでは古い IP が返る」(あるいはその逆)ということが起きます。ブラウザーが DoH で別のリゾルバーを使っていて、OS とキャッシュが別々になっているのが原因です。切り替えの確認では、dig @1.1.1.1 のように問い合わせ先を明示し、どのリゾルバーの結果を見ているかを意識すると混乱を避けられます。
まとめ
- DoH は端末とリゾルバーの間を暗号化します。リゾルバー自身や、接続先の IP からは閲覧先が分かる点は変わりません。
- まず DoH サーバーを選び、
curlで手元から届くかを確かめてから設定します。 - Windows 11 は OS 全体で設定でき、PowerShell の
Get-DnsClientDohServerAddressで対応表を確認できます。ブラウザー単位でも有効にできます。 - 設定後は
about:networking#dnsや事業者の確認ページで、実際に DoH が使われているかを確かめます。 - Linux では dnscrypt-proxy のようなローカルのプロキシを挟みます。社内では、社内専用の名前やフィルタリングとの関係を整理してから展開します。