Raspberry Pi Zero 2W活用術|広告ブロックもできるDNSサーバー(DoT+Tailscale)

近年、DNS通信の暗号化や広告・マルウェアドメインのブロックは、家庭内ネットワークにおいても重要性を増しています。
従来の平文DNSは盗聴や改ざんのリスクを抱えており、また多くの端末で広告や不要なトラッキングを防ぐ仕組みが標準で備わっていないのが現状です。

本記事では、Raspberry Pi Zero 2W を用いて以下を統合した環境構築手順を解説します。

これにより、自宅LANを拠点とした セキュアかつ快適なDNSゾルバ環境 を構築することが可能となります。
まずはシステム全体像を図解で示します。

実現したいフロー


Tailscale による保護

Tailscale は WireGuard を基盤とした VPN ソリューションであり、従来の複雑な VPN 構築と比較して簡便かつ安全に利用できる点が特徴です。
本構成では、外出先のクライアント(スマートフォンやノート PC)から自宅の Raspberry Pi Zero 2W へ安全に接続する経路を提供します。

利点

  • ゼロコンフィグに近い導入性
    サーバーとクライアントの双方に Tailscale を導入し、認証を行うだけで安全な通信路が確立します。従来必要とされていたポート開放や DDNS 設定は不要です。

  • エンドツーエンド暗号化
    クライアントと Raspberry Pi 間の通信は WireGuard により暗号化されます。公衆 Wi-Fi などの不安定・不信頼なネットワーク環境下でも、DNS クエリの通信が保護されます。

  • 自宅 DNS サーバーの外部利用
    外出先からでも自宅 LAN 内の Pi-hole + Unbound にアクセス可能です。これにより「広告ブロック」「暗号化 DNS」「プライバシー保護」を一貫して利用できます。

設定概要

  1. Raspberry Pi に Tailscale を導入し、ネットワークに参加させる。
  2. Tailscale 管理コンソールにて DNS Nameserver を Raspberry Pi の Tailscale IP に設定する。
  3. 外出先の端末は Tailscale VPN を介して自宅の Pi-hole + Unbound を自動的に参照するようになる。

Tailscale を利用することで、外部から直接 Raspberry Pi をインターネットへ公開する必要がなくなり、セキュリティリスクを避けつつ自宅 DNS の利便性を最大限に活用できます。


DNS over TLS (DoT) のメリット

本構成において、Unbound は上流の公開 DNS サーバー(Cloudflare や Quad9 など)と通信する際に DNS over TLS (DoT) を利用します。
これにより、従来の平文 DNS 通信と比較して、セキュリティとプライバシーの両面で大きな利点が得られます。

利点

  • 通信内容の秘匿化
    平文 DNSISP や第三者によって容易に観察される可能性があります。DoT は TLS による暗号化を行うことで、利用者がどのドメインにアクセスしているかを外部から傍受されにくくします。

  • 改ざん耐性の向上
    平文 DNS は中間者攻撃(MITM)によって応答が改ざんされるリスクがあります。DoT によって認証付き暗号化通信が確立されることで、不正な応答の挿入や書き換えを防止できます。

  • プライバシー保護と規制回避
    公共 Wi-Fi や共有ネットワーク環境では、利用者の DNS クエリが可視化される危険があります。DoT を利用することでプライバシーが保護され、一部の環境に存在する DNS レベルの検閲やブロッキングを回避できます。

  • 標準化と互換性
    DoT は IETF によって標準化されており、ポート 853/TCP を利用します。既に多くのパブリック DNS サービスが対応しており、ファイアウォールやルータの設定においても扱いやすいという利点があります。


DoT を導入することで、DNS トラフィックの暗号化と改ざん防止が実現され、自宅ネットワークにおけるセキュリティ基盤の強化に寄与します。


Pi-hole の役割とメリット

Pi-holeDNS レベルで広告やマルウェアドメインを遮断するソフトウェアであり、家庭内ネットワーク全体にわたって効果を発揮します。
本構成では Raspberry Pi Zero 2W 上に導入し、Unbound と組み合わせることで「広告ブロック」と「暗号化 DNS」の両立を実現します。

利点

  • ネットワーク全体での広告ブロック
    ブラウザやアプリに依存せず、LAN 内のすべての端末に対して広告や不要なトラッキングを遮断します。個別端末への追加設定が不要です。

  • セキュリティ強化
    既知のマルウェア配布サイトやフィッシングドメインをブロックリストによって防止できます。利用者が誤って危険なサイトへアクセスするリスクを低減します。

  • 統計と可視化
    管理用の Web インターフェースから、どのドメインがブロックされたかや全体のクエリ数を可視化できます。ネットワークの利用状況を把握しやすくなります。

