強力なESP32-C3広告ブロッカーを自作する

革新的な小型ネットワークフィルタリング

エジプト人開発者のZedAxis氏が、卓越したESP32-C3広告ブロッカーを開発しました。この驚くべきデバイスは53万7000件を超えるドメインを効率よくブロックします。しかも、組み立てにかかる費用はわずか約5ドルです。

このデバイスは、フォールバック用DNSサーバーとして円滑に機能します。一般的な家庭内ネットワーク環境に最適な仕組みです。開発者は普段、Raspberry Pi上のPi-holeを主要なフィルタリング手段として使用しています。一方、この小型ボードは、Pi-holeが突然再起動した際の代替として動作します。その結果、家庭内のデバイスが広告ブロック機能のない標準サーバーに接続してしまう事態を回避できます。同様のネットワーク構成については、こちらの動画解説でも確認できます。

ハードウェアのメモリ制約を克服

ESP32-C3が搭載するRAMは、わずか400KBに過ぎません。加えて、フラッシュメモリもわずか4MBしかありません。そのため、従来の方式で数十万件ものアドレスを保存することは不可能でした。そこで開発者は、40ビットの短いデジタルフィンガープリントを保存する方式を巧みに採用しました。このフィンガープリントが、実際のテキスト形式のドメイン情報の代わりを効率的に果たします。32ビット方式では、どうしても衝突が過剰に発生してしまいます。逆に64ビット方式では、不必要にストレージ容量を消費してしまいます。

データベースを読み込む前に、プログラムは公開されているブロックリストをダウンロードします。その後、余分なコメントや重複エントリを除去します。続いて、ソフトウェアが各ドメインを正確なデジタルフィンガープリントに変換します。生成された値は、丁寧なソート処理を経ます。最後に、システムがそれらをボードのフラッシュメモリに書き込みます。

スムーズなリクエスト処理能力

ネットワークリクエストが到着すると、マイクロコントローラーは即座に動作します。ESP32は、同一の暗号学的手法を使ってウェブサイトのアドレスを処理します。そして、データベース内を素早く検索し、一致するものを探します。システムは、悪質と特定されたドメインを確実にブロックします。それ以外の正当なリクエストについては、外部サーバーへと転送します。

ZedAxis氏によると、このカスタムソフトウェアが占有するRAMはおよそ50KBです。ブロック対象ドメインへのリクエストへの応答時間は、約10ミリ秒です。さらに、このボードはシンプルな管理コントロールパネルもホストしています。ユーザーはここで、ネットワークの統計情報を手軽に確認できます。また、独自のアドレスを個人用ブロックリストにシームレスに追加することも可能です。

ストレージと効率の最大化

ドメインの総収容数は、メモリレイアウトに大きく左右されます。通常、ESP32はソフトウェアの2つの独立したコピーを保持します。この標準的な運用方式により、安全なOTA(無線経由)ファームウェア更新が一貫して保証されます。この優れた機能を維持したままだと、データベースは25万件のアドレスを収容できます。しかし、無線更新機能を切り捨てれば、全体の容量は劇的に増加します。2つ目のパーティションを割り当てることで、ストレージはおよそ53万7000ドメインまで拡張されます。

この印象的なプロジェクトは、包括的な企業向けシステムの代替にはなりません。Pi-holeやAdGuard Homeを完全に置き換えることはできないのです。この小型フィルターには、詳細なリクエスト履歴ログがありません。個々のデバイスごとの詳細な統計情報も提供されません。さらに、現時点では基本的な設定オプションしか用意されていません。

目立たず信頼性の高い動作

とはいえ、このボードの消費電力はわずか数十ミリアンペアに過ぎません。そのため、常時稼働のバックアップ用ネットワークフィルターとして申し分なく機能します。ZedAxis氏は、このデバイスを家庭用光回線ルーターに創意工夫をこらして接続しました。使用したのは、Huawei OptiXstarモデルのUSBポートです。

このポートは、ボードに必要な電力供給のみを担っています。データのやり取りはすべて、内蔵Wi-Fiモジュール経由で高速に行われます。その結果、この小型フィルターはルーターの背後に完全に隠れたまま動作します。昼夜を問わず、変わらず広告を効果的にブロックし続けます。メインサーバーが一時的にダウンした場合でも、システムは問題なく機能します。

翻訳元: https://meterpreter.org/esp32-c3-ad-blocker/

ソース: meterpreter.org