出来事の日付:2026年10月7日。
あるオープンソースプロジェクトが、安価なESP32-C3マイコンをDNSベースのネットワーク広告ブロッカーに変えた。ドメイン名を容量の少ないRAMへ読み込む代わりに、遮断リストをフラッシュメモリーへ保存する。この設計は、ローカルのダッシュボードと無線更新を維持しながら、PSRAMを搭載しないハードウェアでPi-holeのようなフィルタリングを実現することを目指している。
中核となる手法は、遮断対象のドメインを固定長5バイト、40ビットのFNV-1aハッシュに変換するというものだ。ハッシュはフラッシュ上で並べ替えられ、デバイスがDNS要求を処理するたびに検索される。開発者によると、14万件を超えるドメインのリストは約0.7MBを占め、RAM使用量は約50KBで、約10ミリ秒で照合できる。より大きな構成では、デバイスのパーティション構成によっては約53万7,000件を保存できる。
この方式は、表現力を抑える代わりに必要な容量を減らしている。ハッシュリストはドメインとそのサブドメインを照合できるが、一般的なフィルターリストの記法が備える機能をすべて再現できるわけではない。正規表現、ワイルドカード、修飾子付きルール、ページ要素の見た目を制御するフィルターは処理対象から外される。ハッシュの衝突によって無関係なドメインが遮断されることもあるが、開発者は、公表されている最大のリスト規模では40ビット形式で約1件の衝突が生じると推定している。
フラッシュ容量には別のトレードオフもある。4MBのボードで無線によるファームウェア更新のために2つのアプリケーションスロットを確保すると、リストに使える容量は約1.3MB、ドメイン数で約25万件となる。より大きなリストを使うには単一アプリケーションのパーティション構成が必要で、その場合はファームウェアのOTA更新を断念することになる。それ以外の構成では、最初にUSBで設定した後、ファームウェアも遮断リストもWi-Fi経由で更新できる。
設定済みのネットワークに接続できない場合、ソフトウェアは初期設定用のキャプティブポータルを起動する。ダッシュボードで状態情報を表示する一方、状態を変更するエンドポイントにはHTTP Basic認証を要求する。ネットワーク経由のファームウェア更新には別のパスワードを使う。DNS要求に応答するデバイスはローカルネットワーク内で信頼される位置を占めるため、こうした制御は重要になる。
リポジトリには、PlatformIOでのビルド手順、遮断リスト作成ユーティリティー、ESP32-C3 SuperMini向けの印刷可能なケースモデルが含まれる。開発者は、新しいバージョンのPlatformIOが必要だと注意を促している。また、取得元からのダウンロードが失敗すると、標準設定ではリストの生成を停止し、予期せず不完全なフィルター集合ができるのを防ぐという。
この設計は、既存のあらゆるフィルタリング機器の完全な代替ではなく、小型の工学的な実証として捉えるのが適切だ。その価値は、大規模なドメインの完全一致リストをフラッシュから直接検索できることを示した点にある。小さなマイコンでも、外部ストレージやより大型のシングルボードコンピューターを使わず、有用なネットワークレベルの遮断を提供できる。
フィルタリングはDNSの段階で行われるため、このデバイスをリゾルバーとして使う各クライアントでは、リストにあるホスト名の名前解決が遮断される。ページ要素を削除したり、暗号化された接続の内部コンテンツを判定したりはしない。運用者は、広範囲に適用される親ドメインのルールが必要なものまで遮断した場合、許可リストを管理し、取得元を更新する必要もある。