基本設定

Pi-holeUnbound を導入する前に、Raspberry Pi Zero 2W を安定して DNS サーバーとして稼働させるための基本的な準備を行います。

パッケージの更新

まずはシステム全体のパッケージを最新化しておきます。
これにより、インストール時の不具合を防ぎ、最新のセキュリティパッチが適用されます。

sudo apt update && sudo apt upgrade -y

IP アドレスの固定化

Pi-hole をサーバーとして安定運用するためには、Raspberry Pi の IP アドレスを固定しておくことを推奨します。
ここでは systemd-networkd を用いた設定方法を紹介します。

  1. ネットワーク設定ファイルを作成する。
sudo nano /etc/systemd/network/10-eth0.network

内容例(有線LAN eth0 を固定化する場合):

[Match]
Name=eth0

[Network]
Address=192.168.0.88/24
Gateway=192.168.0.1
DNS=1.1.1.1 8.8.8.8

ネットワークサービスを有効化

sudo systemctl enable systemd-networkd
sudo systemctl restart systemd-networkd

状態確認

ip a show eth0
ip route

Unbound(DoT対応)の導入と設定

本構成では Unbound をローカルリゾルバとして動作させ、上流に Cloudflare Security DNSマルウェアブロック)DNS over TLS (DoT) で転送します。
MTU断片化を避けるため EDNSバッファ 1232、プライバシ向上のため qname minimisation を有効化します。

注意(既存スニペットとの衝突回避)

Debian/Raspberry Pi OS では、/etc/unbound/unbound.conf.d/ に既定スニペットが入っていることがあり、
auto-trust-anchor-file の二重指定でエラーになる場合があります。見つかったら退避しておきます。

sudo mv /etc/unbound/unbound.conf.d/root-auto-trust-anchor-file.conf \
        /etc/unbound/unbound.conf.d/root-auto-trust-anchor-file.conf.bak

設定を行います。

sudo nano /etc/unbound/unbound.conf.d/pi-hole.conf
server:
    # ローカルのみで待ち受け(Pi-holeからの転送を受ける)
    interface: 127.0.0.1
    port: 5335
    access-control: 127.0.0.0/8 allow

    # 運用の基本
    verbosity: 1
    edns-buffer-size: 1232
    prefetch: yes
    qname-minimisation: yes

    # 証明書束とDNSSECのtrust anchor
    tls-cert-bundle: "/etc/ssl/certs/ca-certificates.crt"
    auto-trust-anchor-file: "/var/lib/unbound/root.key"

forward-zone:
    name: "."
    forward-tls-upstream: yes

    # Cloudflare Security DNS(マルウェアブロック)
    forward-addr: 1.1.1.2@853#security.cloudflare-dns.com
    forward-addr: 1.0.0.2@853#security.cloudflare-dns.com
    forward-addr: 2606:4700:4700::1112@853#security.cloudflare-dns.com
    forward-addr: 2606:4700:4700::1002@853#security.cloudflare-dns.com

チェックしてUnboundを再起動します。

sudo unbound-checkconf
sudo systemctl enable unbound
sudo systemctl restart unbound

試しにやってみます。

# Unbound へ直接問い合わせ(Port 5335)
dig @127.0.0.1 -p 5335 example.com

Pi-hole の導入と設定

Pi-holeDNS レベルで広告やマルウェアドメインを遮断するソフトウェアです。
本構成では、Unbound(DoT対応)を上流 DNS として利用することで、
「広告ブロック」+「暗号化 DNS の両立を実現します。

インストール

Pi-hole は公式インストーラを利用して簡単に導入できます。

curl -sSL https://install.pi-hole.net | bash

管理画面へのアクセス

インストール完了後、Pi-hole の管理画面にアクセスできます。 http:///admin にアクセスします。

http://192.168.11.88/admin

初期パスワードはインストール完了時にターミナルに表示されます。
忘れてしまった場合や任意のパスワードに変更したい場合は、次のコマンドで再設定できます。

sudo pihole -a -p

ログインを行うと下記画面が表示されます。

Pi-holeの画面

