Daily Hack
🛡

Raspberry Pi 5でPi-holeを入れて家中の広告をブロックしてみた

デジタル
#Raspberry Pi#Pi-hole#ネットワーク#広告ブロック#スマートホーム

YouTubeアプリの広告、ニュースサイトの全面バナー、ゲームアプリの動画広告…。スマホやPCに個別に広告ブロッカーを入れるのは面倒ですよね。

Pi-hole を Raspberry Pi に導入すれば、Wi-Fi に繋がっているすべてのデバイスの広告を一括でブロックできます。スマホ、PC、テレビ、タブレット——設定は1回だけです。

Pi-hole による広告ブロックの仕組み

Pi-hole とは?

Pi-hole は、DNS レベルで広告をブロックするオープンソースソフトウェアです。

仕組み

通常の場合:
  スマホ → ルーター → インターネット → 広告が表示される

Pi-hole 導入後:
  スマホ → Pi-hole(DNS) → 広告ドメインをブロック
                           → それ以外は通常通りアクセス

広告の配信元ドメイン(例: ads.example.com)へのアクセスを DNS の段階で遮断するため、アプリ内広告を含む幅広い広告をブロックできます。

必要なもの

| パーツ | 目安価格 | |--------|----------| | Raspberry Pi 5(4GB で十分) | 約10,000円 | | microSD カード(16GB 以上) | 約800円 | | USB-C 電源アダプター | 約2,000円 | | 有線 LAN ケーブル | 約500円 |

Pi-hole は Wi-Fi でも動作しますが、DNS サーバーとしての安定性を考慮して有線 LAN 接続を強く推奨します。

STEP 1: Raspberry Pi OS をセットアップする

1-1. OS の書き込み

Raspberry Pi Imager で Raspberry Pi OS Lite (64-bit) を選択します。GUI は不要なので Lite 版で十分です。

書き込み時の設定:

  • SSH を有効にする
  • ユーザー名・パスワードを設定する
  • Wi-Fi は設定しなくてOK(有線 LAN を使用)

1-2. 起動と接続

有線 LAN を接続して電源を入れ、SSH で接続します。

ssh pi@raspberrypi.local

1-3. 固定 IP アドレスを設定する

DNS サーバーは IP アドレスが変わると困るため、固定 IP を設定します。

まず、現在のネットワーク情報を確認します。

ip addr show eth0
ip route show default

/etc/dhcpcd.conf を編集します。

sudo nano /etc/dhcpcd.conf

ファイルの末尾に以下を追加します(値は環境に合わせて変更してください)。

interface eth0
static ip_address=192.168.1.100/24
static routers=192.168.1.1
static domain_name_servers=1.1.1.1 8.8.8.8

| 項目 | 説明 | 値の例 | |------|------|--------| | ip_address | Pi に割り当てる固定 IP | 192.168.1.100/24 | | routers | ルーターの IP アドレス | 192.168.1.1 | | domain_name_servers | 上流の DNS サーバー | 1.1.1.1 8.8.8.8 |

設定後、再起動します。

sudo reboot

再起動後、新しいIPアドレスで SSH 接続します。

ssh pi@192.168.1.100

STEP 2: Pi-hole をインストールする

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

対話式のインストーラーが起動します。以下のように選択してください。

インストール中の選択肢

