Содержание
ESP32-C3 блокировщик рекламы от египетского разработчика ZedAxis уместил заявленные 537 000 доменов в 4 МБ флеш-памяти. Проект собрали на плате ESP32-C3 SuperMini примерно за $5 (около 500 рублей), и он выглядит как карманная версия Pi-hole для домашней сети.
Устройство работает как DNS sinkhole. Когда клиент в сети запрашивает домен из черного списка, мини-плата перехватывает DNS-ответ и не дает загрузить рекламный или трекинговый ресурс. Это сетевой фильтр, а не расширение для браузера, поэтому схема затрагивает разные устройства в одной сети.
ZedAxis показал работу проекта в видеодемонстрации и выложил код с описанием сжатия на GitHub проекта. Главная интрига здесь не в цене платы, а в том, как такой объем черного списка поместился в микроконтроллер без внешней PSRAM.
537 000 доменов в 4 МБ — цифра с оговорками
ZedAxis не хранит домены обычным текстом, потому что такой список быстро съел бы всю память. Вместо этого проект хеширует доменные имена в 40-битные значения FNV-1a, алгоритм с упором на скорость и низкий риск коллизий. За счет этого проверка занимает намного меньше места, чем текстовая база.
В описании проекта есть пример с 141 000 доменов. После хеширования такой набор занимает около 0,7 МБ во флеш-памяти, а сопоставление с черным списком требует меньше 50 КБ оперативной памяти.
Заявленные 537 000 доменов надо читать именно через эту механику. Это не полмиллиона строк в текстовом файле, а компактные хеши. В обычной конфигурации разработчик чаще ограничивает список примерно 250 000 доменов, потому что для OTA-обновлений прошивки нужно оставить около 1,3 МБ флеш-памяти.
Плата за $5 вместо отдельного Raspberry Pi
Классический домашний вариант блокировки рекламы на уровне сети — Raspberry Pi с Pi-hole. Он удобен, но занимает отдельное устройство, требует питания и может выпасть из схемы при перезагрузке. Проект ZedAxis идет в другую сторону: маленькая плата питается от USB и висит рядом с роутером.
В сборке используется ESP32-C3 SuperMini. Такие платы продают в онлайн-магазинах, а сам форм-фактор ближе к флешке, чем к одноплатному ПК. Для проекта пригодились корпус, напечатанный на 3D-принтере, и USB-адаптер.
- Питание: через USB-C или USB-порт всегда включенного устройства
- Связь: Wi-Fi для работы в сети и Bluetooth 5.0 на самой плате
- Управление: веб-панель для доступа к устройству
- Поиск в сети: mDNS, чтобы устройство проще находилось локально
- Обновления: OTA-прошивки без ручной перепрошивки через кабель
Разработчик подключал плату к порту на задней панели роутера. Теоретически питание можно взять и от телевизора, консоли или другого устройства, которое почти всегда включено. Главное, чтобы сетевой фильтр не зависел от ноутбука или настольного ПК.
Для дома и малого офиса это компактный DNS-фильтр
Сценарий для дома понятен: один маленький модуль режет обращения к рекламным доменам до загрузки страниц и приложений. Для малого офиса идея тоже выглядит практично, если нужно снизить фоновый сетевой шум от рекламных и трекинговых сетей без отдельного мини-ПК.
Но это пока проект разработчика, а не готовый коробочный продукт с поддержкой и SLA. В описании уже заявлены будущие функции, включая режим DHCP-сервера. Это приблизит устройство к привычным сетевым решениям, где один узел раздает адреса и управляет DNS для клиентов.
Код проекта ZedAxis открыт на GitHub; плата ESP32-C3 SuperMini стоит около $5 (около 500 рублей), а под OTA-обновления разработчик резервирует примерно 1,3 МБ флеш-памяти.