インストール中にいくつかの選択肢が出てきますが、重要なのは「Upstream DNS Server」です。 ここでは自前の Unbound を利用するため、以下を選択または手動で指定します。

DNS Settingsの画面

下記にUnboundの設定値を入力します。

#Custom DNS servers
127.0.0.1#5335

これでPi-holeの設定は完了です。

Tailscale の導入と設定

Tailscale は WireGuard を基盤とした VPN ソリューションであり、ポート開放や DDNS 設定を行わずに安全な VPN を構築できます。
公式リポジトリを追加して apt 経由でインストールすることで、システム更新時に自動的に最新版へ更新され、長期運用にも適しています。

リポジトリ登録

curl -fsSL https://pkgs.tailscale.com/stable/debian/bookworm.noarmor.gpg | \
  sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null

echo "deb [signed-by=/usr/share/keyrings/tailscale-archive-keyring.gpg] \
https://pkgs.tailscale.com/stable/debian bookworm main" | \
  sudo tee /etc/apt/sources.list.d/tailscale.list

インストールを行う

sudo apt update
sudo apt install tailscale -y

サービス起動とログイン

sudo systemctl enable tailscaled
sudo systemctl start tailscaled
sudo tailscale up

ログインを実行する

初回の tailscale up 実行時にブラウザが開き、Google / GitHub / Microsoft などのアカウントで認証します。 成功すると Raspberry Pi に 100.x.x.x の Tailscale IP が割り当てられます。

確認コマンド:

tailscale ip -4

Tailscale 管理画面での DNS 設定

  1. 管理コンソールにログインする。
  2. DNS → Nameservers で「Add nameserver」を選択し、Raspberry Pi100.x.x.x を追加する。
  3. 「Override local DNS」を ON にする。

これにより、Tailscale 経由で接続したクライアントは自宅の Pi-hole + UnboundDNS として利用するようになります。

スマホや PC からの接続

  1. 各端末に Tailscale アプリ をインストールする。
  2. Raspberry Pi と同じアカウントでログインする。
  3. 自動的に Pi-hole の Tailscale IPDNS に指定され、外出先からでも広告ブロック環境を利用可能になります。

自動セキュリティアップデートの設定

Raspberry Pi を常時稼働させる場合、セキュリティアップデートを自動化しておくと安心です。
ここでは unattended-upgrades を利用して、自動で更新と必要な再起動を行う方法を紹介します。

unattended-upgrades の導入

  1. パッケージをインストールする。
sudo apt update
sudo apt install unattended-upgrades apt-listchanges -y

2.自動アップデートを有効化

sudo dpkg-reconfigure --priority=low unattended-upgrades

対話形式で「Yes」を選択すれば、セキュリティアップデートが自動化されます。

設定ファイルの確認と拡張

自動更新の対象リポジトリは、以下のファイルで確認できます。

sudo nano /etc/apt/apt.conf.d/50unattended-upgrades

通常はセキュリティアップデートのみ有効化されています。 すべての更新(通常更新やバックポートを含む)を自動化したい場合は、次の行を有効化します。

Unattended-Upgrade::Automatic-Reboot "true";
Unattended-Upgrade::Automatic-Reboot-Time "03:00";

ログを確認したい場合

less /var/log/unattended-upgrades/unattended-upgrades.log

不要サービスの無効化

Raspberry PiDNS サーバー専用機として運用する場合、利用しないサービスを停止しておくことで リソースの節約セキュリティ強化 に繋がります。
以下は代表的な不要サービスの例です(環境に応じて調整してください)。

無効化コマンド例

# mDNS/Avahi を無効化
sudo systemctl disable --now avahi-daemon.service

# Bluetooth 関連を無効化
sudo systemctl disable --now bluetooth.service hciuart.service

# ボタン/キー入力監視(未使用なら無効化)
sudo systemctl disable --now triggerhappy.service

# 無線 LAN を利用しない場合
sudo systemctl disable --now wpa_supplicant.service

# モデムマネージャー(セルラーモジュール未使用なら不要)
sudo systemctl disable --now ModemManager.service

# ディスプレイバックライト制御(ヘッドレス運用なら不要)
sudo systemctl disable --now rpi-display-backlight.service

# スワップファイル(メモリ節約のため無効化)
sudo systemctl disable --now dphys-swapfile.service

注意点

  • 無効化する前に 本当に使っていないか を確認してください。
  • Wi-Fi 接続で運用する場合wpa_supplicant.service を無効化しないよう注意が必要です。
  • スワップ無効化 は SD カードの寿命を延ばせますが、メモリ不足時の挙動に注意してください。

