Unboundで構築したDNSサーバで自宅LAN丸ごと広告ブロック

公開 | 更新 

自宅に導入したAlpine Linux仮想マシンで稼働する、 Unbound DNS サーバに DNS ベースの 広告ブロック を設定して、ネットワーク内の全てのデバイスへ、 広告ブロック を提供できるようにします。

Alpine Linux に導入したUnbound

以前、Alpine Linux 3.17.1仮想マシンに構築した、UnboundによるDNSフルサービスリゾルバは、

その後、Celeron J4125ミニPCで構築した、VMware ESXi 8.0ホストごと自宅へ導入、運用開始しています。

 

unbound.confの記述

UnboundにおけるDNSベースの広告ブロックは、 その内容を記したインクルードファイルを作成し、それを unbound.conf へ以下のようにして組み込むだけ。

肝となる広告ブロック手法について、今回は以下の2種類の方法を試してみます。

 

1) Steve Blackさんのブロックリスト

Unboundにおいて、任意のサイトの名前解決をブロックする単純な手段は、設定ファイルの中でドメインを名指しで列記して REFUSE 扱いとするか、ダミーIPアドレス 0.0.0.0 を記述してしまうものです。

このときワイルカードを使えないので、サブドメインがある場合は面倒でもその全てを列記する必要があります。

ネタ元となる広告サイトリストでポピュラーなのは、以前記事にしたAndroid向けの広告ブロックアプリAdAwayでも参照されている、Steve Blockさんのリスト

図1.AdAway hosts取得先

図1.AdAway hosts取得先

彼のGitHubページで得られるホスト一覧を元に、上記のようなUnboundが解釈できる文型へ変換するスクリプトは次の通りです。

これはAlpine LinuxのWikiページの解説を参考にしつつも、インクルードする設定ファイルはroot権限の必要があるため、 >> ではなく sudo tee で出力しています。

できあがったのは、18万行、8MBを超える大きなブロックリストファイルでした。

このままUnboundに読み込ませて適用する前に、日頃のブログ管理で必要な次のサイトをコメントアウトして、ブロック除外としました。

  • A8.Net管理ページ
  • ブログ村管理ページ
  • Google Analytics管理サイト
  • Amazonアフィリエイト

設定の編集を終えたら、 unbound-control コマンドで再読込を促します。

8MBを超える設定ファイルもすんなり読み込んでもらえました。もちろんDNSサービスも広告ブロックも、滞りなくこなしてくれます。

 

ブロック除外設定を別インクルードに

頻繁に更新される広告リストを元にスクリプトで生成した、広告ブロック設定ファイル adblock.conf を更新したいと思った時に弊害となるのが、先ほどコメントアウトしたブロック除外サイトです。

更新の度に一つ一つ探してコメントアウトするわけにもいかないので、ブロック除外対象だけを定義した次のインクルードを作ってみました。

これを unbound.conf の中で広告ブロック設定よりも後方でインクルードします。

これで今後、広告ブロック設定を自動更新するようなバッチ処理を設定しても、ブロック除外サイトへのアクセスが阻害されることはないでしょう。

 

2) Pete Loweさんのブロックリスト

Unboundにおける広告ブロックのもう1つの手法が、 local-zone redirectlocal-data を使ったもので、その利点は上述のようなサブドメインがいくつもあるサイトも、次の通りまとめて処理できることです。

広告サイトの情報を集めたPeter Loweさんのこちらのサイトでは、Unboundのこの手法に則った書式で、リストを直接ダウンロードすることが可能です。

ダウンロード時にURIのクエリ文字列の連結が誤って解釈されてしまうので、必ずクォートで囲むようにします(さもないとhtml形式で出力されてしまう)。

得られた設定ファイルをインクルードする手順は同じです。

実際に使ってみた感じでは、こちらのリストの方がやや「緩い」のかな、と言う気がしました。

 

効果のほどは

自宅LANのDNSサーバへDNSベースの広告ブロックの機能を追加することにより、ネットワーク内のPCやスマートフォンが、特に何もせずとも等しくその恩恵を受けることができるのは、思っていた以上に快適なことです。

図2.PCブラウザ5chの広告ブロック

図2.PCブラウザ5chの広告ブロック

図3.Android MX Playerの広告ブロック

図3.Android MX Playerの広告ブロック

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA