Найти тему
Chudotvorec

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

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

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

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

  • sudo curl -sSL https://install.pi-hole.net | bash - после запустится мастер установки, можно всё оставлять по умолчанию. В конце установки вам нужно будет сохранить сгенерированный пароль для доступ к веб-интерфейсу управлению Pi-hole. В случае, если забудете пароль то через ssh командой pihole -a -p можно задать новый пароль.

В принципи на этом можно остановиться и уже подключаться к админке 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 и для установки и настройки выполняем следующие команды:

  • cd /tmp
  • wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-arm.tgz
  • tar -xvzf cloudflared-stable-linux-arm.tgz
  • cp ./cloudflared /usr/local/bin
  • sudo chmod +x /usr/local/bin/cloudflared

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

  • sudo useradd -s /usr/sbin/nologin -r -M cloudflared

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

  • sudo nano /etc/default/cloudflared

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

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

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

  • sudo chown cloudflared:cloudflared /etc/default/cloudflared
  • sudo chown cloudflared:cloudflared /usr/local/bin/cloudflared

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

  • sudo nano /lib/systemd/system/cloudflared.service

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

[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

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

  • systemctl enable cloudflared
  • systemctl start cloudflared
  • systemctl status cloudflared

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

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

  • 127.0.0.1#5055
  • 127.0.0.1#5056
-2

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

-3

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

-4

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

-5

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

-6

И если всё ок, то в настройках 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 или гугловский/провайдерский, вообщем любой.

-7

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

-8

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