| 質問 | 推奨設定 | |------|----------| | Upstream DNS Provider | Cloudflare (1.1.1.1) または Google (8.8.8.8) | | Blocklists | デフォルトのまま(StevenBlack's Unified Hosts List) | | Install Admin Web Interface | On(管理画面あり) | | Install lighttpd web server | On | | Enable logging | On | | Privacy mode | 0 - Show everything |

インストールが完了すると、以下の情報が表示されます。パスワードを必ずメモしてください。

Web Interface: http://192.168.1.100/admin
Password: xxxxxxxx

パスワードの変更(任意)

pihole -a -p

新しいパスワードを入力します。

STEP 3: 動作確認

管理画面にアクセス

ブラウザで http://192.168.1.100/admin にアクセスし、ログインします。

ダッシュボードには以下の情報が表示されます。

  • Total queries: DNS クエリの総数
  • Queries Blocked: ブロックされたクエリ数
  • Percent Blocked: ブロック率
  • Domains on Blocklist: ブロック対象ドメイン数

コマンドラインでの確認

# Pi-hole の状態を確認
pihole status

# テスト: 広告ドメインを問い合わせ
nslookup ads.google.com 192.168.1.100

ブロック対象ドメインは 0.0.0.0 が返ります。

STEP 4: ルーターの DNS 設定を変更する

ここが最も重要な手順です。ルーターの DNS サーバーを Pi-hole の IP アドレスに変更することで、家庭内のすべてのデバイスに Pi-hole が適用されます。

一般的なルーターの設定手順

  1. ブラウザでルーターの管理画面を開く(例: http://192.168.1.1
  2. LAN設定 または DHCP設定 を探す
  3. DNS サーバー の項目を Pi-hole の IP アドレスに変更
プライマリ DNS:   192.168.1.100(Pi-hole の IP)
セカンダリ DNS:   (空欄のまま、または同じ IP)

セカンダリ DNS について: セカンダリに 8.8.8.8 などを設定すると、一部のリクエストが Pi-hole を迂回して広告がブロックされなくなります。セカンダリは空欄にするか、Pi-hole と同じ IP を設定してください。

主なルーターの設定画面の場所

| メーカー | 設定画面 URL | DNS 設定の場所 | |---------|-------------|---------------| | Buffalo | http://192.168.11.1 | 詳細設定 → LAN → DHCPサーバー | | NEC Aterm | http://192.168.10.1 | 詳細設定 → DHCP固定割当設定 | | TP-Link | http://192.168.0.1 | DHCP → DHCP Settings |

設定を保存したら、各デバイスの Wi-Fi を一度オフ→オンにするか、デバイスを再起動します。

STEP 5: ブロックリストを追加する(任意)

デフォルトのブロックリストでも十分ですが、日本のサイト向けにリストを追加すると効果が上がります。

ブロックリストの追加方法

  1. 管理画面の Adlists を開く
  2. URL を入力して Add をクリック
  3. ToolsUpdate Gravity で反映

おすすめの追加リスト

管理画面の Adlists から以下の URL を追加できます。

https://raw.githubusercontent.com/nickspaargaren/pihole-google/master/categories/analytics.txt
https://raw.githubusercontent.com/nickspaargaren/pihole-google/master/categories/ads.txt

追加後、Gravity を更新します。

pihole -g

STEP 6: 特定のサイトをホワイトリストに追加する

Pi-hole が有効だと、一部のサービスが正常に動作しなくなることがあります。その場合はホワイトリストに追加します。

# コマンドラインから追加
pihole -w example.com

# 管理画面からも追加可能
# Whitelist → ドメインを入力 → Add

よくホワイトリストに追加されるドメイン

s.youtube.com
www.googleadservices.com
cdn.optimizely.com

「あるサービスが動かなくなった」と思ったら、まず Pi-hole の管理画面で Query Log を確認し、ブロックされているドメインを特定してホワイトリストに追加してください。

STEP 7: Pi-hole を最新に保つ

# Pi-hole 本体のアップデート
pihole -up

# ブロックリスト(Gravity)の更新
pihole -g

Gravity の自動更新は cron で設定できます。

crontab -e
# 毎週日曜3時にブロックリストを更新
0 3 * * 0 pihole -g

導入効果の目安

一般的な家庭で Pi-hole を導入すると、以下のような効果が期待できます。

  • ブロック率: 全 DNS クエリの 15〜30%
  • ページ表示速度: 広告の読み込みがなくなる分、体感で速くなる
  • 通信量の削減: 広告の画像・動画をダウンロードしなくなる

導入して1日経ったら、管理画面のダッシュボードを確認してみてください。数千〜数万件の広告がブロックされていることに驚くはずです。

トラブルシューティング

| 症状 | 原因と対処 | |------|-----------| | 広告がまだ表示される | DNS キャッシュが残っている可能性。デバイスを再起動するか、DNS キャッシュをクリア | | インターネットに繋がらなくなった | Pi-hole が停止している可能性。pihole status で確認。緊急時はルーターの DNS を元に戻す | | 特定のサイトが表示されない | 過剰ブロック。Query Log で該当ドメインを確認し、ホワイトリストに追加 | | 管理画面にアクセスできない | http://固定IP/admin で直接アクセス。lighttpd が起動しているか systemctl status lighttpd で確認 |


Pi-hole は追加のハードウェアが不要で、Raspberry Pi さえあればすぐに始められます。一度設定すれば、家族全員のデバイスで広告が消える快適さを実感できるはずです。