Ubuntu Server 24.04でPi-hole DNS-over-HTTPSを設定する方法

Ubuntu Server 24.04 上の Pi-hole の場合、アップストリーム要求を を経由してルーティングしdnscrypt-proxy、Pi-hole を のローカルリスナーに向けます127.0.0.1#5053。これにより、サーバーと選択したアップストリームリゾルバ間の DNS トラフィックが DNS-over-HTTPS (DoH) で暗号化され、Pi-hole は引き続き LAN クライアントに応答し、ブロックリストを適用します。Pi-hole 自体はデフォルトではアップストリームへの DoH トランスポートを提供しません。暗号化された接続はローカルプロキシによって提供されます。

まず、現在のバージョンに関する重要な点があります。Cloudflare は、cloudflared proxy-dns2026 年 2 月 2 日から始まる新しいリリースからこのコマンドを削除しました。このコマンドをインストールする古いチュートリアルは、現在のcloudflaredリリースでは動作しない可能性があります。以下の手順ではdnscrypt-proxy、Pi-hole の現在の DoH ガイドに従って を使用します。この設定は、Pi-hole とプロキシが同じ Ubuntu ホストで実行されている場合に適しています。Docker またはマルチホスト構成の場合は、リスナーのアドレス指定とファイアウォール ルールを別々にする必要があります。

この設定でできることとできないこと

通常のDNSでは、リゾルバから上位のDNSプロバイダへクエリが送信されますが、トランスポート層は暗号化されません。DoHではDNSリクエストがHTTPSで暗号化されるため、Pi-holeサーバーとリゾルバ間のネットワーク監視者がこれらのリクエストを読み取ったり変更したりすることが難しくなります。ローカルネットワーク上のデバイスに通知されるDNSサーバーはPi-holeのままで、上位のパスのみが変更されます。

DoHは、選択したリゾルバに対してDNSアクティビティを不可視にするものではありません。アップストリームプロバイダは引き続きサーバーからのクエリを受信し、Pi-holeはプライバシーおよびログ設定に応じてクライアントのクエリ履歴を保持する場合があります。また、HTTPSは無関係なWebトラフィックを暗号化しません。特定のリゾルバを使用する場合は、そのリゾルバのプライバシーポリシーを確認し、サポートされているリゾルバリストから該当するDoHエントリを選択してください。

始める前に

  • Ubuntu Server 24.04にPi-holeが既にインストールされ、正常に動作していることを確認してください。この手順では、Pi-holeを新規インストールするのではなく、既存のPi-holeの設定を行います。
  • サーバーに安定したLANアドレスが割り当てられていることを確認してください。アドレスが変更されると、ルーターのDHCPクライアントがDNSサーバーを見失う可能性があります。
  • DNSが一時的に機能しなくなった場合に備え、管理者権限とPi-holeホストに連絡できる手段を確保してください。名前解決に同じPi-holeを使用している接続を介して、リモートでこの変更を行うことは避けてください。
  • ロールバック時に復元できるように、現在のPi-holeのアップストリーム設定を記録しておいてください。

プロキシはポート5053のループバックにのみバインドし、ポート53はPi-hole用に確保します。これにより、Pi-holeのDNSサービスとUbuntuのローカルリゾルバとの競合を回避できます。systemd-resolvedこの設計を実現するためだけに無効化しないでください。プロキシの独立したループバックポートによって、その競合は回避されます。

1. Ubuntuのパッケージリポジトリからdnscrypt-proxyをインストールします。

dnscrypt-proxyプロジェクトでは、Ubuntuパッケージのインストール手順を説明しています。インストールする前に、設定済みのUbuntuリポジトリに該当するパッケージがあることを確認してください。

sudo apt update
apt-cache policy dnscrypt-proxy

出力に候補バージョンが表示された場合は、それをインストールしてください。

sudo apt install dnscrypt-proxy

候補が表示されない場合は、無関係なサードパーティのリポジトリを追加して先に進むことはしないでください。dnscrypt-proxy プロジェクトの公式 Linux ガイドにリンクされているインストール方法を使用し、リリースとアーキテクチャを確認して、そのインストールに合わせてサービス設定を調整してください。以下の systemd ソケットユニットと設定パスは、Pi-hole が文書化した Ubuntu パッケージ設定に適用されます。

2. プロキシリスナーをlocalhostのポート5053に移動します。

Pi-holeは既に標準のDNSポート53を使用しています。プロキシのソケットをTCPとUDPの両方でリッスンするように設定し127.0.0.1:5053、同じホストからのみアクセスできるようにします。systemdドロップインを作成します。

sudo systemctl edit dnscrypt-proxy.socket

エディタに以下の行を入力して保存してください。

[Socket]
ListenStream=
ListenDatagram=
ListenStream=127.0.0.1:5053
ListenDatagram=127.0.0.1:5053

空の行ListenStream=とListenDatagram=行は、置換アドレスを設定する前にパッケージのデフォルト設定をクリアします。これらを省略しないでください。省略すると、systemd はカスタムリスナーに加えてデフォルトポートを保持してしまう可能性があります。

