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

Подразделы видеонаблюдения:


Давно борюсь с назойливой рекламой в приложениях на телефоне и при серфинге в браузере. И решения как правило являются локальными, где нужно что-то устанавливать и настраивать на каждом устройстве. А всегда хочется автоматизации и минимум действий и максимум удобств =). Совершенно случайно наткнулся на блокировку рекламы с помощью ПО Pi-hole. Официальный сайт - 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 1.0.0.1/dns-query --upstream 1.1.1.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).

блокировка, рекламы, роутер, mikrotik, raspberry

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

  • 127.0.0.1#5055

блокировка, рекламы, роутер, mikrotik, raspberry

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

блокировка, рекламы, роутер, mikrotik, raspberry

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

блокировка, рекламы, роутер, mikrotik, raspberry

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

блокировка, рекламы, роутер, mikrotik, raspberry

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

блокировка, рекламы, роутер, mikrotik, raspberry

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

блокировка, рекламы, роутер, mikrotik, raspberry

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

блокировка, рекламы, роутер, mikrotik, raspberry

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

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

07 Октября 2019


Интересно почитать

Комментарии (3)

  1. блокировка, рекламы, роутер, mikrotik, raspberry Айрат 28 октября 2019, 15:12 # 0
    Все ништяк. Главное не останавливайся. Телеграмм тоже не забудь.
    1. блокировка, рекламы, роутер, mikrotik, raspberry WIZM 25 января 2020, 15:29 # 0
      В файле /etc/default/cloudflared если писать, как у Вас, двумя строчками, то отрабатывает только последняя. И это в вашем же логе видно. Правильно будет написать так:
      CLOUDFLARED_OPTS=--port 5055 --upstream 1.0.0.1/dns-query --upstream 1.1.1.1/dns-query
      1. блокировка, рекламы, роутер, mikrotik, raspberry Алексей 27 января 2020, 10:01 # 0
        Добрый день, точно, не заметил. Спасибо большое. В описании поправлю.