目次
仕事で Ubuntu の multipass を使ってたところ、multipass find で出るイメージ一覧に adguard-home というのがあり気になって調べた。どうやら AdGuard Home という広告ブロック用のソフトウェアらしい。
$> multipass find Image Aliases Version Description snapcraft:core18 20201111 Snapcraft builder for Core 18 snapcraft:core20 20201111 Snapcraft builder for Core 20 core core16 20200818 Ubuntu Core 16 core18 20200812 Ubuntu Core 18 16.04 xenial 20210128 Ubuntu 16.04 LTS 18.04 bionic 20210129 Ubuntu 18.04 LTS 20.04 focal,lts 20210223 Ubuntu 20.04 LTS 20.10 groovy 20210209 Ubuntu 20.10 appliance:adguard-home 20200812 Ubuntu AdGuard Home Appliance <- これ appliance:mosquitto 20200812 Ubuntu Mosquitto Appliance appliance:nextcloud 20200812 Ubuntu Nextcloud Appliance appliance:openhab 20200812 Ubuntu openHAB Home Appliance appliance:plexmediaserver 20200812 Ubuntu Plex Media Server Appliance
Web広告については質のよいものは受容できるのだけど、本当に不快なだけのどうしようもない広告もあり難儀していたので導入してみることにした。
AdGuard Home のインストール
AdGuard Home は DNS フィルタリング型の広告ブロッカーで、DNS サーバーとして動作する。 常時稼働させる類のソフトとウェアなので、例によっていつもの NAS サーバーにいれることにした。Samba ぐらいしか動かしておらず遊んでいるのでちょうど良いだろう。NAS は FreeBSD が動いているが、Adguard Home は FreeBSD 版のバイナリーも配布している。インストール方法はここに書いてある。
サービスとしてバックグラウンドで動作させるためには以下のコマンドを実行する必要がある。
# ./AdguardHome -s install
これで FreeBSD の場合は /usr/local/etc/rc.d/AdGuardHome にサービス起動スクリプトが作成される。ちなみに私の環境では作成されたスクリプトでは /root/AdGuardHome という存在しないファイルを起動しようとしてたので以下のように手直しをした。
#!/bin/sh
# PROVIDE: AdGuardHome
# REQUIRE: networking
# KEYWORD: shutdown
. /etc/rc.subr
name="AdGuardHome"
AdGuardHome_env="IS_DAEMON=1"
AdGuardHome_user="root"
pidfile="/var/run/${name}.pid"
command="/usr/sbin/daemon"
# 正しい AdGuardHome のパスを指定
# ついでに作業ディレクトリの位置も指定 (-w)
command_args="-P ${pidfile} -f -r /mnt/system/AdGuardHome/AdGuardHome -w /mnt/system/AdGuardHome"
run_rc_command "$1"
正しく設置できていれば、以下のコマンドで起動できるはず。
# service AdGuardHome start
ルーターの DNS サーバー設定を AdGuard Home に変更
DNS サーバーなので、Windows ならネットワークアダプターの TCP/IP のプロパティ -> 優先 DNS サーバーに AdGuard Home をインストールしたサーバーの IP アドレスを指定すればよい。
ただスマホやタブレットに毎度設定するのも面倒なので、ルーターが DHCP で配布する DNS サーバーの設定を変えた方が楽だと思う。なお AdGuard Home 自身にも DHCP サーバー機能があるが今回は使わないことにした。
広告ブロックの効果を確認
とりあえず ads.google.com を nslookup してみたところ、フィルターに引っかかったホスト名はデフォルトで 0.0.0.0 が返ってくる模様。
C:\>nslookup ads.google.com
サーバー: UnKnown
Address: 192.168.100.10
権限のない回答:
名前: ads.google.com
Address: 0.0.0.0
もちろん 0.0.0.0 に通信しようとしてもできない。本来の IP アドレスの代わりに 0.0.0.0 を返すことで広告のバナー画像などを無効化しているわけである。
AdGuard Home のダッシュボード画面にはブロック率などの統計も表示されるので効果がわかりやすい。使い始めたばかりなので今後統計データは変動していくだろうが、現状では6~7回に1回は広告ネットワークにアクセスしようとしてブロックしているようだ。

