BananaBlocker: ESP32で動作するネットワーク広告ブロッカー

DevOps

概要

BananaBlockerは、ESP32やESP8266マイクロコントローラ上で動作し、ネットワーク全体の広告やトラッカーをDNSレベルでブロックするオープンソースプロジェクトです。Pi-holeのようにDNSリクエストを監視し、既知の広告サーバーへのアクセスを遮断。低消費電力かつ低価格なハードウェアで動作するため、自宅や小規模オフィスのネットワークに最適です。セットアップはキャプティブポータルによるWiFi接続設定や、直感的に操作できるウェブ管理パネルを備えており、ユーザーフレンドリーな設計が特徴です。

GitHub

リポジトリの統計情報

  • スター数: 6
  • フォーク数: 0
  • ウォッチャー数: 6
  • コミット数: 4
  • ファイル数: 3
  • メインの言語: C++

主な特徴

  • DNSベースの広告・トラッカー遮断機能をESP32上で実現
  • キャプティブポータルによる簡単なWiFi初期設定
  • ブロック状況を可視化する統計ダッシュボード搭載
  • Webブラウザから操作可能な管理パネルで、ブロックリストのカスタマイズが可能

技術的なポイント

BananaBlockerは、ESP32/ESP8266マイクロコントローラのネットワーク機能を活用し、DNSリクエストの監視とフィルタリングを行います。Pi-holeのようなDNSサーバーとして動作し、広告やトラッカーのドメイン名を含むDNSクエリを検出すると、その応答をブロックやリダイレクトに置き換え、クライアントが広告サーバーに接続できないようにします。これにより、ネットワークに接続されたすべての端末で広告を一括して除去可能です。

ハードウェアにESP32を選定した理由としては、WiFi機能を内蔵しつつも低消費電力で安価な点が挙げられます。プログラムは主にC++で書かれており、Arduinoフレームワークをベースに開発されています。これにより、ESP32のネットワークスタックやDNSサービスの実装が効率的に行われています。

セットアップの簡便さにも注力しており、初回起動時にはキャプティブポータルを立ち上げ、ユーザーがスマートフォンやPCからESP32に接続してWiFiのSSIDやパスワードを設定できます。これにより、ネットワーク環境に応じた柔軟な導入が可能です。

管理画面はレスポンシブデザインのWebインターフェースとして実装され、ブロックされたリクエスト数や許可されたリクエスト数の統計情報をリアルタイムで表示します。また、ユーザーは管理画面からブロックリストのカスタマイズや、許可リストの追加・削除を直感的に操作可能です。これにより、誤検知によるサービス妨害を最小限に抑えつつ、効果的な広告除去を実現しています。

軽量な設計のため、ESP32の限られたリソースでも安定して稼働します。さらに、オープンソースであるため、ユーザーコミュニティによる拡張や改善が期待されます。ネットワーク全体の広告ブロックを手軽に実装したいエンジニアやDIYユーザーに非常に適したソリューションです。

プロジェクトの構成

主要なファイルとディレクトリ:

  • BananaBlocker.ino: メインのESP32用スケッチファイル。DNSサーバーやWeb管理パネルの実装を含む。
  • LICENSE: ライセンス情報。
  • README.md: プロジェクトの概要、セットアップ手順、機能説明などドキュメント。

まとめ

ESP32でPi-holeライクな広告ブロックを実現する軽量ソリューション。

リポジトリ情報: