AdGuard Homeを使ったRaspberryPiの広告ブロック

AdGuard Homeは、Raspberry Piを使用してネットワーク上に広告ブロックDNSサーバを立てられるソフトウエアです。(AdGuard公式英語ブログでのAdGuard Homeの紹介)
一度設定すれば同一ネットワーク内の全ての端末で、ドメイン単位で広告をブロックできます。私自身、固定回線のネットワーク環境とモバイルルータ環境の両方で試していますが、問題なく動作しています。

AdGuard Homeの動作について

Raspberry Pi、Linux、Macで動作する DNSサーバソフトです。ドメイン単位でブロックしますので、280blocker.netで配布しているドメインファイルがそのまま使用できます。
手順としてはRaspberry Piにインストールして、ルータのDHCP設定でDNSをRaspberry Piのアドレスに指定するだけです。
ただしドメインでのブロックしかできませんのでどうしても広告は一部残ります。

AndroidではAdguardを使用すれば不要です。iOS環境ではSafari以外のアプリの広告ブロックはどれも一長一短がありますのでそれらのアプリの代わりに使用するのも良いと思います。

多数の端末が動作している環境では個別の端末への設定が不要ですので、使用をおすすめします。

AdGuard HomeのRaspberry Piへのインストール

公式サイトの手順:Raspberry Pi · AdguardTeam/AdGuardHome Wiki · GitHub
まずRaspberry Piをインストールして、IPアドレス(プライベートアドレス)を固定しましょう。

次に、公式サイトのInstalling AdGuard Home on Piに沿ってインストールすれば動作します。インストール自体はそれほど難しくないかと思います。
(2018/12/25追記)自動起動に失敗することが稀にあるようで、AdguardHomeの起動を遅らせると安定しました。
/etc/systemd/system/adguard-home.serviceを編集して、WorkingDirectoryと、ExecStartの行の間に「ExecStartPre=/bin/sleep 30」を入れましょう。

(2018/11/28追記)v0.9では一部不具合がありましたが、v.91では改善していますので一部削除しています。V0.91では攻撃に対する対策が入っていますので必ずアップデートしましょう。

他人もアクセスするネットワークで使用する場合は、webのインターフェースのパスワードの設定(password-protect web interface)をしましょう。webのインターフェースでは様々な設定を変更できますしアクセス先もある程度わかっていまいます。

webインターフェースの設定

デフォルトでも良いかと思います。
個人的にはFiltersの設定でデフォルトフィルタを外して、AddFilterで「280domain」「https://280blocker.net/files/280blocker_domain.txt」を入力して使用しています。
280blockerのドメインファイルは特定のサイトで不具合が起こるものは外していますので、不具合は少ないです。ただ不具合対策のためにブロックしていない広告ドメインもあります。決まったアプリやサイトしか使用しない場合は他のリストを使って見るもの良いかと思います。

ルータの設定

ルータでDNSの設定ができる場合は、プリマリDNSにラズパイのアドレス、セカンダリDNSに「8.8.8.8」を入れます。セカンダリDNSはAdGuardHomeが動作していない時の予備のDNSとして使われます。google DNSのアドレスを書きましたが、プロバイダのDNSや「1.1.1.1」やルータのアドレスなど好きなものにして下さい。

モバイル環境でのAdGuard Homeの使用方法

  • DNSサーバが指定できるモバイルルータ:FS030wや303ZT/304ZT/305ZTなど
  • 低消費電力のRaspberry Pi:Zero W / Zero WH
  • 低電流でも電源供給されるモバイルバッテリ:cheero canvas 3200mAh
  • 短いmicro USBケーブル、ケース

これで動作していますが快適です。重さは125g(モバイルルータを除く)でした。pi Zeroは5V 120mA程度の電力消費ですので、cheero canvasで12時間以上の使用できます。

モバイルルータの注意事項として、DNSサーバを変更できないものが多いです。FS030wや303ZT/304ZT/305ZT、W04/W05はDNSを変更できるようです。mr05ln、MF855、601HW/602HWなどはDNSを設定できないようです。Android端末でのテザリングも変更できないようです。ルータでDNSを指定できない場合は、端末の設定でDNSを指定するのが最も楽です。他の方法として、ルータのDHCPを切って、Raspberry PiでDHCPサーバを立てる方法があります。
使用するモバイルバッテリーの注意事項として、ある程度の電流以下になると自動的にオフになるものが多いため、上記の様な低電流でも切れないバッテリーを使用する必要があります。

運用上の注意としては、モバイルルータが起動完了してからRaspberry Piの電源を入れましょう。

私のiPhoneでの運用について

iPhoneはAdGuard Homeとコンテンツブロッカー280を使用しています。iphoneのVPNを利用した広告ブロックはどのアプリもなんらかの不具合があります。実用上は問題ないかと思いますが、様々な検証を行うときには問題の切り分けが難しいため、安定してブロックしてくれるAdGuard Homeを使っています。
(2018/11/28追記)持ち運ぶものを減らすために、VPSにインストールしたAdguard Homeを利用することにしました。

Pi-Holeでの広告ブロックについて

AdGuard Homeによく似たアプリとしてPi-Holeがあります。Pi-HoleのメリットはDHCPサーバが内蔵されていることと動作実績が多いことがあるかと思います。
ただし、Pi-Holeでの広告ブロックはサブドメインをブロックしてくれませんのでhost形式のファイルが必要になります。280blocker.netで作成しているファイルはドメイン形式ですので残念ながらPi-holeでの使用は不適当です。