Чистим интернет от назойливой рекламы (AD Blocker для MikroTik)

Данная статья является копией публикации на хабре (написанной мной же)

Данная статья является логическим завершением небольшой дискуссии с тов. vvzvlad, которая развернулась под топиком «Чистим домашний интернет от очень назойливой рекламы (Ad’s blocker для OpenWRT)«, где автор с помощью wget, sed и cron на OpenWRT успешно сливает файлы рекламных хостов, парсит и подсовывает dns-серверу dnsmasq.

Переадресовывая клиента при запросе «рекламного» домена, например, на loopback (127.0.0.1 — 127.255.255.255), вместо котента рекламы клиент получит благодатное «ничего» (разумеется, при условии, что у нас не работает локальный веб-сервер который слушает локалхост). Механизм фильтрации довольно старый и не лишен недостатков. Например, нельзя указать маски хостов (*.ad-domain.tld) или «вырезать» рекламу, баннеры которой хостятся на запрашиваемых ресурсах. Но зато не привязан к какому-то либо протоколу и довольно прост в эксплуатации. Более того, если его использовать, например, на домашнем или офисном маршрутизаторе, который используется в качестве DNS сервера, реклама успешно порежется на всех гаджетах, где IP нашей железки прописан первым в качестве DNS сервера.

Но что если у нас вместо роутера с кастомной прошивкой используется.. MikroTik (RouterOS), функционал которого накладывает некоторые ограничения? Под катом вы узнаете каким образом удалось успешно «сконвертировать» файл хостов в пригодный для него формат, как автоматизировать это дело и что для хабралюдей в качестве бонуса был создан небольшой сервис как раз для автоматизации этого процесса (маленький, абсолютно бесплатный и с открытыми исходниками).

Подробнее под катом

MikroTik — Автоматически меняем MAC адрес на рандомный

Очередной приступ паранойи застал врасплох. Мысль о том что MAC-адрес беспощадно палит привязку твоих сессий в логах провайдера не давала покоя и надо было с этим что то делать.

Позвонив товарищу, который поинтересовался у инженеров провайдера (одного из представителей «Большой тройки») соображениями о том, просто ли получить информацию о сессиях абонента, имея на руках MAC-адрес. Ответ был очевиден — «Да как два пальца..». Нет, часто меняя MAC-и, разумеется, полной анонимности не добьешься, но некоторые затруднения это всё-таки вызовет.

Было решено, надо каким-то образом менять MAC адрес WAN-порта на рандомный, да с заданным интервалом. Имея на руках всё тот же MikroTik, всё решается с помощью одного лишь скрипта.

Подробнее под катом

MikroTik — режем рекламу (ADBlock) с помощью DNS

У данного поста имеется продолжение, позволяющее автоматизировать и значительно упростить весь процесс, описанный в этой записи. Располагается оно по этой ссылке.

Прочитав пост тов. 4aba о том, как с помощью dnsmasq на прошитом роутере можно вполне успешно резать рекламные баннеры на всех устройствах, которые подключены к нашей точке доступа возник резонный вопрос — а можно ли реализовать аналогичное на маршрутизаторе Mikrotik hAP lite? Железка довольно таки достойная (650MHz @ RAM 32 Mb), но у нас нет полноценного linux-шелла на ней. Оказывается — можно, и результате было реализовано довольно простое, но эффективное решение.

Пришлось пойти немного другим путем, а именно — прописать статичные DNS маршруты, которые при запросе «рекламного домена» переадресовывали наш запрос на 127.0.0.1.

Списки «рекламных доменов» мы возьмем из открытых источников, таких как http://pgl.yoyo.org/adservers/ и https://adaway.org/hosts.txt (с легкостью можно изменить на любые другие), приведем их в подобающий вид и оформим в виде скрипта для нашего Mikrotik-а, чтоб с помощью одной команды все их ему и «скормить».
Подробнее под катом

MikroTik — автоматически выключаем и включаем WiFi в заданное время

Маршрутизатор от Mikrotik, должен признать — интересный зверь. То, что в «домашних роутерах» поставляется прямо из коробки — здесь в ряде случаев приходится доделывать ручками. Зато имеется огромный функционал в плане «настраивается всё что хочешь».

Допустим, что у нас стоит задача выключать WiFi на ночной период. Так мы и ресурс экономим, и потребление энергии, да и вообще — ночью надо бы спать, а не втыкать в гаджеты :) Для решения этой задачи нам потребуется выполнить несколько простых шагов:

  1. Написать скрипт, который будет проверять текущее время, и в соответствии с ним выполнять требуемое действие;
  2. Убедиться, что он корректно работает;
  3. Добавить задание, которое будет выполнять этот скрипт с заданным промежутком времени;

Подробнее под катом