クライアントグループごとのルールに対応し、ローカルネットワーク全体の広告やトラッカーを遮断する、高速で軽量なDNSプロキシです。
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
シークレットのテンプレートをコピーし、Wi-Fiとダッシュボードの認証情報を設定します
cp src/secrets.example.h src/secrets.h - 2
ブロックリストのハッシュテーブルをビルドします
python3 tools/build_blocklist.py data/blocklist.bin - 3
USB経由でESP32-C3にファームウェアを書き込みます
pio run -t upload - 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 の数値は毎日更新されます。
関連プロジェクト
Wi-FiやBluetoothの周辺モバイル端末を数えて人流を推定し、LoRaWAN、MQTT、SDカードにデータを出力するESP32ベースのデバイス。
ESP8266/ESP32ボード向けの代替ファームウェア。Web UIでの設定、OTAアップデート、ローカル自動化、MQTT・HTTP・Serial・KNXによる制御に対応。
組み込み開発向けのクロスプラットフォームなコマンドラインツール兼ビルドシステム。ライブラリ管理、複数のボードやフレームワーク、デバッグ、ユニットテストに対応します。
ESP32を搭載し、OLEDの顔とサーボ駆動の歩行機能を備えた、オープンソースの3Dプリント対応ミニ四足歩行ロボット。