概要
広告ブロックを使用したい。
ブラウザ型 vs DNS型
広告ブロッカーにはいろいろな種類があるのですが、主にブラウザ型とDNS型の二種類に分けられます。
ブラウザ型
ブラウザ型はブラウザの拡張機能として導入するもので、開くページのHTMLを解析して広告と判断できるものをブロックします。
この方式は、理論上ほぼすべての広告をブロックできますが、拡張機能を導入できる機器(主にPC用ブラウザ)のみでしか使用できないというデメリットがあります。
そのため、スマートフォンでは利用できません。(広告ブロッカー搭載ブラウザを使えば別ですがアプリ内広告などは、やはり対象外)
DNS型
一方、DNS型はブラウザが要求するDNS要求に対し、広告サイトのドメインの名前解決をしないことで広告を非表示にする機能です。具体的には「0.0.0.0」が返ってきます。
この方式は、ブロックできない広告も多く低性能ではありますが、どのような機器でも使用できることが最大のメリットで、ルーターのDNSを変更すれば、家族全てのスマートフォンの広告ブロック化ができます。
導入すると、このようにDNS解決されます。
> doubleclick.com
サーバー: UnKnown
Address: 192.168.0.1
権限のない回答:
名前: doubleclick.com
Addresses: ::
0.0.0.0
>
AdGuard vs PiHole
DNS型のOSSとしてはいくつかあります。
有名なものは「AdGuard Home」と「PiHole」があります。
AdGuard Home は高機能なアプリケーションとして作られており、
PiHole は Raspberry Pi で動作するように低スペックでも動作するように作られているようです。
このうち、高機能な AdGurd Home を導入することとしました。
導入手順
※ ポートを開いておく必要あり
VPSや仮想マシンを用意
VPS や仮想マシン等で Linux の動くサーバーを用意します。
1Core / 1GB などの低スペックで十分動作しますが、後述するDoTを設定する場合や多人数で使用する場合は少しスペックを上げておいてよいと思います。特にCPU
インストールShellを実行
公式からインストール用のシェルスクリプトが用意されているため、これを実行するだけでインストールが完了します。
curl -s -S -L https://raw.githubusercontent.com/AdguardTeam/AdGuardHome/master/scripts/install.sh | sh -s -- -v
以下のURLを開く
インストール完了後はブラウザを開いて設定を進めるだけです。
http://[IPアドレス]:3000/
設定完了後ログイン
設定後は以下のような画面が表示されます。

あとは、DNSの53ポートを開けて、クライアント(ルーター)のDNSを AdGuard HomeのIPに変更すれば使用できます。
めちゃくちゃ簡単です。
AdGuard Homeの設定
フィルター
デフォルトだと日本語サイトの広告に弱いため、追加でフィルターを追加しておきます。
以下のサイトが素晴らしくまとまっているので、こちらを参考にします。
最低限、豆腐フィルタは入れておいた方が良いです。
フィルタ > DNSブロックリスト

あまり複数のリストを使用しない方が良いそうですが、用意したVMのスペックも高いので一旦いろいろと入れてみました。
DoT
Android v12以降はWi-fi外で野良DNSを指定できなくなってしまったため、暗号化されたDNSサービスを使用する必要があります。「プライベートDNSプロバイダーのホスト名」がそれです。

このプロトコルには様々なものがあるのですが、AdGurd Home では DoT (DNS over TLS)と DoH (DNS over HTTPS)に対応しています。
HTTPS は管理画面にアクセスされる懸念もあるため、DoTだけ設定します。
DNSを設定
DoTはドメイン名で名前解決を行うため、DNSを登録します。
キャプチャはCloudflareの例ですが、各自のDNSサービスに合わせてください。

DoTを有効化
設定 > 暗号化設定 > 暗号化を有効にする にチェック
それ以外はデフォルトで良いです

certbotをインストール
コンソールまたはSSHにログインして以下のコマンドを実行していきます。
# rootに移行
sudo su
# snapをインストール
dnf install epel-release
yum install snapd -y
systemctl enable --now snapd.socket
ln -s /var/lib/snapd/snap /snap
# certbotをインストール
snap install --classic certbot
ln -s /snap/bin/certbot /usr/bin/certbot
証明書の取得
certbotをインストール後、証明書を取得します。
# 証明書を取得
certbot certonly --manual --preferred-challenges=dns --preferred-chain="ISRG Root X1"
ドメイン名入力のところでドメインを入力すると、DNSを追加してacme-challengeをするように言われます。

これをDNSに設定し、しばらく待ってから、元のコンソール画面でEnterを押すと認証が走り認証成功となります。

証明書をAdgurd Homeに設定
成功すると次のような画面が表示されるので、

各項目のパスをAdgurd Homeの方に設定します。

これで証明書の設定は完了です
ポートを開放
DoTはインターネット側からアクセスするため、使用する 853/TCP ポートを開放します。
各自のルーターに合わせてください。

クライアント側の設定
自宅のルーター
自宅のルーターのDNSを変更します。
プライマリDNSにAdGuard HomeのサーバーIPアドレス、
セカンダリDNSはプロバイダのものを使用します。
※ サーバーは自宅内にある想定です。グローバルに置く場合は53ポートを開放してグローバルIPアドレスを指定します。

スマホの設定
スマホ側にDNSの設定を行います。

動作確認
適当に広告の多いサイトなどにアクセスします。
この辺とか
https://gigazine.net
結果、ダッシュボードにDNSアクセスがあり、広告の多いサイトの広告が消えていれば動作確認完了です。

ゴミ掃除
最後にゴミ掃除として、DNSのacme-challengeを削除しておきます。
以上。
参考

コメント