Raspberry PiとPi-holeでデバイス毎に広告をブロックするやり方

ここ何年かインターネット広告は醜くなりました。ラズパイダも僅かとはいえ広告収入の恩恵を受けてきましたから、何が何でも広告はイケないとは思っていません。中には有益な広告があることも事実だからです。

ラズパイダでは、Google広告の18禁広告やアルコール類、ジャンル問わず表現が不快な広告は手動で除外しています。ただ、これもイタチごっこでして、現在は不快な広告はほとんど出ていないと思うのですが、もし表示されていたらすみません。

皆さんも気持ち悪い広告は見たくないと思うでしょうから、広告をブロックしてくれるPi-holeをご紹介します。今回は、デバイス毎に広告ブロック設定する方法をご紹介します。

これならルーターの設定はイジらないで済みます。

ネットワークなどインフラ系は苦手な人は多いと思います。専門用語も多いので仕方ありません。(説明するのも難しいのです)

この記事の主な流れ

今回のポイント

この記事では、ルーターをイジることなく、次のようにPi-holeを使用します。

  1. Pi-holeをDNSサーバとしてセットアップする(今回はWi-Fi接続)
  2. デバイス毎のDNSサーバをPi-holeのIPアドレスに割り当てる。

例として、いつものようにキャプチャ画像を貼っておきますが、IPアドレスはご自身の環境に置き換えてくださいね。ご紹介通りのIPアドレスで動くとは限りません。

デバイス毎にDNSサーバを経由させて広告をブロックさせるので、設定していないデバイスは従来通りとなります。

デフォルトで運用した結果

とりあえずデフォルトでPi-holeをネットワークにぶら下げても、デフォルトのブロックリストで次のようになりました。

某ニュースサイトの例

どのサイトとは言及しませんが、某ニュースサイトで確かめてみると、赤枠のようになります。しっかりバナー広告が消えていますね。

このラズパイダも同様です。

ラズパイダ

このように、ブロックリストを追加しなくても、デフォルトでそれなりに弾いてくれます。

WebブラウザBraveの方が強力ですが、Pi-holeの場合はWebブラウザを選ばない点はメリットです。

今回の環境

使用するRaspberry Piは、消費電力を考えてRaspberry Pi Zero系にします。基本はずっと電源入れっぱなしですからね。

2022年現在、古いZero系はなかなか手に入りません。手に入るのは新しいZero 2wでしょうか。(それでも抽選販売だけど)

Zero2 w

もしも2の性能では勿体ないと思うなら、Zero 1W/WHでもいいですが、OSが32bitしか対応していませんから気をつけましょう。

  • Raspberry Pi OS lite 32bit → Zero 1W/WH
  • Raspberry Pi OS lite 64bit → Zero 2
Zero1 w

当然ながら、Raspberry Pi 4でも構いませんし、3B+でも3A+でもいいでしょう。

Pi-hole : Raspberry Pi のモデルはどれでもOK。有線LANでもWi-Fi接続でもOK。

今回は旬のRaspberry Pi Zero2 Wにしておきます。

Zeroの有線LANなら

Zero系は有線LANポートがありませんから、有線LAN(eth0)で繋ぐならアダプターを使うことになります。

microUSB-BのLANポート付きUSBハブ

USBハブの中にはLANポートが付いている製品もあります。これはmicroUSBで接続するため少しレアです。

有線LANで繋いだ方がWi-Fiより安定します。とはいえZero系はギガビットイーサネットには対応していないので、速度的な恩恵はほとんどありません。

利点は安定することと、ケーブルを繋げばネットに繋がる簡便さです。

Pi-holeはいわばDNSサーバのため、キャッシュも効くこともあり、速度の違いは体感できるレベルではないでしょう。Zero系の場合はどちらにしても速度は遅いので、今回はWi-Fiで接続します。

Pi-holeのインストールはRaspberry Pi OS liteから

Pi-holeは、Raspberry Pi OS liteに追加でインストールする形になります。ご存じのようにLite版はGUIがありません。基本はコマンド操作になります。他のPCからSSHで接続すると楽です。