Pi-holeの仕組みについて説明してみる

Pi-holeの設定方法を以下で投稿しました。

tan-penguin.hatenablog.com

さて、どのような仕組みで広告をブロックしているのか、それを説明してみたいと思います。

Pi-holeは「DNSフィルタリング」

通常、PCやスマホは「example.com」のようなドメインIPアドレスに変換するためにDNSサーバーへ問い合わせます。
このとき使われるDNSサーバーは、契約しているISPGoogle Public DNSCloudflare などです。

これらのDNSサーバーは与えられた名前解決を“素直に”処理します。
つまり、ページ中に埋め込まれた広告スクリプトやトラッキングドメインの問い合わせが来れば、そのIPアドレスを正しく返すため、結果として広告やトラッカーへの接続が成立します。

通常のDNSサーバーの処理フロー

Pi-holeはネットワーク内のDNSサーバー役になり、問い合わせ内容を検査します。
広告配信・トラッキング用のドメインがブロック対象(リストやルール)に一致した場合は、接続が成立しない応答を返すことで通信自体を止めます。

  • 一致したら → 存在しないIP(例: 0.0.0.0 / ::)NXDOMAIN(存在しないドメイン)を返す
  • その結果、端末は広告サーバーに到達できず、広告表示が発生しない

Pi-holeを使ったDNSサーバーのフロー

通常のDNS解決(詳解)

  1. 端末(スタブリゾルバ)がDNSへ問い合わせ
  2. 上流リゾルバ(ISPGoogle/Cloudflare)が必要に応じて再帰的に権威DNSへ辿る
  3. 得たIPアドレスを端末へ返す → ブラウザやアプリがそのIPへ接続

Pi-holeをDNSにすると、1の問い合わせがまずPi-holeに届き、ここでフィルタが働くため、2以降に進む前に遮断できます。

[Client] → (DNSクエリ) → [Pi-hole]
    ├─ ブロック判定一致 → [0.0.0.0 / NXDOMAIN を返答] → 終了
    └─ 不一致           → [上流DNSへ転送] → [正規IPを返答]

ブラックリストホワイトリスト

  • Pi-holeは「ブロックリスト(adlist)」を利用して、広告・トラッカーのドメインを判定します。
  • 誤って必要なドメインがブロックされてしまった場合は「ホワイトリスト」で除外可能です。
  • これにより、柔軟にフィルタリングを調整できます。

Pi-holeでのブラックリストホワイトリストの処理

ネットワーク全体を保護

ルーターDHCP設定で「DNSサーバー=Pi-hole」にしておくと、家庭内の全ての機器が自動的にPi-holeを利用します。

  • PC、スマホタブレット、IoT機器も対象
  • 各端末ごとに広告ブロッカーを導入する必要なし

ネットワーク全体の保護プロセス

Web管理コンソール

Pi-holeはブラウザからアクセスできるダッシュボードを提供しています。

  • どのドメインがブロックされたか
  • どの端末から問い合わせがあったか
  • リアルタイムの統計情報

これらをグラフやログで確認することができます。

追加機能(DoH/DoT・VPN連携)

  • DNS-over-HTTPS (DoH) や DNS-over-TLS (DoT) と組み合わせれば、DNSクエリを暗号化可能。
  • Unbound を導入すると、独自の再帰DNSサーバーとしてさらにプライバシーが強化されます。
  • 外出先からも自宅のPi-holeを利用したい場合は、VPN(WireGuardやTailscale)と組み合わせるのがおすすめです。

盗聴者からDNSの内容を保護するDoH

まとめ

Pi-holeは「DNSの仕組みを利用した広告ブロッカー」であり、家庭内ネットワーク全体を効率的に保護できます。
シンプルながら強力で、さらにカスタマイズ性も高いため、プライバシー保護や快適なネット環境作りに最適です。

Raspberry Pi Zero 2Wに固定IPアドレスを設定する

固定IP設定(systemd-networkd)

Pi-hole をサーバーとして安定運用するためには、Raspberry Pi の IP アドレスを固定しておくのがおすすめです。

ここでは systemd-networkd を用いた固定IP設定方法を紹介します。

ネットワーク設定ファイルを作成

sudo nano /etc/systemd/network/10-eth0.network

内容例(有線LAN eth0 を固定化する場合):

[Match]
Name=eth0

