Ubuntu Server 24.04でPi-hole DNS-over-HTTPSを設定する方法
Ubuntu Server 24.04 上で Pi-hole を設定し、dnscrypt-proxy を使用して DNS-over-HTTPS を利用するようにしてから、ローカルのアップストリームを確認し、一般的な DNS の競合を回避します。
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エントリを選択してください。
プロキシはポート5053のループバックにのみバインドし、ポート53はPi-hole用に確保します。これにより、Pi-holeのDNSサービスとUbuntuのローカルリゾルバとの競合を回避できます。systemd-resolvedこの設計を実現するためだけに無効化しないでください。プロキシの独立したループバックポートによって、その競合は回避されます。
dnscrypt-proxyプロジェクトでは、Ubuntuパッケージのインストール手順を説明しています。インストールする前に、設定済みのUbuntuリポジトリに該当するパッケージがあることを確認してください。
sudo apt update
apt-cache policy dnscrypt-proxy
出力に候補バージョンが表示された場合は、それをインストールしてください。
sudo apt install dnscrypt-proxy
候補が表示されない場合は、無関係なサードパーティのリポジトリを追加して先に進むことはしないでください。dnscrypt-proxy プロジェクトの公式 Linux ガイドにリンクされているインストール方法を使用し、リリースとアーキテクチャを確認して、そのインストールに合わせてサービス設定を調整してください。以下の systemd ソケットユニットと設定パスは、Pi-hole が文書化した Ubuntu パッケージ設定に適用されます。
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 はカスタムリスナーに加えてデフォルトポートを保持してしまう可能性があります。
パッケージ設定ファイルを開きます。
sudoedit /etc/dnscrypt-proxy/dnscrypt-proxy.toml
systemdソケットを有効化するには、プロキシ設定でリスナーリストを空にします。現在署名されている公開リゾルバリストからリゾルバ名を選択します。たとえば、次の例では標準のCloudflareリゾルバを選択します。Pi-holeガイドでは、cloudflare-securityアップストリームリゾルバでマルウェアフィルタリングが必要な場合の例として、次の例も示されています。
listen_addresses = []
server_names = ['cloudflare']
パッケージのその他の設定はそのままにしておいてください。 に記載されている名前はserver_namesレジストリ識別子であり、任意のホスト名や URL パスではありません。別のプロバイダを使用する場合は、現在のリゾルバエントリが DoH をサポートしていることを確認し、その正確な名前をコピーしてください。マルウェアなどのカテゴリをフィルタリングするリゾルバは、フィルタリングしないリゾルバとは異なる結果を生成する可能性があります。
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 を使用する必要がある場合は、これらのエントリを削除してください。
新しい設定を読み込むために、ソケット、プロキシサービス、および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を使用したことを証明するものではありません。
sudo ss -lntup、ドロップインをで確認しsystemctl cat dnscrypt-proxy.socket、空のリセット行が5053エントリの前にあることを確認してください。127.0.0.1#5053から、再起動してくださいpihole-FTL。標準のアップストリームチェックボックスが、意図せず代替ルートを提供していないことを確認してください。/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アドバタイズも考慮してください。ルーターの設定を変更した後は、複数のデバイスで検証してください。サーバー上でプロキシ設定が正しくても、クライアントが別のリゾルバを直接使用することを防ぐことはできないためです。
Ubuntu Server 24.04 上で Pi-hole を設定し、dnscrypt-proxy を使用して DNS-over-HTTPS を利用するようにしてから、ローカルのアップストリームを確認し、一般的な DNS の競合を回避します。
SSH X11転送経由のYaST GUIの不具合をトラブルシューティングします。DISPLAYをテストし、既知のQt XIOエラーを修正し、SSH設定を確認し、必要に応じてncursesに切り替えます。
SLES 15 上に SUSE RMT をセットアップし、SCC メタデータを同期し、選択したリポジトリをミラーリングし、HTTPS 経由でクライアントを登録し、SMT からの移行における制限事項を理解する。
Pardus Linux 23でサウンドカードが認識されない場合のトラブルシューティングを行います。ALSA検出、カーネルモジュール、オーディオサービス、出力プロファイル、ファームウェア、およびアップデートを安全に確認します。
Pardus KVMゲストが1024x768でフリーズしてしまう問題を解決するには、仮想GPU、SPICEエージェント、X11またはWaylandセッションを確認し、より高いディスプレイモードが正しく動作していることを確認してください。
Debianにおいて、キーベースのSSH、/etc/fstab、systemdネットワークオプション、自動マウント、および検証手順を用いて、起動時にリモートSSHFSディレクトリを自動的にマウントします。
SLESアップグレード中に「メモリを割り当てできません」というエラーが発生した場合のトラブルシューティングを行います。RAM、スワップ、OOMログ、およびプロセス制限を確認し、パッケージトランザクションを中断することなく復旧します。
Harmonica OS (HamoniKR) タブレットにおけるタッチオフセット、回転、およびディスプレイマッピングのトラブルシューティングを行います。X.Org と libinput の修正を比較し、安全にテストを行い、キャリブレーションが役に立たない場合を把握します。
既存の Debian 12 スワップパーティションを、dm-crypt、起動ごとに生成される新しいランダムキー、/etc/crypttab、/etc/fstab、および安全な検証手順を使用して暗号化します。
Ubuntuにsmartmontoolsをセットアップして、ドライブの状態を監視し、SMARTメールアラートを送信します。デバイスのサポート状況を確認し、メール配信を設定し、通知をテストし、障害のトラブルシューティングを行います。