2023年5月13日土曜日

Raspberry Pi 3 Model A+ で広告ブロックサーバーを作る

Raspberry Pi 3 Model A+ で広告ブロックサーバーを構築したのでメモを残します。この記事は自分の備忘録として記しています。

今回は Raspberry Pi 3 Model A+ 4GB 512MB で、AdGuard HomeSquid を使用して広告ブロックサーバーを構築します。



広告ブロックを使用したい場合は、それぞれのクライアントのプロキシー設定で Proxy サーバーのIPアドレスとポートを指定します。

準備するもの

  • Raspberry Pi 3 Model A+ 4GB 512MB
  • USB接続のSSDまたはHDD(今回は500GBのHDDを使用)
  • SD Card 8GB以上(今回は32GBを使用)
  • 作業用Windows PC
  • Raspberry Pi Imager



OSの準備


OSのインストールは二段階で行います。最初に作業用のSD Cardにインストールし、その後本稼働用のUSBディスクへインストールします。


インストールメディアの作成


Raspberry Pi Imager を使用し、Raspberry Pi OS Lite 32Bit版を SD CARD(32GB) に書き込む。 ここでホスト名、SSHの設定、ユーザーIDとパスワードの設定、WiFiのSSIDとパスワード、ロケールを設定します。



同様の手順でUSBディスクにもOSを書き込みます。


OSの起動


作成した SD Card を Raspberri Pi に挿入し電源を投入します。
無線LANルータの設定画面やログを参照し、 Raspberry Pi に割り当てられたIPアドレスを調べ、ターミナルソフトを使用しSSHで接続します。


Bootデバイスの変更


/boot/config.txt に以下の行を追加する。

program_usb_boot_mode=1

追加が完了したらリブートします。

$sudo reboot now

立ち上がったらブート媒体の確認を行います。

$vcgencmd otp_dump | grep 17:

以下のように表示されることを確認します。

17:3020000a

これでUSBディスクからBoot出来るようになります。


電源オフ


シャットダウンします。Raspberry Pi は自動で電源がオフにならないため、Raspberry Pi のLED(緑)が消灯するまで待ちます。消灯確認後電源をオフします。

$sudo shutdown -h now


USBディスクからの起動


SD Card を抜き取り、USBディスクを接続し電源を投入します。


初期設定


システムのアップデート


$sudo apt update
$sudo apt upgrade


rootのパスワード設定



$sudo passwd root

mcのインストール


$sudo apt install mc


IPアドレスの固定化


/etc/dhcpcd.conf に以下を追加

interface wlan0
static ip_address=192.168.0.102/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1


再起動


ここでIPアドレスの変更を確認するために、再起動します。

$sudo reboot now


CPU最大周波数の制限


Raspberry Pi 3 Model A+ではアイドル時は600Mhzで動作している。ビジー時は1.5GHzまで上昇するようです。今回はCPUパワーをそれほど必要としないため、CPUの最大周波数を 800MHz に制限することにしました。これでヒートシンクやファンなしで運用できそうです。

/boot/config.txt に以下を追加します。

arm_freq=800

これで最大周波数が800MHzに押さえられます。設定を有効にするためリブートします。
$vcgencmd measure_clock arm


CPUのクロックと温度の確認



このコマンドでRaspberry Pi のCPU4コアすべてが100%で稼働し続けます。

$openssl speed -multi 4

以下のコマンドでCPUの稼働周波数と温度を確認します。

$vcgencmd measure_clock arm
$vcgencmd measure_temp

80℃以下であれば問題ないと思います。



NTPサーバの設定


/etc/systemd/timesyncd.conf に以下の設定を追加します。

[Time]
NTP=ntp1.plala.or.jp
FallbackNTP=ntp1.jst.mfeed.ad.jp ntp2.jst.mfeed.ad.jp ntp3.jst.mfeed.ad.jp
NPTサーバーは使用しているプロバイダーの指定に従ってください。
NTPサービスを再起動し変更を反映します。

$ sudo systemctl restart systemd-timesyncd


rootログイン時のパスワード入力の強制


デフォルトでは sudo 時にパスワードを聞いてこない。パスワード入力を必須にするため以下のファイルの行に#を付けコメントにします。

/etc/sudoers.d/010_pi-nopasswd
変更前:
synctam ALL=(ALL) NOPASSWD: ALL

変更後:
#synctam ALL=(ALL) NOPASSWD: ALL



AdGuard Home の導入



AdGuardユーザーの登録


$sudo adduser adpi

videoグループへの参加(vcgencmd の実行に必要)。

$sudo usermod -aG video adpi


AdGuardのインストールのために管理者に切り替えます。

$sudo su -

#cd /home/adpi
#curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v

#exit

インストールが完了したら管理者から抜けます。


AdGuard Homeのセットアップ


WindowsPCのブラウザーから以下のURLに接続します。

http://192.168.0.2:3000/install.html


DNSサーバ
待ち受けインターフェイス
wlan0 - 192.168.0.2 ポート 53

管理者ID
管理者用のユーザーIDとパスワードを指定します。

画面の指示に従い設定を完了します。

AdGuard Homeの管理ウェブインターフェイスは、次のアドレスで利用可能になります。

http://192.168.0.2:8088
正常に稼働していることを確認します。


AdGuardのフィルタ設定


AdGuard Homeの管理ウェブインターフェイスを開き、[フィルタ] の [DNSブロックリスト] で [ブロックリストに追加する] を開き [リストから選択] から以下を有効にする。
  • AdGuard DNS filter
  • AdAway Default Blocklist
  • Dan Pollock's List
  • OISD Blocklist Small
  • Peter Lowe's Blocklist
  • Dandelion Sprout's Game Console Adblock List
  • The Big List of Hacked Malware Web Sites
  • Perflyst and Dandelion Sprout's Smart-TV Blocklist



squid


インストール


$sudo apt install squid


/etc/squid/squid.conf

squidの設定ファイルに以下を設定する。


squid を再起動し変更を反映します。

$sudo systemctl restart squid

squidのログは以下で参照できます。

$sudo tail -f /var/log/squid/access.log


[参考]ユーザーsquid(-u)に関するログを継続的(-f)に表示します。

$journalctl -fu squid


AdGuardの利用


iPhone や Amazon Fire などのタブレットから AdGuard を使用する場合は、プロキシーサーバーの設定を開き、IPアドレスとポートを指定します。
この例では、IPアドレスは192.168.0.2、ポートは 3128 です。

今のところ問題なく動作していますが、この方法では Youtube の広告を非表示にすることは出来ませんでした。

では・・・

0 件のコメント:

コメントを投稿

Raspberry Pi 3 Model A+ で広告ブロックサーバーを作る(その2)

前回作成した 広告ブロックサーバー の稼働状況をAmbientにアップロードするスクリプトを書いたのでメモを残しておきます。