Блокировка рекламы/телеметрии с помощью роутера Mikrotik и/или мини-компьютера Raspberry

Давно борюсь с назойливой рекламой в приложениях на телефоне и при серфинге в браузере. И решения как правило являются локальными, где нужно что-то устанавливать и настраивать на каждом устройстве. А всегда хочется автоматизации и минимум действий и максимум удобств =). Совершенно случайно наткнулся на блокировку рекламы с помощью ПО Pi-hole. Официальный сайт - pi-hole.net. И у меня как раз давно без дела лежал Raspberry pi 3.

Установка и настройка на Raspberry крайне понятная и простая. Посмотрим вкратце процесс установки и настройки при условии, что у вас на Raspberry уже установлена ОС Linux и вы имеете доступ по ssh.

Подключаетесь по ssh к Raspberry и выполняете следующую команду:

В принципи на этом можно остановиться и уже подключаться к админке Pi-hole http://ip_address/admin/, но мне ещё хотелось начать использовать DNS over HTTPS. 

Определение из википедии:

DNS поверх HTTPS (DoH) — экспериментальный протокол для выполнения разрешения DNS по протоколу HTTPS. Целью этого метода является повышение конфиденциальности и безопасности пользователей путём предотвращения перехвата и манипулирования данными DNS с помощью атак типа «Атака посредника». По состоянию на март 2018 года, Google и Mozilla Foundation тестируют версии DNS по протоколу HTTPS.

Для использование DNS over HTTPS используем сервис от Cloudflare на Raspberry pi 3 и для установки и настройки выполняем следующие команды:

Создадим пользователя для работы сервиса

Создадим файл конфигурации

Вставим содержимое:

# Commandline args for cloudflared
CLOUDFLARED_OPTS=--port 5055 --upstream 1.0.0.1/dns-query --upstream 1.1.1.1/dns-query

Дадим на него и на исполняемый файл права пользователю сервиса

Создадим файл для возможности добавления сервиса в автозагрузку

Вставим содержимое:

[Unit]
Description=cloudflared DNS over HTTPS proxy
After=syslog.target network-online.target

[Service]
Type=simple
User=cloudflared
EnvironmentFile=/etc/default/cloudflared
ExecStart=/usr/local/bin/cloudflared proxy-dns $CLOUDFLARED_OPTS
Restart=on-failure
RestartSec=10
KillMode=process

[Install]
WantedBy=multi-user.target

Активация сервиса и его запуск

Если всё получилось, то увидите, что сервис в состоянии active (running).

Теперь сервис cloudflare необходимо подключить к Pi-hole. Для этого заходим в веб интерфейс http://ip_address/admin/. Переходим в меню Settings — DNS, в Upstream DNS Servers убираете все галки. В custom ipv4 1 добавляете:

В Advanced DNS Settings галки оставляете только на Never forward non-FQDNs и Never forward revers lookups for private IP ranges. Нажимаете Save.

Далее для теста на компьютере меняете IP адрес днс сервера на IP Raspberry, куда вы установили Pi-hole. Очищайте кэш на своём ПК (Windows) - cmd - ipconfig /flushdns и после пробуете открыть любые сайты. Потом проверяете работу DNS over https через сайт https://www.cloudflare.com/ssl/encrypted-sni/, нажатием на кнопки Check my browser.

Также в белый лист добавил несколько доменов, чтобы они не блокировались.

Добавил блок листы из https://stopad.hook.sh/

И если всё ок, то в настройках DHCP сервера (вероятно он у вас включен в роутере) указываете DNS - ip адрес вашего мини-компьютера Raspberry.

Теперь остаётся настроить роутер Mikrotik на случай, если по какой-либо причине выйдет из строя минипк Raspberry, но хочется, чтобы осталась блокировка рекламы и телеметрии Microsoft. Нашёл сервис для Mikrotik - https://stopad.hook.sh/, который поможет настроить блокировку рекламу.

Добавляете скрипт и настраиваете планировщик ( я у себя настроил запускать скрипт каждые 2 часа) согласно инструкции, указанной на сайте. Рекомендую, в скрипт добавлять и тестить по одному списку, т.к. у меня на Mikrotik HAP AC LITE при добавлении всех списков поднялась загрузка процессора на 100% и после завис. После в Mikrotik переходите в настройки ДНС IP - DNS, указываете первый днс сервер ip адрес Pi-hole, второй днс сервер 1.1.1.1 или гугловский/провайдерский, вообщем любой.

После переходите в настройки DHCP сервера и указываете как второй днс сервер - ip адрес вашего роутера. В моем случае 192.168.77.23 - Pi-hole, 192.168.77.1 - роутер.

На этом всё! Настройка закончена! Приятно удивитесь даже заблокированной рекламой в приложениях на телефоне. Удачи!