Быстрый и лёгкий DNS-прокси блокирует рекламу и трекеры во всей локальной сети и позволяет задавать правила для групп клиентов.
M-Abozaid/esp32-c3-adblock
DNS-блокировщик рекламы в стиле Pi-hole для ESP32-C3 за $2: хранит хеши блок-листа во flash-памяти и не требует PSRAM.
Open source альтернатива:Pi-hole
- Звёзды
- 3,519
- Форки
- 395
- Открытые issues
- 34
- Последний коммит
- вчера
Что это?
esp32-c3-adblock превращает компактную плату на базе микроконтроллера ESP32-C3 в сетевой DNS sinkhole. Устройства в вашей сети направляют DNS-запросы на плату: она отвечает 0.0.0.0 для заблокированных доменов, а остальные запросы пересылает вышестоящему резолверу.
Основная идея — хранить каждый заблокированный домен во flash-памяти в виде отсортированного 40-битного хеша FNV-1a и искать его в таблице бинарным поиском. Благодаря этому блок-лист не занимает RAM: прошивке требуется около 50 КБ RAM, и она работает без PSRAM. По данным проекта, в примерно 0,7 МБ flash-памяти помещается около 141 тыс. доменов, а с увеличенным списком — около 537 тыс.
На плате работает веб-панель со статистикой блокировок для каждого клиента, пользовательскими списками блокировки и разрешений, а также обновлением блок-листов и прошивки по WiFi. Блок-листы собираются Python-скриптом из hosts-файлов, обычных списков доменов или правил в стиле AdGuard.
Ключевые возможности
- 01Отвечает 0.0.0.0 на DNS-запросы по UDP для заблокированных доменов, остальные запросы пересылает вышестоящему резолверу.
- 02Хранит блок-лист во flash-памяти в виде 40-битных хешей, используя около 50 КБ RAM и не требуя PSRAM.
- 03Веб-панель со статистикой блокировок для каждого клиента и пользовательскими списками блокировки и разрешений.
- 04Обновление прошивки и блок-листов по воздуху, а также запланированная загрузка блок-листов с удалённого источника.
- 05Настройка WiFi через captive portal и обнаружение по mDNS-адресу c3adblock.local.
- 06Сборщик блок-листов поддерживает hosts-файлы, обычные списки доменов и базовые правила AdGuard.
Сценарии использования
- Добавить блокировку рекламы и трекеров во всей домашней сети через роутер, не покупая Raspberry Pi.
- Запустить маломощный дополнительный DNS-резолвер, который блокирует домены за основным DNS-сервером.
- Экспериментировать с фильтрацией DNS на недорогой плате ESP32-C3.
Быстрый старт
- 1
Скопируйте шаблон secrets и укажите в нём учётные данные для Wi-Fi и панели управления
cp src/secrets.example.h src/secrets.h - 2
Соберите хеш-таблицу списка блокировки
python3 tools/build_blocklist.py data/blocklist.bin - 3
Прошейте ESP32-C3 через USB
pio run -t upload - 4
Прошейте файловую систему списка блокировки через USB
pio run -t uploadfs
Что важно знать
- Требуется актуальная версия PlatformIO; старая версия из пакета apt не собирает проект.
- При объёме флеш-памяти 4 МБ обновления прошивки по OTA ограничивают список блокировки примерно 250 тысячами доменов.
- Пароли панели управления и OTA необходимо задать в secrets.h, иначе устройство загрузится с общедоступными учётными данными по умолчанию.
- Трафик передаётся по незашифрованному HTTP с Basic Auth и поэтому не шифруется в локальной сети.
В подборках
Темы
Частые вопросы
- Что такое esp32-c3-adblock?
- DNS-блокировщик рекламы в стиле Pi-hole для ESP32-C3 за $2: хранит хеши блок-листа во flash-памяти и не требует PSRAM. esp32-c3-adblock превращает компактную плату на базе микроконтроллера ESP32-C3 в сетевой DNS sinkhole. Устройства в вашей сети направляют DNS-запросы на плату: она отвечает 0.0.0.0 для заблокированных доменов, а остальные запросы пересылает вышестоящему резолверу.
- esp32-c3-adblock можно использовать бесплатно? Какая у него лицензия?
- esp32-c3-adblock распространяется с открытым исходным кодом под лицензией MIT. Перед использованием в коммерческих продуктах проверьте условия лицензии.
- esp32-c3-adblock всё ещё поддерживается?
- Активно поддерживается. Последний коммит в esp32-c3-adblock — 6 нояб. 2026 г..
- Для чего можно использовать esp32-c3-adblock?
- Добавить блокировку рекламы и трекеров во всей домашней сети через роутер, не покупая Raspberry Pi. Запустить маломощный дополнительный DNS-резолвер, который блокирует домены за основным DNS-сервером. Экспериментировать с фильтрацией DNS на недорогой плате ESP32-C3.
- Как установить esp32-c3-adblock?
- Скопируйте шаблон secrets и укажите в нём учётные данные для Wi-Fi и панели управления: cp src/secrets.example.h src/secrets.h Соберите хеш-таблицу списка блокировки: python3 tools/build_blocklist.py data/blocklist.bin Прошейте ESP32-C3 через USB: pio run -t upload Прошейте файловую систему списка блокировки через USB: pio run -t uploadfs
- Где скачать esp32-c3-adblock?
- Исходный код и инструкции по установке — на GitHub: https://github.com/M-Abozaid/esp32-c3-adblock
Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.
Похожие проекты
Устройство на базе ESP32 оценивает пассажиропоток, подсчитывая находящиеся поблизости мобильные устройства с Wi-Fi и Bluetooth, и передаёт данные через LoRaWAN, MQTT или на SD-карту.
Альтернативная прошивка для плат ESP8266 и ESP32 с веб-настройкой, OTA-обновлениями, локальной автоматизацией и управлением через MQTT, HTTP, Serial или KNX.
Кроссплатформенный инструмент командной строки и система сборки для разработки встраиваемого ПО: управление библиотеками, поддержка разных плат и фреймворков, отладка и модульное тестирование.
Sesame — миниатюрный робот-квадрупед с открытым исходным кодом, который можно напечатать на 3D-принтере; он работает на ESP32, оснащён OLED-лицом и ходит с помощью сервоприводов.
Набор DNS-блоклистов для блокировки рекламы, трекеров, телеметрии, фишинга, вредоносных доменов и мошенничества во всей сети — для любого DNS-сервера или блокировщика рекламы.