Raspberry Pi のユーザー名はpiholeで設定してしまったのですが、ユーザーグループにpiholeが存在するので、他のユーザー名が良いですね。

インストール後の設定はWebブラウザを使ったWebUI画面で行います。

Raspberry Pi ImagerでRaspberry Pi OS liteをmicroSDカードに書き込んで起動します。

Zero2ならlite 64bitはOK
歯車アイコンの詳細設定ですべて設定しておくと楽です

SSHで接続してインストール

SSHで接続するのに、IPアドレスが分からない場合がありますよね。今回はホスト名を指定したので、IPアドレスを指定しなくても接続できます。

ssh ユーザー名@ホスト名.local

調べて見つけるには、スマホアプリが便利ですよ。

IPアドレスが分かったか、ホスト名で指定してSSHで接続します。

その後、次の1行コマンドでPi-holeをインストールできます。

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

質問に答える形で設定していきます。

大半はContinueやOK・YESで進めてもらってOKです。

インストール開始

最初に固定IPを決めてねという箇所は、現在割り当てられているIPアドレスをそのまま固定IPにするか、もしくは自分で決めたい場合と選択肢が異なります。

固定IPが必要ですよ

表示されているIPアドレスで良ければYES。自分で決めるならNOで入力します。

Pi-holeの固定IPアドレスを決める

この記事ではPi-holeの固定IPアドレスを例として192.168.0.33として進めます。

最後に確認が出て固定IPの設定は終わりです。今後はこの固定IPをDNSサーバとして指定することになります。

アップストリームDNSプロバイダー

リストから選びます。最初は一番上のGoogleにしておきました。Upstream DNS Providers 詳しくはPi-holeのガイドで調べて選んでください。

この後、いくつかの質問は全てYes、Continue、includeで進めていきます。

途中、FTLというプライバシーレベル云々という選択肢は、一番上の全てを表示するShow everythingで進めました。

最終画面

最後にIPアドレスと、WebUI画面を出すURL、そしてAdminのパスワードが表示されます。

ここでテキストコピーはできませんが、大丈夫、OKで抜けるとターミナルに戻ります。この最後の画面と同じ内容が表示されているので安心してください。

このターミナル画面でパスワードをコピーしておきましょう。

各種設定はWebUI画面

実際に設定や確認をするのはWebUI画面からです。決めた固定IPアドレスにadminを付けたURLをWebブラウザに入力します。

http://IPアドレス/admin (またはhttp://pi.hole/admin)
最初の画面ログイン前

左メニューのLoginから早速、ログインします。

ログイン後、ダッシュボードにはどれだけクエリーをスキップしたのか分かるようなグラフがあります。

ログイン後

最初は全て0の表示だと思います。

ここでは一旦このままにして、広告ブロックしたいデバイスのDNSを変更してから、再びこの画面を見ると数字が上がっていることが分かります。

DNSの設定

iPhoneなどのスマホや、PCのネットワーク設定を変更していきます。

例としてMacとiPhoneでご説明します。

iPhone

Wi-Fiの設定内にあるDNSを変更していきます。

iPhoneのDNSを自動から手動で設定する

自動から手動に帰ると、DNSサーバにIPアドレスが入力できるようになります。

先程Pi-holeで設定した固定IP(例では33)を入力して保存します。

これだけです。

注意点として、IPhoneだとIPアドレスのトラッキングを制限がONと共存ができないと思われます。OFFにしないとOFFにしろダイアログが出ます。

Mac

Macだと「ネットワークの環境設定」から詳細で次の画面に入り、DNSタブにPi-holeの固定IPアドレスを追加します。元々あったDNSサーバのアドレスは削除します。

以上です。

他のデバイスも同じようにDNSの構成やDNSサーバの設定などで変更してください。

プライマリDNSとセカンダリDNSとあった場合、どちらもPi-holeの固定IPアドレスを入力します。

