Домой Гайды Как настроить блокировку рекламы на микроконтроллере ESP32 за 15 долларов

Как настроить блокировку рекламы на микроконтроллере ESP32 за 15 долларов

Для блокировки рекламы в домашней сети не обязательно использовать Raspberry Pi. Недорогой микроконтроллер ESP32 справляется с этой задачей ничуть не хуже.

1
0

Настройка DNS-фильтра через Pi-hole стала популярным проектом для домашнего использования. Одноплатный мини-компьютер Raspberry Pi отлично подходит для роли блокировщика рекламы, однако существует альтернатива, которая стоит значительно дешевле и занимает вдвое меньше места — микроконтроллер ESP32. Это устройство из мира интернета вещей может показаться слишком слабым для роли DNS-фильтра, но на практике оно отлично справляется с задачей.

Микроконтроллер ESP32 на плате

Требования к памяти микроконтроллера

Для реализации проекта используется скетч ESP32_AdBlocker от разработчика s60sc для среды Arduino, который превращает ESP32 в полноценный DNS-фильтр. Когда какое-либо устройство запрашивает у него домен из черного списка, микроконтроллер отвечает адресом 0.0.0.0, из-за чего реклама или трекер не загружаются. Домены, отсутствующие в списке, перенаправляются на внешний DNS-сервер — например, 1.1.1.1 и 1.0.0.1 от Cloudflare. Принцип работы аналогичен Pi-hole, но выполняется на микроконтроллере без сложной панели мониторинга.

Для такой задачи подходит далеко любая плата на базе ESP32. Главным ограничением выступает память: документация проекта указывает на необходимость наличия PSRAM для хранения актуального черного списка. Модель ESP32-S3 с 8 МБ памяти способна вместить полный список, тогда как старая версия ESP32 с 4 МБ памяти может потребовать его сокращения. Автор использовал вариант N16R8, включающий 16 МБ флеш-памяти и 8 МБ PSRAM. Плата подключается к домашней сети по протоколу Wi-Fi на частоте 2.4 ГГц, работает от USB-адаптера питания, не имеет вентилятора и не требует регулярного обновления Linux.

Интеграция блокировщика в сеть предельно проста. Достаточно зарезервировать IP-адрес для платы в настройках роутера и указать его в качестве первичного DNS-сервера. Это избавляет от необходимости менять настройки на каждом отдельном устройстве.

Производительность и особенности работы

DNS-фильтр не требует высокой вычислительной мощности. Даже Raspberry Pi Zero обладает гораздо большим потенциалом, но DNS работает значительно быстрее, чем кажется. Он лишь преобразует доменное имя в IP-адрес, после чего соединение устанавливается напрямую с сервером, а весь игровой трафик, потоковое вещание и загрузки идут в обход ESP32. Фильтрация не оказывает никакого влияния на пропускную способность канала, поскольку обрабатывается только момент установления соединения, к тому же браузеры и устройства кэшируют ответы.

Проверка домена по черному списку на ESP32-S3 с 8 МБ PSRAM занимает менее 50 микросекунд. Задержка для разрешенных доменов связана исключительно со временем отправки запроса к Cloudflare. Единственным слабым местом может стать беспроводное соединение: поддержка только диапазона 2.4 ГГц означает, что плата, спрятанная за телевизором в зашумленном радиоэфире, может увеличивать задержки или терять запросы. Размещение устройства имеет критическое значение, а ежедневное обновление черного списка лучше планировать на ночное время.

Ограничения по сравнению с Pi-hole

Хотя ESP32 отлично выполняет роль DNS-фильтра, Pi-hole остается более мощным инструментом. Микроконтроллер принимает только один URL черного списка, поэтому требуется единый объединенный файл, размер которого ограничен объемом PSRAM. Pi-hole поддерживает неограниченное число списков и позволяет применять их к конкретным группам устройств по IP- или MAC-адресам, что удобно для родительского контроля. Кроме того, ESP32 выводит базовые счетчики и живой лог, но не ведет долгосрочную базу данных запросов с детализацией по каждому устройству через удобный веб-интерфейс.

блокировка рекламы на ESP32 — иллюстрация 2 к материалу

Блокировка рекламы на ESP32 не способна полностью заменить полноценный сервер Pi-hole, но это один из лучших способов развернуть DNS-фильтрацию с нуля при минимальных затратах. Для домашних пользователей, которым нужна система по принципу «установил и забыл», большинство ограничений микроконтроллера не имеют решающего значения.

Дополнительные технические нюансы и сравнение возможностей

Важной особенностью настройки сети является то, что присвоение постоянного IP-адресу плате через роутер позволяет блокировщику работать даже с теми устройствами, у которых изменить системные настройки DNS невозможно физически или программно.

Что касается аппаратной части, проект скетча s60sc’s ESP32_AdBlocker задействует беспроводной модуль на частоте 2.4 ГГц. Из-за этого физическое расположение платы играет ключевую роль: если спрятать микроконтроллер за телевизором в зашумленном радиоканале, это может добавить задержки или привести к полной потере DNS-запросов. Кроме того, процесс ежедневного обновления черного списка требует определенных ресурсов от процессора, поэтому данную процедуру рекомендуется планировать на ночное время.

Существуют и другие функциональные отличия от классического Pi-hole:

  • ESP32 обрабатывает только один URL черного списка, объединяя все источники в один файл.
  • Pi-hole способна работать в качестве DHCP-сервера, хотя использовать её для этих целей разработчики не рекомендуют.
  • Микроконтроллер привлекает своей экономичностью: он потребляет минимум энергии («trickle of power») и стоит дешевле стоимости обычного обеда навынос.