[Network]
Address=192.168.0.88/24
Gateway=192.168.0.1
DNS=1.1.1.1 8.8.8.8

ネットワークサービスを有効化

sudo systemctl enable systemd-networkd
sudo systemctl restart systemd-networkd

状態確認

ip a show eth0
ip route

これで完了です。

Raspberry Pi Zero 2Wで作るPi-hole + VPN環境

最近のウェブやアプリは広告が多く、さらに公共Wi-Fi利用時のセキュリティリスクも無視できません。
そこで、Raspberry Pi Zero 2Wを用いて Pi-hole(広告ブロックDNSVPN(Tailscale) を組み合わせた環境を構築しました。

Pi-holeにより不要な広告トラフィックDNSレベルで遮断し、cloudflaredを使って DNS over HTTPS(DoH) で外部DNS通信を暗号化。
さらにTailscaleを導入することで、外出先からも自宅のPi-holeを経由した安全なインターネット利用が可能になりました。

この記事では、導入の背景から構成、具体的な設定方法までをまとめています。

環境紹介

今回の構築環境は以下の通りです。Pi-holeは軽量なのでRaspberry Pi Zero 2Wでも十分動作します。VPN機能のTailscaleもCPU負荷が低いため、小型ボード上でも問題なく利用できます。
一応、サーバーとなるためWi-Fi以外に有線LANを使用しています。

ハードウェア

項目 内容
ボード Raspberry Pi Zero 2 W
CPU Broadcom BCM2710A1 (Cortex-A53, 4コア, 1GHz)
メモリ 512MB
ストレージ microSDカード 64GB
ネットワーク 有線LAN + Wi-Fi(2.4GHz)

ソフトウェア

ソフトウェア バージョン / 構成
OS Raspberry Pi OS Lite (Debian 12 bookworm, 64bit)
Pi-hole v5.18.4
cloudflared 最新バイナリ(DoHクライアント)
Tailscale v1.x(WireGuardベースのメッシュVPN

Pi-hole の導入

まずは広告ブロックの要となる Pi-holeRaspberry Pi Zero 2W にインストールします。Pi-hole は DNS サーバーとして動作し、不要な広告ドメインをブロックしてくれるソフトウェアです。

推奨設定になりますが、 DNSとして運用するため、固定IPアドレスに指定 したほうがいいです。

tan-penguin.hatenablog.com

パッケージの更新

インストール前にパッケージを最新化しておきます。

sudo apt update && sudo apt upgrade -y

Pi-hole のインストール

Pi-hole の公式インストーラスクリプトを利用するのが最も簡単です。以下のコマンドを実行します。

curl -sSL https://install.pi-hole.net | bash

インストール時に、色々と確認されます。

管理画面へのアクセス

インストール完了後、Pi-hole の管理画面にアクセスできます。

http://<Raspberry Pi のIPアドレス>/admin

例:

http://192.168.11.88/admin

初期パスワードはインストール完了時に表示されます。忘れた場合は次のコマンドで再発行可能です。というよりも、変えといたほうがいいです。

sudo pihole setpassword

ちなみに、ログインに成功すると、こんな感じになります。

Pi-holeの画面

cloudflared の導入

Raspberry Pi OS に公式の Cloudflare リポジトリを追加して、apt 経由で cloudflared を導入します。これによりシステム更新時に自動で最新バージョンが反映され、セキュリティ面でも安心です。

cloudflaredを入れる理由は、DNS over HTTPS (DoH)を使いたいためです。

リポジトリ追加

# GPGキー取得
curl -fsSL https://pkg.cloudflare.com/cloudflare-main.gpg | \
  sudo tee /usr/share/keyrings/cloudflare-archive-keyring.gpg >/dev/null

# リポジトリ登録
echo "deb [signed-by=/usr/share/keyrings/cloudflare-archive-keyring.gpg] \
https://pkg.cloudflare.com/cloudflared $(lsb_release -cs) main" | \
  sudo tee /etc/apt/sources.list.d/cloudflared.list

インストール

sudo apt update
sudo apt install cloudflared -y

専用ユーザーを作成(推奨)

sudo useradd -s /usr/sbin/nologin -r -M cloudflared

systemd サービスを設定

sudo nano /etc/systemd/system/cloudflared.service

内容:

[Unit]
Description=cloudflared DNS over HTTPS proxy
After=network-online.target

[Service]
Type=simple
User=cloudflared
ExecStart=/usr/bin/cloudflared proxy-dns --address 127.0.0.1 --port 5053 \
  --upstream https://1.1.1.1/dns-query \
  --upstream https://1.0.0.1/dns-query
Restart=on-failure
RestartSec=10

[Install]
WantedBy=multi-user.target

有効化と起動

sudo systemctl enable cloudflared
sudo systemctl start cloudflared
systemctl status cloudflared --no-pager

active (running) になればOKです。

Pi-holeにDNSの設定を追加する

Pi-holeにログインしてからSettings→DNSを開きます。 Upstream DNS Serversからはすべて、チェックを外してください。

Custom DNS serversに対して 127.0.0.1#5053と入れて、最後に適用してください。

Pi-holeのDNS設定

1.1.1.1/help での確認

ブラウザで https://1.1.1.1/help を開くと、診断情報が表示されます。

実際の例:

Connected to 1.1.1.1      Yes
Using DNS over HTTPS (DoH) Yes
Using DNS over TLS (DoT)   No
Using DNS over WARP        No
AS Name                    Cloudflare, Inc.
AS Number                  13335
Cloudflare Data Center     NRT

ここで Using DNS over HTTPS (DoH) = Yes となっていれば、Pi-hole → cloudflared → Cloudflare という経路で暗号化DNSが有効になっています。

Tailscale の導入

Tailscale 公式のリポジトリを追加して、apt 経由でインストールします。
これによりシステムアップデート時に自動的に最新版へ更新されるため、長期運用に向いています。

これを入れることで、ポート開放など面倒なことをしなくてもVPNの運用が可能になります。

リポジトリ登録

curl -fsSL https://pkgs.tailscale.com/stable/debian/bookworm.noarmor.gpg | \
  sudo tee /usr/share/keyrings/tailscale-archive-keyring.gpg >/dev/null

echo "deb [signed-by=/usr/share/keyrings/tailscale-archive-keyring.gpg] \
https://pkgs.tailscale.com/stable/debian bookworm main" | \
  sudo tee /etc/apt/sources.list.d/tailscale.list

インストール

sudo apt update
sudo apt install tailscale -y

サービス起動とログイン

sudo systemctl enable tailscaled
sudo systemctl start tailscaled
sudo tailscale up

初回の tailscale up でブラウザが開き、Google / GitHub / Microsoft などのアカウントでログインします。
成功すると Pi に 100.x.x.x の Tailscale IP が割り当てられます。

確認コマンド:

tailscale ip -4

TailscaleのWEB設定

Tailscaleの管理画面にログインして、DNSの設定を行います。 Nameserversのところで、Add nameserverを入れ、customより、Raspberry Piの100.x.x.xを入力します。 入力後、Overried DNS serversをONしてください。

スマホやPCから接続

  • 各端末に Tailscale アプリをインストール
  • 同じアカウントでログイン
  • Pi-hole の Tailscale IP を DNS に指定すれば、外出先からでも広告ブロック環境を利用可能です。

感想・まとめ

今回、Raspberry Pi Zero 2W に Pi-hole + cloudflared + Tailscale を導入し、
広告ブロック・DNS暗号化・VPN を一体化した環境を構築しました。

良かった点

  • 広告が激減して快適
    特にスマホアプリ内の広告や、ニュースサイトのうっとうしいバナーがほとんど消えました。

  • セキュリティ強化
    DNSを DoH 化したことで、ISP や中継経路から名前解決内容を覗かれにくくなりました。
    公共Wi-Fi利用時も安心感があります。

  • 外出先からも利用可能
    Tailscale のおかげでポート開放不要で Pi-hole をVPN経由で利用できるようになり、
    自宅と同じ環境を外出先でも使えるようになりました。

課題や注意点

  • Zero 2W では性能に限界
    普通の広告ブロック用途なら十分ですが、大人数での同時利用には向きません。
    本格運用なら Raspberry Pi 4 以上をおすすめします。

  • ブラックリストの調整
    一部サービス(例: LINEや一部アプリ)で必要な通信までブロックされることがあるので、
    適宜 Allowlist への追加が必要です。

まとめ

ワンコインサイズの Raspberry Pi Zero 2W でも、工夫次第で 「広告ブロック+セキュアDNSVPN という強力な環境を作れることがわかりました。
ちょっとした実験から始めても、日常的に使えるレベルの便利さを体感できます。

これから運用する中で、Grafana による可視化や、より細かい広告リストの調整なども試してみたいと思います。