YouTubeの広告は別の方法でブラックリストとして設定する

最初はブラックリストがデフォルトしか適用されません。YouTubeは特殊なので、消えないかと思います。

そこでgithubである更新されているドメインリストを取り込んでブラックリストに追加できるプログラムを利用します。

以下は、SSH接続でZero 2WのPi-holeで作業します。

githubからYouTubeの広告をブラックリストに入れるプログラムを入手します。

git clone https://github.com/kboghdady/youTube_ads_4_pi-hole.git

実行後、youTube_ads_4_pi-holeフォルダへ移動する。

cd youTube_ads_4_pi-hole

リポジトリの場所を変更する。repoDirの*ユーザー名*は自分のユーザー名に変えて実行してください。

repoDir='/*ユーザー名*/youTube_ads_4_pi-hole'

shファイルに実行権を与えます。(オプションa+xはすべてのユーザーに実行権を与える)

sudo chmod a+x youtube.sh

次に定期的にshファイルを実行するため、cronへ追記します。

sudo crontab -e 

毎時変更する場合(0 */1 * * *)は次のようにcronへ記述します。

0 */1 * * * sudo /home/*ユーザー名*/youTube_ads_4_pi-hole/youtube.sh >/dev/null

毎朝くらいでいいかなと思うので、毎朝4時(0 4 * * *)に設定しました。

0 4 * * * sudo /home/*ユーザー名*/youTube_ads_4_pi-hole/youtube.sh >/dev/null

cronの記述方法は別の記事を参考にしてください。

早速、一度スクリプトを実行しておきます。

sudo ./youtube.sh

時間がかかりますが、これでブラックリストに登録されます。

データベースからの削除方法

もしも不具合が起きたとき、データベースから今回のドメインを削除するコマンドも載せておきます。

/usr/bin/sqlite3 /etc/pihole/gravity.db "delete from domainlist where domain like '%googlevideo.com%' "

最後、エラー出た

  [✓] Reloading DNS lists
sudo: /usr/bin/sqlite3: command not found
(htmlのソース〜が続く。。。)

どうやら、www-dattaが読み込みになっているらしいので、グループpiholeに追加した。

sudo usermod -a -G pihole www-data

YouTubeも視聴してみるが・・・バナーしか消えない

ブラックリストに登録できたので、Piholeのメニューからブラックリストを覗くとかなり増えててビックリ。

11299エントリー

早速、観てみましょう。

広告の枠だけ見える。

動画開始や途中に挿入される広告は表示されてしまいます。今回の手法と、デフォルトのブラックリストではこれが全てでした。

YouTubeだけはWebブラウザBraveなどを使う方が確実にブロックできます。

デバイス毎の設定でお手軽

今回の方法だと、ルーターの設定は一切触りません。あくまでもネットに繋げるデバイス毎に、DNSサーバをPi-holeに指定してブロックさせています。

ルーターのDHCP機能もそのままで、複雑なネットワークの設定もなく、ある程度の広告はブロックできました。

それにWebブラウザは選びません。SafariでもChromeでも大丈夫です。

Pi-holeのキモは、ブラックリストに依ります。ネットでたくさん見つかります。

DNSサーバの設定ができるデバイスであれば、一定の効果があります。逆にルーターの設定を変えられれば、大元から遮断できますから、逆にデバイス毎の設定は必要ありません。

ルーターの場合、DHCP機能をどうするかといったややこしい設定が出てきます。先ずはデバイス毎にPi-holeを試してみてください。

Rレッド

Zero2では勿体なかったかなー

Pi-hole:https://pi-hole.net

この場を借りてお礼を申し上げます。奢ってくれた方へ、ありがとうございます!
\ 励みになります♪ /

https://www.buymeacoffee.com/raspida
広告の代わりにコーヒーを奢ってください!
シェアする
  • URLをコピーしました!

この記事のコメント(承認後に公開)

コメントする

コメントは日本語で入力してください。名前は表示されます。メールアドレスは表示されません。

CAPTCHA

この記事の主な流れ