2026年6月11日
2026年6月11日
DoH (DNS over HTTPS) と DoQ (DNS over QUIC) を併用する設定|AdGuard Home の上流に両方を登録し、片方が止まっても名前解決を続ける
DoH(DNS over HTTPS)と DoQ(DNS over QUIC)を併用するいちばん手軽な方法は、家庭や小さな事務所の LAN に AdGuard Home を置き、その上流(問い合わせの転送先)に DoQ と DoH の両方を登録することです。端末は今までどおり AdGuard Home に平文の DNS で問い合わせ、外へ出る通信だけが暗号化されます。DoQ が通らないネットワークでも DoH で名前解決が続くため、方式の違いがそのまま冗長化になります。この記事では、上流の書き方、複数の上流の使い分け方、ブートストラップとフォールバックの考え方、片方を止めて切り替わりを確かめる方法を説明します。
自分で DoQ と DoH を提供するサーバー側の設定は、dnsdist を使った別の記事で扱っています。ここは、公開されている DoQ・DoH のサービスを「使う側」で併用する設定です。
併用する理由と、先に決めておくこと
DoQ と DoH は、どちらも端末とリゾルバーの間を暗号化する方式ですが、通り道が違います。
- DoQ は通常 UDP の 853 番を使います。QUIC の性質上、接続の確立が速く、回線が不安定でも遅延が増えにくい利点があります。一方で、UDP 853 番は企業や公衆無線 LAN のネットワークで止められていることがあります。
- DoH は TCP の 443 番(HTTP/3 なら UDP の 443 番)を使い、Web の通信と見分けにくいため、多くのネットワークで通ります。
両方を上流に登録すると、片方の方式が使えない場面でも、もう片方で名前解決を続けられます。ただし、登録する前に次の2点を決めておきます。
- 上流のサービスの方針をそろえる。 広告やマルウェアのブロックをするサービスと、しないサービスを混ぜると、同じ名前でも問い合わせのたびに結果が変わります。DNSSEC の検証の有無やログの方針も、サービスごとに違います。併用する上流は、フィルタリングの有無をそろえて選びます。
- 問い合わせを誰に見せるかを決める。 別々の事業者を上流にすると、問い合わせの内容はそれぞれの事業者に分散して届きます。後述の「並列」の使い方では、すべての問い合わせが全事業者に届きます。各サービスのプライバシーポリシーを確かめたうえで選んでください。
構成の全体像
端末 ── UDP/TCP 53 ── AdGuard Home ──┬─ DoQ(UDP 853) ── 上流A
└─ DoH(TCP 443) ── 上流B
AdGuard Home は Raspberry Pi などの小型機や、Linux の VPS、Docker で動かせます。インストール手順は公式のドキュメントを参照してください。導入済みの場合は、作業の前に設定ファイル(AdGuardHome.yaml)をバックアップしておきます。
なお、Linux の systemd-resolved は DoT には対応していますが、DoH と DoQ には対応していません(2026年10月現在)。Linux サーバー単体で両方を使いたい場合も、AdGuard Home や、その中核部分を単体で使える dnsproxy のような転送用ソフトウェアを間に置く形になります。
上流の書き方
AdGuard Home では、上流の種類をアドレスの先頭の書き方で指定します。
quic://ホスト名… DoQhttps://ホスト名/パス… DoH(HTTP/2 など)h3://ホスト名/パス… DoH を HTTP/3 で使うtls://ホスト名… DoT
設定画面の DNS 設定にある上流 DNS サーバーの欄に、1行に1つずつ書きます。設定ファイルで書く場合は、AdGuard Home を止めてから dns の項目を編集します。
dns:
upstream_dns:
- quic://unfiltered.adguard-dns.com
- https://cloudflare-dns.com/dns-query
- "[/corp.example/]192.0.2.53"
bootstrap_dns:
- 1.1.1.1
- 94.140.14.140
upstream_mode: load_balance
- 1行目は DoQ、2行目は DoH の上流です。どちらもフィルタリングをしないサービスを選んで、結果がそろうようにしています。各サービスのアドレスや提供内容は変わることがあるため、使う前にそれぞれの公式ページで確認してください。
- 3行目は、社内のドメイン
corp.exampleだけを社内の DNS サーバーへ送る書き方です。社内の名前を外部の DoH・DoQ サービスに問い合わせると、名前解決できないうえに、社内のホスト名が外部に漏れます。 upstream_modeのキー名と値は、AdGuard Home の版によって異なります。古い版では別のキーで指定していたため、手元の設定ファイルに合わせてください。
複数の上流の使い方を選ぶ
AdGuard Home には、複数の上流をどう使うかの選択肢があります。画面上の表記は版で変わりますが、考え方は次の3つです。
- 負荷分散。 応答の速さなどをもとに、上流を振り分けて使います。応答しない上流は使われにくくなるため、DoQ が通らないネットワークでは自然に DoH へ寄ります。併用の目的が冗長化なら、まずはこれを選ぶのが無難です。
- 並列。 すべての上流に同時に問い合わせ、最初に返った応答を使います。最も速い応答を得られますが、通信量が増え、すべての問い合わせがすべての事業者に届きます。
- 最速の IP アドレス。 複数の上流から得た IP アドレスのうち、接続の速いものを返します。Web サイトの表示が速くなることがある一方、処理が増えます。
どれを選んでも、1つの上流が止まっただけで名前解決全体が止まる事態は避けやすくなります。
ブートストラップとフォールバックを考える
quic://unfiltered.adguard-dns.com のように上流をホスト名で書くと、AdGuard Home はまずそのホスト名を名前解決する必要があります。その最初の解決に使うのがブートストラップ DNS です。ブートストラップの問い合わせは平文ですが、問い合わせるのは上流のホスト名だけで、端末が調べた名前は含まれません。ここには信頼できるサービスの IP アドレスを複数書いておきます。
フォールバック DNS は、すべての上流が応答しないときに使う予備です。ここに平文の DNS を書くと、暗号化の経路がすべて止まったときでも名前解決は続きますが、その間の問い合わせは暗号化されません。名前解決を止めないことと、暗号化を守ることのどちらを優先するかで決めます。暗号化を優先するなら、フォールバックにも DoH や DoT のサービスを書きます。
ファイアウォールの外向き通信を確かめる
AdGuard Home を置いた機器から、次の外向き通信ができる必要があります。
- DoQ:UDP の 853 番
- DoH:TCP の 443 番(
h3://を使う場合や、HTTP/3 を有効にした場合は UDP の 443 番も) - ブートストラップ:UDP と TCP の 53 番(ブートストラップに書いた IP アドレス宛てだけ)
外向きの通信を絞っている環境では、この3種類だけを許可しておくと、端末が AdGuard Home を通らずに外部の DNS を使う抜け道も塞ぎやすくなります。
動作と切り替わりを確かめる
設定を保存したら、画面の上流 DNS の欄にあるテスト用のボタンで、各上流に接続できるかを確かめます。続いて、LAN の端末から問い合わせます。
# LAN の端末から AdGuard Home(例: 192.168.1.10)に問い合わせる
dig @192.168.1.10 example.com A
クエリログを開くと、問い合わせごとにどの上流が応答したかと応答時間が表示されます。DoQ と DoH の両方の上流が使われているかを確かめられます。
次に、DoQ が使えない状況を意図的に作り、DoH に切り替わるかを確かめます。AdGuard Home の機器で、UDP 853 番の外向き通信を一時的に止めます。
# 一時的に DoQ を止める(確認が終わったら下のコマンドで戻す)
sudo iptables -I OUTPUT -p udp --dport 853 -j DROP
# 端末から何度か問い合わせ、クエリログで応答した上流が DoH になるか見る
# 元に戻す
sudo iptables -D OUTPUT -p udp --dport 853 -j DROP
nftables や ufw を使っている環境では、同じ意味のルールに置き換えてください。最後に、平文の DNS が外へ出ていないかも確かめます。AdGuard Home の機器で sudo tcpdump -ni any 'dst port 53 and src host 192.168.1.10' を実行します(192.168.1.10 は AdGuard Home の機器のアドレス)。この機器から外へ出る 53 番の通信が、ブートストラップに書いた宛先と、社内ドメイン用の社内 DNS だけなら想定どおりです。
まとめ
- AdGuard Home の上流に
quic://とhttps://を並べると、端末側の設定を変えずに DoQ と DoH を併用できます。 - 併用する上流は、フィルタリングの有無や方針をそろえて選び、社内ドメインは
[/ドメイン/]の書き方で社内の DNS へ送ります。 - 冗長化が目的なら、複数の上流の使い方は負荷分散から始めます。並列はすべての事業者に問い合わせが届く点に注意します。
- ブートストラップには上流のホスト名を引くための DNS を、フォールバックには暗号化を優先するかどうかで選んだ予備を書きます。
- UDP 853 番を一時的に止めて DoH に切り替わるかを確かめ、平文の DNS が外へ出ていないことも確かめます。