Repolode
M-Abozaid

M-Abozaid/esp32-c3-adblock

約2ドルのESP32-C3で動くPi-hole風DNS広告ブロッカー。ブロックリストのハッシュをフラッシュに保存するため、PSRAMは不要です。

代替できる製品:Pi-hole

スター
3,519
フォーク
395
未解決の Issue
34
最終コミット
昨日

これは何?

esp32-c3-adblockは、小型のESP32-C3マイコンボードをネットワーク上のDNSシンクホールとして動作させます。ネットワーク内のデバイスからボードをDNSサーバーに指定すると、ブロック対象ドメインには0.0.0.0を返し、それ以外のクエリは上流のリゾルバーに転送します。

主な仕組みは、ブロック対象ドメインを40ビットのFNV-1aハッシュに変換してソートし、フラッシュに保存したテーブルを検索時に二分探索することです。ブロックリストをRAMに置かずに済むため、ファームウェアのRAM使用量は約50 KBで、PSRAMなしで動作します。プロジェクトの報告によると、約0.7 MBのフラッシュに約14万1千ドメインを格納でき、大容量のリストでは約53万7千ドメインに対応します。

ボードは、クライアントごとのブロック数、カスタムのブロック・許可エントリー、WiFi経由でのブロックリストやファームウェアの更新に対応したWebダッシュボードを提供します。ブロックリストは、hostsファイル、プレーンなドメインリスト、AdGuard形式のルールからPythonスクリプトで生成できます。

主な機能

  • 01UDP DNSでブロック対象ドメインに0.0.0.0を返し、それ以外のクエリは上流に転送します。
  • 02ブロックリストを40ビットのハッシュとしてフラッシュに保存し、RAM使用量は約50 KBで、PSRAMは不要です。
  • 03クライアントごとのブロック数や、カスタムのブロック・許可エントリーを確認できるWebダッシュボード。
  • 04OTAによるファームウェアとブロックリストの更新に対応し、リモートからブロックリストを定期取得できます。
  • 05キャプティブポータルによるWiFi設定と、c3adblock.localでのmDNS検出に対応します。
  • 06hostsファイル、プレーンなドメインリスト、AdGuard Basicルールを受け付けるブロックリスト生成ツール。

ユースケース

  • Raspberry Piを購入せずに、自宅のルーターへネットワーク全体の広告・トラッカー対策を追加する。
  • メインのDNSの背後でドメインをブロックする、省電力なセカンダリDNSリゾルバーを稼働させる。
  • 安価なESP32-C3ボードで、組み込み向けDNSフィルタリングを試す。

クイックスタート

  1. 1

    シークレットのテンプレートをコピーし、Wi-Fiとダッシュボードの認証情報を設定します

    cp src/secrets.example.h src/secrets.h
  2. 2

    ブロックリストのハッシュテーブルをビルドします

    python3 tools/build_blocklist.py data/blocklist.bin
  3. 3

    USB経由でESP32-C3にファームウェアを書き込みます

    pio run -t upload
  4. 4

    USB経由でブロックリストのファイルシステムを書き込みます

    pio run -t uploadfs

使う前に知っておきたいこと

  • 現行バージョンのPlatformIOが必要です。古いaptパッケージ版ではビルドに失敗します。
  • フラッシュ容量が4 MBの場合、ファームウェアのOTA更新を行うと、ブロックリストは約25万ドメインに制限されます。
  • secrets.hでダッシュボードとOTAのパスワードを設定しないと、デバイスは公開されているデフォルトの認証情報で起動します。
  • 通信はBasic Authを使った平文のHTTPのため、LAN上で暗号化されません。

収録されている特集

トピック

よくある質問

esp32-c3-adblock とは?
約2ドルのESP32-C3で動くPi-hole風DNS広告ブロッカー。ブロックリストのハッシュをフラッシュに保存するため、PSRAMは不要です。 esp32-c3-adblockは、小型のESP32-C3マイコンボードをネットワーク上のDNSシンクホールとして動作させます。ネットワーク内のデバイスからボードをDNSサーバーに指定すると、ブロック対象ドメインには0.0.0.0を返し、それ以外のクエリは上流のリゾルバーに転送します。
esp32-c3-adblock は無料で使えますか?ライセンスは?
esp32-c3-adblock は MIT ライセンスのオープンソースです。商用製品で使う前にライセンス条件を確認してください。
esp32-c3-adblock は今もメンテナンスされていますか?
活発にメンテナンス中。esp32-c3-adblock の最終コミットは 2026年11月6日 です。
esp32-c3-adblock は何に使えますか?
Raspberry Piを購入せずに、自宅のルーターへネットワーク全体の広告・トラッカー対策を追加する。 メインのDNSの背後でドメインをブロックする、省電力なセカンダリDNSリゾルバーを稼働させる。 安価なESP32-C3ボードで、組み込み向けDNSフィルタリングを試す。
esp32-c3-adblock のインストール方法は?
シークレットのテンプレートをコピーし、Wi-Fiとダッシュボードの認証情報を設定します: cp src/secrets.example.h src/secrets.h ブロックリストのハッシュテーブルをビルドします: python3 tools/build_blocklist.py data/blocklist.bin USB経由でESP32-C3にファームウェアを書き込みます: pio run -t upload USB経由でブロックリストのファイルシステムを書き込みます: pio run -t uploadfs
esp32-c3-adblock はどこで入手できますか?
ソースコードとインストール手順は GitHub にあります:https://github.com/M-Abozaid/esp32-c3-adblock

概要はプロジェクトの README をもとに AI が生成しています。GitHub の数値は毎日更新されます。

関連プロジェクト

あらゆるDNSサーバーや広告ブロッカーで利用でき、ネットワーク全体の広告、トラッカー、テレメトリー、フィッシング、マルウェア、詐欺を遮断するDNSブロックリスト集。

セキュリティ#dns#blocklist#adblock
2.8万+280 今週861TextGPL-3.0更新 21 時間前