3. DoHリゾルバーを選択する

パッケージ設定ファイルを開きます。

sudoedit /etc/dnscrypt-proxy/dnscrypt-proxy.toml

systemdソケットを有効化するには、プロキシ設定でリスナーリストを空にします。現在署名されている公開リゾルバリストからリゾルバ名を選択します。たとえば、次の例では標準のCloudflareリゾルバを選択します。Pi-holeガイドでは、cloudflare-securityアップストリームリゾルバでマルウェアフィルタリングが必要な場合の例として、次の例も示されています。

listen_addresses = []
server_names = ['cloudflare']

パッケージのその他の設定はそのままにしておいてください。 に記載されている名前はserver_namesレジストリ識別子であり、任意のホスト名や URL パスではありません。別のプロバイダを使用する場合は、現在のリゾルバエントリが DoH をサポートしていることを確認し、その正確な名前をコピーしてください。マルウェアなどのカテゴリをフィルタリングするリゾルバは、フィルタリングしないリゾルバとは異なる結果を生成する可能性があります。

4. Pi-holeをローカルプロキシに向ける

Pi-holeのアップストリームDNSアドレスをローカルリスナーに設定します。

sudo pihole-FTL --config dns.upstreams '["127.0.0.1#5053"]'

サフィックス#5053は、Pi-hole が非標準 DNS ポートを表すために使用する表記です。Pi-hole 管理画面の[設定] > [DNS]でも確認できます。プリセットのパブリック アップストリームの選択を解除し、カスタム サーバーを127.0.0.1#5053アップストリームとして残してください。パブリック リゾルバを追加のアップストリームとしてチェックしたままにしておくと、クエリが暗号化されたプロキシをバイパスしてしまう可能性があるため、Pi-hole のすべてのアップストリーム クエリで DoH を使用する必要がある場合は、これらのエントリを削除してください。

5. サービスを再起動し、問題が解決したことを確認します。

新しい設定を読み込むために、ソケット、プロキシサービス、およびPi-hole FTLデーモンを再起動してください。

sudo systemctl restart dnscrypt-proxy.socket
sudo systemctl restart dnscrypt-proxy.service
sudo systemctl restart pihole-FTL.service

サービス状況を確認する:

sudo systemctl status dnscrypt-proxy.socket
sudo systemctl status dnscrypt-proxy.service
sudo systemctl status pihole-FTL.service

それぞれがバインドエラーやリゾルバの起動​​失敗なくアクティブになっている必要があります。プロキシをローカルDNSリスナー経由で直接テストしてください。

dig @127.0.0.1 -p 5053 example.com

DNS応答は、ローカルプロキシが応答していることを示します。次に、ポート53でPi-holeをテストしてください。

dig @127.0.0.1 example.com

Pi-holeクエリログまたはダッシュボードを確認して、リクエストがPi-holeに到達したことを確認し、テストが失敗した場合はプロキシのジャーナルを確認してください。

sudo journalctl -u dnscrypt-proxy.service -b --no-pager

追加の確認として、プロキシの起動ログまたはジャーナル出力で、選択されたリゾルバとDoHプロトコルのステータスを確認してください。成功すれdigばDNS解決が機能していることが証明されますが、それだけではリクエストがHTTPSを使用したことを証明するものではありません。

よくある問題と安全な回復

  • 「アドレスが既に使用されています」:別のプロセスが既にポート5053を使用しているか、ソケットオーバーライドがロードされていません。リスナーをで確認しsudo ss -lntup、ドロップインをで確認しsystemctl cat dnscrypt-proxy.socket、空のリセット行が5053エントリの前にあることを確認してください。
  • プロキシは有効ですが、名前解決がタイムアウトします。HTTPS送信アクセス、リゾルバ名、およびプロキシのログを確認してください。一部のネットワークでは、DNS over HTTPS 接続がブロックされたり、TCP ポート 443 が制限されたりする場合があります。
  • プロキシテストは成功しますが、Pi-hole からアップストリームへの応答がありません。Pi -hole が正確に に設定されていることを確認して127.0.0.1#5053から、再起動してくださいpihole-FTL。標準のアップストリームチェックボックスが、意図せず代替ルートを提供していないことを確認してください。
  • 変更後、Ubuntu 自体が名前解決できなくなります。この設定は Pi-hole のアップストリームを変更するものであり、ホストの. を変更するものではありません。トラブルシューティングのショートカットとして、/etc/resolv.confそのファイルを置き換えたり、 を無効にしたりすることは避けてください。systemd-resolved

ロールバックするには、Pi-holeに記録したアップストリームのDNS設定を復元して再起動してくださいpihole-FTL。Pi-holeがプロキシを参照しなくなったら、パッケージマネージャーを使用して無効化または削除できますdnscrypt-proxy。このサーバーがPi-hole経由で自身のDNSも解決している場合は、サービスを変更する前にローカルの復旧パスを用意しておいてください。

どちらのオプションがあなたのネットワークに適していますか?

Pi-hole で集中型 DNS フィルタリングを行い、Pi-hole から選択したリゾルバへのトラフィックを暗号化したい場合は、このシングルホストプロキシ構成を使用してください。プロキシにはローカル アドレスとポートが 1 つしかないため、検査は比較的容易です。Pi-hole を Docker 内、別のサーバー上、または複数のネットワークで実行する場合は、ループバック アドレスではなくコンテナ ネットワーク アドレスが必要になる場合があり、プロキシ リスナーがオープン リゾルバとして公開されないように制限する必要があります。ポリシー ベースのフィルタリング、デバイスごとの ID、または自宅外のローミング デバイス用の暗号化 DNS が必要な場合は、これらのクライアントまたは管理ゲートウェイを個別に構成してください。Pi-hole のアップストリーム DoH 接続では、各クライアントから Pi-hole へのパスは自動的に暗号化されません。

最後に、ルーターやクライアントが別のDNSサーバーをアドバタイズすると、Pi-holeをバイパスできることに注意してください。ネットワーク全体でフィルタリングを行うには、DHCP経由でクライアントにPi-holeのアドレスのみを割り当て、IPv4だけでなくIPv6のDNSアドバタイズも考慮してください。ルーターの設定を変更した後は、複数のデバイスで検証してください。サーバー上でプロキシ設定が正しくても、クライアントが別のリゾルバを直接使用することを防ぐことはできないためです。

公式資料

コメントを残す

失われたパーティションとハードディスクデータを安全に復元する方法

失われたパーティションとハードディスクデータを安全に復元する方法

TestDiskとPhotoRecを使って、失われたパーティションやファイルを復元する方法を学びましょう。ソースドライブを保護し、安全にスキャンを行い、復元したデータを別のディスクに保存します。

LinuxデスクトップでQRコードをスキャンする方法

LinuxデスクトップでQRコードをスキャンする方法

CoBangを使えば、Webカメラまたは画像ファイルでLinux上でQRコードをスキャンできます。インストールオプション、セットアップ手順、Flatpakカメラへのアクセスに関する修正方法については、こちらをご覧ください。

Cameractrlsを使ってLinuxでウェブカメラの設定を変更する方法

Cameractrlsを使ってLinuxでウェブカメラの設定を変更する方法

Cameractrlsを使用してLinux上でウェブカメラの設定を変更しましょう。露出、色、フリッカー低減などのサポートされているコントロールを調整し、互換性のあるビデオモードを確認できます。

LinuxにPhpStormをインストールする方法:ツールボックス、Tar.gz、Snap、およびAUR

LinuxにPhpStormをインストールする方法:ツールボックス、Tar.gz、Snap、およびAUR

LinuxにPhpStormをインストールするには、JetBrains Toolboxを使用するか、スタンドアロンのtar.gzアーカイブを使用するか、SnapおよびArch AURオプションを選択してください。Javaは既にバンドルされています。

LinuxにCisco Packet Tracerをインストールする方法

LinuxにCisco Packet Tracerをインストールする方法

Cisco Packet Tracer 9.0.1 を Ubuntu 64 ビット版にダウンロードし、APT を使用して DEB パッケージをインストールし、ターミナルでライセンスに同意してサインインすると、ラボを開始できます。

LinuxでCD-ROMをISOイメージとしてバックアップする方法

LinuxでCD-ROMをISOイメージとしてバックアップする方法

Linux上でGNOME Disksまたはddコマンドを使用してCD-ROM ISOイメージを作成します。光学ドライブを識別し、コピーを監視し、イメージを検証し、破損したディスクやオーディオディスクに別のツールが必要な場合を把握できます。

XFCE 4でデュアルパネルを設定する方法

XFCE 4でデュアルパネルを設定する方法

各ディスプレイごとに個別のXFCE 4パネルを作成し、2番目のパネルを右側の出力に割り当て、位置とサイズを調整し、必要なランチャーとステータス項目を追加します。

LinuxでGIMPを使って画像を切り抜く方法

LinuxでGIMPを使って画像を切り抜く方法

LinuxでGIMPを使って写真の背景を削除する方法:被写体をトレースし、選択した背景を削除し、透明度を保持して、再利用可能なPNG形式でエクスポートします。

FlightGearを無料でダウンロード:公式インストールガイド

FlightGearを無料でダウンロード:公式インストールガイド

FlightGearは公式サイトから無料でダウンロードできます。Windows、macOS、Linuxの各パッケージを比較し、データファイルをインストールして、最初のフライトを開始しましょう。

OKSampler:キーボードビートのための無料かつシンプルな音楽サンプラー

OKSampler:キーボードビートのための無料かつシンプルな音楽サンプラー

OKSamplerはMP3クリップをキーボードのキーにマッピングし、音声をループ再生できます。この旧型フリーウェアの機能、旧機能が失われた箇所、ダウンロード前に確認すべき点について解説します。