В этой статье будет рассмотрен вариант использования одноплатных компьютеров вроде Raspberry Pi в качестве аппаратного аналога утилит для блокирования рекламы вроде Adblock или AdGuard.
Для этого будет задействован пакет Pi-hole, а микрокомпьютер будет использоваться в качестве DNS-сервера внутри локальной сети.
Содержание
Что нам понадобится
Для осуществления описываемых в этой статье действий понадобится:
- Raspberry Pi 3 Model B
- Локальная сеть
В этой статье будет описан процесс установки и настройки Pi-hole на примере Raspberry Pi 3 и операционной системы Raspbian, но аналогичным путем можно установить утилиту практически на любое устройство под управлением Linux, включая роутеры с прошивкой OpenWRT.
Почему я против блокирования рекламы
Существование сайтов в интернете невозможно без получения прибыли. Можно по пальцам пересчитать проекты, которые существуют на голом энтузиазме их создателей — да и то, скорее всего окажется, что владельцы таких ресурсов все равно извлекают из них какие-то выгоды (например, продвигают свой личный бренд, используют профессиональный блог или тематический сайт как площадку для взаимодействия с потенциальными работодателями или клиентами).
Размещение блоков рекламы — самый простой способ заставить сайт приносить доход. Прибыль с блоков рекламы падает с каждым годом из-за того, что все больше и больше людей начинают пользоваться блокировщиками рекламы. И если она продолжит снижаться — владельцы ресурсов начнут переходить на другие способы извлечения прибыли.
Например, вместо контекстной рекламы от Google или Яндекса будет так называемая нативная реклама (то, что в журналистике называется «джинса», а в литературе и кинематографе «product placement»). Или доступ к содержимому сайта станет осуществляться по платной подписке.
И то, и другое уже происходит. Некоторые СМИ уже начали переходить на подписную модель («Хакер», «Ведомости»), ну а материалы от прямых рекламодателей публикуют уже практически все посещаемые ресурсы.
И чем активнее будет продолжаться падение доходов с традиционных форматов рекламы (из-за роста числа пользователей блокировщиков) — тем больше сайтов перейдет на альтернативные варианты извлечения прибыли.
Установка и настройка Pi-hole на Raspberry Pi
Pi-hole работает по принципу локального DNS-сервера. Когда какое-то устройство в локальной сети посылает DNS-запрос (запрос на преобразование доменного адреса вида www.site.com в IP-адрес сервера), роутер передает этот запрос на Pi-hole и там отфильтровываются все запросы доменов, используемых рекламными сетями для показа объявлений. Остальные запросы передаются на DNS-сервер в интернете, а ответы с него возвращаются обратно на устройства локальной сети.
Установка полностью автоматизирована и выполняется при помощи bash-скрипта. При этом все недостающие пакеты будут добавлены в систему автоматически, поэтому Pi-hole можно ставить прямо на «чистую» установку Raspbian:
sudo curl -sSL https://install.pi-hole.net | bash
Эта команда — всё, что нужно для запуска установки.
Установщик предупредит о необходимости присвоения Raspberry Pi статического IP-адреса для корректной работы.
Также будет предложено выбрать вышестоящий DNS-сервер.
Можно указать произвольный IP-адрес (Custom) — например, если ваш провайдер имеет собственные DNS-сервера. В остальных случаях можно особо не заморачиваться и выбирать DNS-сервер от Google.
Еще нужно будет выбрать поддерживаемые протоколы: IPv4 и IPv6.
Актуальный список провайдеров, поддерживающих IPv6 можно посмотреть по этой ссылке, и если ваш провайдер к их числу не относится — «галку» с IPv6 можно смело снимать.
Будет задан вопрос о добавлении веб-интерфейса и ведении логов (если они включены, то в веб-интерфейсе будет вестись статистика заблокированных доменов и рисоваться всякие красивые графики).
Добавляем или отказываемся, вне зависимости от принятого решения Pi-hole будет нормально работать на стандартных настройках.
Непосредственно установка проходит в автоматическом режиме.
В завершение установки нам сообщат случайно сгенерированный пароль для доступа к админ-панели Pi-hole, который нужно запомнить.
Либо сменить по горячим следам на собственный вариант при помощи команды:
pihole -a -p
На этом установка завершена и больше никаких манипуляций с Raspberry Pi проводить не нужно.
Настройка Pi-hole на роутере
Для начала использования Pi-hole его нужно прописать в качестве DNS-сервера в настройках роутера. Где искать эти настройки — зависит от конкретного производителя и модели устройства, т.к. структура интерфейса у всех отличается.
Например, на моем D-Link нужно зайти в «Сеть» -> «WAN» и прописать там нужный IP-адрес.
После применения настройки все DNS-запросы выходящих в интернет через наш роутер устройств будут отправляться на Raspberry Pi, а после фильтрации от рекламных доменов перенаправляться на вышестоящий DNS-сервер в интернете.
Поэтому важно, чтобы IP-адрес Raspberry Pi с установленным Pi-hole был статическим, т.к. при его изменении роутер будет слать DNS-запросы на ставший неверным IP-адрес, а при отсутствии ответов на эти запросы не будет работать интернет.
Проверим работу Pi-hole на примере данного сайта:
Слева — реклама показывается (и то не всегда, бывает что сама система контекстной рекламы не может подобрать релевантное объявление), справа — Pi-hole блокирует показ рекламы.
При этом рекламные блоки могут удаляться целиком, а может удаляться только их содержимое — в таком случае на странице остается пустое свободное пространство, ранее занимаемое рекламой.
Можно зайти в веб-интерфейс по адресу http://ip-адрес-raspberry-pi/admin и посмотреть статистику.
Там же можно осуществить некоторые дополнительные настройки, например вручную добавить какие-либо домены в «черный список», либо наоборот — внести в «белый список» адреса сайтов, на которых вы не хотите чтобы блокировался показ рекламы.
Настройка Pi-hole на отдельных устройствах
Фильтрацию рекламы посредством Pi-hole можно подключить на отдельных устройствах без прописывания его в качестве DNS-сервера на роутере. В частности, это может оказаться полезным, если вы не являетесь администратором в локальной сети и не имеете доступа к настройкам роутера.
Для этого нужно найти в настройках устройства пункты, имеющие какое-то отношение к сетевым подключениям и прописать там наш Pi-hole в качестве DNS-сервера.
- Windows: «Сетевые подключения» — «Параметры сети и Интернет» — «Свойства» используемого сетевого адаптера — «IP версии 4» — «Свойства» — «Использовать следующие адреса DNS-серверов»
- iOS: «Настройки» — «Wi-Fi» — (название сетевого подключения) — «DHCP» — «DNS»
- Linux (граф.интерфейс): «System» — «Preferences» — «Network Connections» — (название сетевого подключения) — «Edit» — «IPv4 Settings» — «DNS servers»
- Linux (консоль): отредактировать строку nameserver в /etc/resolv.conf
- Android: «Настройки» — «Wi-Fi» — (название сетевого подключения) — «Свойства» — «Настройки IP» — «DNS»
Заключение
Вот таким способом можно превратить Raspberry Pi или другой микрокомпьютер в программно-аппаратный блокировщик рекламы.
Пользоваться блокировщиками рекламы или нет — решать каждому самостоятельно. Свое отношение к явлению я описал в начале данной статьи.
Также хочу отметить, что производительность Raspberry Pi 3 для работы локального DNS-сервера является избыточной, и для работы Pi-hole можно использовать и более дешевые одноплатные ПК вроде Orange Pi Zero или Raspberry Pi Zero W.
Спасибо, пригодилось
Спасибо огромное! Установил на Orange Pi Zero 512 mb и очень счастлив, 25% трафика блокируетсяю
Добрый день! Сейчас Raspberry Pi3 используется как медиасервер в квартире (благодаря вашим статьям), в том числе и для закачки торент. Иногда я использую стационарный компьютер/телефон для скачивания торент, так как скорость от провайдера 250, а у raspberry 100. Если на малинку поставить Pi-Hole, стационарный компьютер будет качать торент на скорости 100 или сможет разогнаться до 250?
Добрый день.
Pi-hole работает как локальный DNS-сервер, а не как прокси. Так что скорее всего на скорость скачивания торрентов это никак не повлияет.
Добрый день!
А не подскажете, я ведь правильно понимаю, что это по сути обычный DNS сервер и он может выполнять свою прямую роль — отдавать IP адреса по имени и наоборот? Я вижу в интернете тонны инструкций по установке, но не могу нагуглить ни на чем базируется PiHole ни как вносить изменения в веб интерфейс или добавлять свои собственные списки в DNS.
Добрый день.
Да, все правильно понимаете, он работает как DNS-сервер. Собственные списки можно добавлять как через веб-интерфейс (в Settings), так и через редактирование файла /etc/pihole/adlists.list
Здравствуйте! У меня вопрос. Нужно ли будет заходить в админку и как-то обновлять базу данных рекламы Pi-hole или всё происходит в автоматическом режиме?
Нет, не нужно. Она автоматически обновляется с какой-то периодичностью, раз в неделю вроде бы.
Приветствую!
А как все это дело подключено к роутеру? В Lan, где интернет?
В LAN или по Wi-Fi, как любое другое устройство в локальной сети. Его не нужно подключать между роутером и кабелем от провайдера, если вы про это. Достаточно чтобы в настройках роутера или отдельного клиентского устройства было указано, что обращаться нужно не к дефолтным DNS-серверам от провайдера, а к Pi-hole.
Понял. Спасибо, отличная статья. Не проверяли, на YouTube блокирует рекламу?
Если регулярно обновлять списки рекламных доменов для блокировки, то должен блокировать. На гитхабе некоторые пользователи выкладывают свои блоклисты конкретно по ютубу.