Raspberry Pi で広告ブロック

概要

f:id:kslugger:20200420153309p:plain

稼働中の管理画面

流れ

  1. Raspberry Pi の準備
  2. ioc2rpz のサイトにアカウントを作成
  3. ioc2rpz のサイトで設定ファイルを作成
  4. Raspberry Pi で上記設定ファイルの入手とインストールを行うスクリプトを実行

チュートリアルビデオ(公式)

youtu.be

Raspberry Pi の準備

  • インターネットに接続した Raspberry Pi
  • 今のところ Raspbian のみ対応

ioc2rpz でのアカウント作成とログイン(5分)

  1. ioc2rpz でアカウントを作成
  2. 登録確認のメールが来るので承諾、サインイン

RpiDNS の設定(5分)

  1. ioc2rpz にサインイン、RpiDNS β を選択

f:id:kslugger:20200414153440p:plain

rpiDNS を選択
  1. + ボタンをクリック、設定画面に移動
  2. RpiDNS の名前(任意)を入力
  3. 使用する Raspberry Pi のハードウェアを選択

f:id:kslugger:20200414154115p:plain

ハードウェア選択
  1. RpiDNS が使用する DNS ソフトウェアを選択(現時点では BIND のみ)

f:id:kslugger:20200414154511p:plain

DNSサーバの選択
  1. 有効にする RPZ を選択(指定したハードウェアのメモリを超過しそうな場合は警告されるので、上限に収まるように取捨選択)
  2. それぞれの RPZ ごとにアクションを設定

f:id:kslugger:20200414154853p:plain

RPZ ごとにアクションを定義
  1. Add ボタンで完了

RpiDNSのインストール(10分)

  1. 完成した RpiDNS の設定画面からリンクアイコンをクリックし、cURL のリンクをコピー

f:id:kslugger:20200414160143p:plain

cURL リンクのコピー
  1. Raspberry PiSSH でログインし、コピーしたコマンドを貼り付け
$ curl 'https://ioc2rpz.net/get_rpidns_config.php?req=download&uuid=<略>' -o ioc2rpz_community_install.sh
  1. 作成されたファイルを実行
$ sudo bash ioc2rpz_community_install.sh
  1. 正常に終了すれば、最後に管理画面の URL とパスワードが出力されるので、メモ
#########
RpiDNS was installed
#########
Management console: https://<つけた名前>.rpidns.ioc2rpz.local/rpi_admin/
Username: rpiadmin
Password: <略>

DNS サーバの切り替えと動作確認(5分)

  1. 端末の DNS サーバの設定を RpiDNS の IP アドレスに切り替え(あるいは DHCP サーバのオプションで DNS サーバを変更)
  2. ブラウザから上記の Management Console に記載の URL に接続(ユーザ名とパスワードもコピペ)
  3. いくつかのサイトにアクセス、Dashboard でブロックされたホストのログを確認

f:id:kslugger:20200420144707j:plain

ブロック警告画面(デフォルト)

その他

  • 見れなくなったサイトやアプリ
- ヤフー(日本)のブラウジング
- iphone アプリではヤフー(日本)関連、その他、乗換案内や駅すぱあとなど
- ブロックしているのは notracking.ioc2rpz "No more ads, tracking and other virtual garbage"
- 回避のためホワイトリストに入れることはできるが、どのドメインを許可すればいいのかログから判断するのが面倒
  • 管理コンソールや警告画面の証明書エラーを回避
- RpiDNS のルート証明書を取得( Admin > Downloads からルート証明書をダウンロード)
- 各端末にインストール
  • 管理画面のログの時刻を日本時刻に変更
OSのタイムゾーンが日本の場合

$ timedatectl | grep zone
Time zone: Asia/Tokyo (JST, +0900)
$ cd /opt/rpidns/www/rpi_admin/
$ sudo cp rpidata.php rpidata.php.bak
$ sudo sh -c 'sed -e "s/%Y-%m-%dT%H:%M:%SZ/%Y-%m-%dT%H:%M:%S/g" -e "s/'utc'/'localtime'/g" rpidata.php > rpidata.php.new'
$ sudo ln -sf rpidata.php.new rpidata.php
$ sudo systemctl restart php7.3-fpm.service
  • 管理画面の表示を MAC アドレスからわかり易い名前に変更
Admin > Assets で MAC アドレスごとに NAME を設定

リソース

https://github.com/Homas/ioc2rpz/
https://ioc2rpz.net/
https://www.raspberrypi.org/