Tech Note Plus

PC から Azure まで幅広い伝道を目指してます

OpenWrt で豆腐フィルタを使って広告をブロックする

この記事では OpenWrt の Adblock に関する設定を記載しています。既に OpenWrt を用いたインターネット接続は以下の記事にて完了しています。 cube309b.hatenablog.com

Adblock に求める要件

やりたいこと

広告フィルタです。説明は・・・不要ですね。インターネットを閲覧している際に発生する広告をブロックしたい。

OpenWrt における Adblock の実装方法

OpenWrt では追加のモジュールを導入して設定をすることで、Adblock を構成できます。

Adblock の設定方法

方式概要

Adblock を設定する際に必要なのは以下の 1 つのファイルとなります。

  1. /etc/adblock/adblock.sources.tofu.gz:豆腐フィルタが追加されたブロックリスト提供元ファイル

Adblock 及び関連モジュール
  1. [システム]-[ソフトウェア] フィルターadblock と入力し、インストール を押します。
    ※ 一度 OS を再起動してしまうとパッケージリストの取り直しが必要なので、その場合は「リストを更新..」を実施してください。
  2. 依存関係の確認が行われるので インストール を押します。
  3. パッケージが読み込まれるので、閉じる を押します。
  4. 1-3 を繰り返します。パッケージ名は luci-app-adblock です。
  5. 1-3 を繰り返します。パッケージ名は luci-i18n-adblock-ja です。
  6. 1-3 を繰り返します。パッケージ名は tcpdump-mini です。このモジュールは直接広告ブロックに使われるものではないですが、意図せずブロックしてしまったドメインを解除するホワイトリスト運用の際に必要になります。
  7. ログアウトすると、画面上部に [サービス]-[Adblock] が出現します。
/etc/adblock/adblock.sources.tofu.gz の記述
  1. SSH で OpenWrt に接続し、以下のコマンドを実行します。基になる /etc/adblock/adblock.sources.gz ファイルがモジュールのアップデートで上書き消去されるため、コピーして解凍してから使います。

    cp /etc/adblock/adblock.sources.gz /etc/adblock/adblock.sources.tofu.gz
    gunzip /etc/adblock/adblock.sources.tofu.gz
  2. vi エディタなどで /etc/adblock/adblock.sources.tofu ファイルに以下を追記します。

            "tofu": {
                    "url": "https://raw.githubusercontent.com/tofukko/filter/master/Adblock_Plus_list.txt",
                    "rule": "BEGIN{FS=\"[|^]\"}/^\\|\\|([[:alnum:]_-]{1,63}\\.)+[[:alpha:]]+\\^(\\$third-party)?$/{print tolower($3)}",
                    "size": "S",
                    "focus": "ads_analysis",
                    "descurl": "https://github.com/tofukko/filter"
            },
    コメント
    rule サンプルの日本語フィルタのルールに合わせてみました
    size 行数が 7000 未満でドメイン数はさらに少ないので S にしました ※

    ※ サイズに関しては、本記事最下部のリンクより確認可能です。

  3. 以下のコマンドを実行します。圧縮して /etc/adblock/adblock.sources.tofu.gz にしています。

    gzip /etc/adblock/adblock.sources.tofu
Adblock 設定
  1. SSH で OpenWrt に接続し、以下のコマンドを実行します。カスタムファイルを読み込む設定にしています。

    uci set adblock.global.adb_srcarc="/etc/adblock/adblock.sources.tofu.gz"
    uci commit adblock
  2. [サービス]-[Adblock]-[設定]-[ブロックリスト提供元] ソースtohu を追加選択し、保存&適用を押します。

  3. 同じく [サービス]-[Adblock] 再起動を押します。statusenabled になっていることを確認します。

Adblock の運用方法

ホワイトリスト運用

広告ブロックを設定すると意図せず動作しないサイトが発生することになります。そんな時はいずれのドメインがブロックされたのかを確認し、ホワイトリストに設定する運用が必要になります。

  1. [サービス]-[Adblock]-[設定]-[一般設定] DNS レポートをチェックし、保存&適用を押します。もちろんこれは初回のみです。

  2. [サービス]-[Adblock]-[DNS レポート] リフレッシュしながら、対象のドメインを特定します。

  3. [サービス]-[Adblock]-[ホワイトリストの編集] ブロックされて困るドメインを入力し、保存を押します。

OS を再起動すると Adblock が動かない?

サービス起動に時間がかかる関係なのか、OS を再起動すると広告ブロックが動きません。起動後に手動でリロードなりサービス再起動なりをすれば動くのですが。。。きれいなやり方ではないのですが、Try&Error で自動起動に成功する秒数を計測して rc.local の中でサービスをリロードすることにしました。

[システム]-[スタートアップ]-[ローカルスタートアップ] 以下を設定し、保存を押します。

設定のための参考サイト

設定に当たっては、以下の情報を参考にしました。

github.com

OpenWrt の Adblock 設定を終えて

こうして OpenWrt を使って豆腐フィルタでの広告ブロックが可能になりました。


Note
・ 当ブログは個人主催であり、ブログ中のすべての情報は個人的な観点となります。
・ 情報については正確な内容となるよう努めますが、完全性や正確性、有用性、安全性、最新性について一切保証できかねます。