Настройка Adlist на MikroTik: блокировка рекламы на уровне DNS

Настройка Adlist на MikroTik: блокировка рекламы DNS

Поднял точку раздачи на новом объекте. Клиент через час пишет: «на телевизоре реклама лезет из каждой щели, у роутера же должна быть защита». А защиты нет — потому что adlist никто не включил. Знакомая ситуация?

Adlist на MikroTik — это встроенный механизм DNS-фильтрации в RouterOS, который режет рекламные и трекинговые домены прямо на роутере, без Pi-hole, без контейнеров, без отдельного железа. Настройка блокировки рекламы adlist на mikrotik занимает 10-15 минут, если делать по шагам и не тыкать наугад в Winbox.

Дальше — рабочий рецепт с командами, которые можно вставлять в терминал построчно. Без теории ради теории.

Быстрый ответ
Чтобы включить adlist на MikroTik: увеличь размер DNS-кэша, добавь источник списка доменов через /ip/dns/adlist/add, проверь работу через /ip/dns/adlist/print и тестовый запрос к заблокированному домену. Список обновляется автоматически каждые 4 часа, реклама блокируется через null-route на 0.0.0.0. Работает на RouterOS 7.15 и новее.

1. Диагноз: почему реклама долбит в каждое устройство в сети

Ты поднял сеть. DHCP раздаёт адреса, интернет летает, всё стабильно. А потом смарт-ТВ на кухне включает рекламный ролик перед каждым фильмом, телефон жены захлёбывается баннерами в мобильном браузере, а плойка сына получает поп-ап посреди игры. Устройства разные, проблема одна — DNS.

Adlist в RouterOS решает эту задачу централизованно: один раз настроил на роутере — рекламные домены отсекаются для всех клиентов сети, которые используют его как DNS-сервер. Не важно, смартфон это, приставка или консоль без возможности поставить блокировщик.

Что получишь на выходе:

  • блокировку рекламных и трекинговых доменов на уровне сети, без установки чего-либо на клиентские устройства
  • автоматическое обновление списков без твоего участия
  • возможность добавить собственные списки или исключения
  • снижение паразитного трафика и нагрузки на канал
  • рабочий troubleshooting на случай, если что-то отвалится через месяц

Время на настройку 10-15 минут при наличии доступа к роутеру. Понадобится: RouterOS 7.15 или новее, доступ по SSH или Winbox, немного свободной памяти под DNS-кэш.

Системные требования

Компонент Минимальная версия Комментарий
RouterOS 7.15+ Adlist как нативная фича появился в этой ветке. На старых 7.x придётся городить костыль через static DNS
Свободная RAM от 32 МБ Зависит от размера списка. Список StevenBlack hosts — это больше 160 тысяч записей
Свободное место на диске от 5 МБ Adlist хранится во внутренней памяти устройства

На момент публикации актуальна версия RouterOS 7.19.x. Перед установкой проверь свежие релизы на официальном сайте MikroTik.

2. Причины, по которым реклама проходит через обычную настройку роутера

Ты не первый, кто удивляется, почему «просто DNS-сервер 8.8.8.8» не спасает от рекламы. Разберём по пунктам, что именно ломает картину.

Причина Почему не работает без adlist
Публичный DNS без фильтрации (Google, Cloudflare) Резолвит любой домен, включая рекламные сети — фильтрации там нет по умолчанию
Клиенты используют DNS-over-HTTPS в браузере напрямую Запрос уходит мимо роутера прямо к DoH-провайдеру, adlist роутера не видит трафик
Устаревший список доменов Рекламные сети постоянно меняют поддомены — статичный список без обновлений быстро протухает
Маленький DNS-кэш Список на 100+ тысяч записей не влезает, роутер сыпет ошибкой adlist read: max cache size reached
Клиент прописал DNS вручную (не через DHCP роутера) Запросы идут напрямую в интернет, минуя фильтр — типичная ситуация с телефонами, где кто-то один раз поставил 1.1.1.1
Нет firewall-правила, блокирующего DNS на 53 порт наружу Любое устройство может обратиться к стороннему DNS в обход роутера

Ну и запросы у вас — сказала база рекламных доменов и продолжила резолвиться в обход. Разберём каждую причину по отдельности, начиная с самого частого случая — отсутствия правильного источника списка.

3. Рецепт: настройка adlist на MikroTik пошагово

Подготовка

Проверь версию RouterOS. Adlist как встроенная фича работает с 7.15 и выше.


/system resource print

Смотри строку version. Если версия ниже 7.15 — обнови роутер перед продолжением. Про безопасное обновление — в разделе профилактики ниже.

Проверь текущий размер DNS-кэша. Adlist хранит записи именно там, и дефолтные 2048 KiB для крупного списка не хватит.


/ip dns print

Результат: увидишь текущий cache-size и cache-used. Если планируешь список на 100+ тысяч доменов — готовься увеличивать кэш до 16-32 МБ.

Шаг 1. Увеличь размер DNS-кэша

Без этого шага крупный список просто не влезет, и ты получишь ошибку в логах вместо рабочей блокировки.


/ip dns set cache-size=32768

Результат: cache-size вырастет до 32 МБ. Для среднего домашнего списка (10-20 тысяч доменов) хватит 8192-16384. Для агрегированных списков вроде StevenBlack hosts — бери 32768 и выше.

Шаг 2. Добавь adlist по URL

Это основной сценарий. Указываешь ссылку на готовый список — RouterOS сам скачивает, парсит и обновляет его по расписанию.


/ip/dns/adlist add url=https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts ssl-verify=no

Результат: список начнёт загружаться в фоне. Через пару минут проверь статус командой ниже.


/ip/dns/adlist/print

Ожидаемый вывод похож на это:


Flags: X - disabled
0 url="https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts" ssl-verify=no match-count=0 name-count=164769

name-count показывает, сколько доменов реально загрузилось. Если там ноль — либо список ещё грузится, либо URL недоступен, смотри troubleshooting.

Шаг 3. Альтернатива: локальный список из файла

Если хочешь контролировать список сам, без внешнего URL — собери свой файл в формате hosts и загрузи его на роутер.


0.0.0.0 example1.com
0.0.0.0 eu1.example.com
0.0.0.0 ads.trackernetwork.com

Файл можно загрузить через Winbox drag-and-drop в Files, либо создать прямо в терминале роутера:


/file/add name=host.txt
/file/edit host.txt contents

После вставки содержимого нажми Ctrl+O для сохранения. Дальше подключи файл к adlist:


/ip/dns/adlist/add file=host.txt

Результат: /ip/dns/adlist/print покажет name-count равный количеству строк в файле. Если там 0 — формат файла нарушен, проверь пробелы между IP и доменом.

Шаг 4. Настрой Whitelist для важных доменов

Рано или поздно adlist заблокирует что-то нужное — платёжный виджет, аналитику CRM клиента, домен корпоративного сервиса. Готовое решение — статичная запись типа FWD, которая имеет приоритет над adlist.


/ip/dns/static/add name=important-domain.com type=FWD

Результат: запросы к important-domain.com будут проходить мимо блокировки, обрабатываясь через обычные DNS-серверы роутера.

Шаг 5. Убедись, что клиенты используют роутер как DNS

Если DHCP-сервер не раздаёт адрес роутера как DNS — вся настройка выше просто не будет использоваться клиентами.


/ip dhcp-server network print

Проверь колонку dns-server. Там должен стоять адрес самого роутера (обычно 192.168.88.1 или твой gateway), а не что-то стороннее.

Шаг 6. Закрой обход через сторонний DNS

Продвинутые пользователи и некоторые приложения (Chrome, Android) прописывают DNS вручную или используют DoH напрямую в обход роутера. Без блокировки прямого DNS-трафика наружу вся защита превращается в решето.


/ip firewall filter add chain=forward protocol=udp dst-port=53 action=reject src-address=192.168.88.0/24 dst-address=!192.168.88.1 comment="block external DNS UDP"
/ip firewall filter add chain=forward protocol=tcp dst-port=53 action=reject src-address=192.168.88.0/24 dst-address=!192.168.88.1 comment="block external DNS TCP"

Результат: любой запрос на порт 53 к стороннему серверу будет отклонён, кроме запросов к самому роутеру. Замени 192.168.88.0/24 на свою подсеть.

Не перепутай порядок правил в firewall — если у тебя уже стоят разрешающие правила для forward выше по списку, эти два добавь именно перед ними или явно проверь итоговую очерёдность через /ip firewall filter print.

4. Проверка: как убедиться, что adlist реально режет рекламу

Настройка без проверки — это не настройка, это надежда. Три команды, которые покажут реальную картину.


/ip/dns/adlist/print

Смотри поля match-count и name-count. match-count растёт по мере того, как клиенты реально дёргают заблокированные домены. Если через сутки match-count всё ещё 0 — либо клиенты не используют роутер как DNS, либо список пустой.


/ip dns cache print

Список закэшированных ответов. Найди среди них известный рекламный домен и проверь, что он резолвится в 0.0.0.0.


/ip dns cache flush

Сброс кэша перед контрольным тестом — чтобы не смотреть на старые записи. После сброса с клиентского компьютера выполни резолв заведомо рекламного домена:


nslookup doubleclick.net 192.168.88.1

Ожидаемый результат: адрес 0.0.0.0. Если возвращается реальный IP — домен не попал в список, либо клиент резолвит мимо роутера.

%%{init: {
  'theme': 'base',
  'themeVariables': {
    'primaryColor': '#ffffff',
    'primaryTextColor': '#1e293b',
    'primaryBorderColor': '#94a3b8',
    'lineColor': '#64748b',
    'fontSize': '15px',
    'fontFamily': 'ui-sans-serif, system-ui, sans-serif'
  },
  'flowchart': {'curve': 'linear', 'nodeSpacing': 50, 'rankSpacing': 50}
}}%%
flowchart TD
    A["Клиент запрашивает домен"] --> B["Роутер MikroTik DNS"]
    B --> C{"Домен в adlist?"}
    C -->|Да| D["Ответ 0.0.0.0"]
    C -->|Нет| E["Запрос к upstream DNS"]
    E --> F["Реальный IP клиенту"]
    style A fill:#f8fafc,stroke:#3b82f6,stroke-width:2px,color:#1e40af
    style D fill:#f8fafc,stroke:#ef4444,stroke-width:2px,color:#b91c1c
    style F fill:#f8fafc,stroke:#22c55e,stroke-width:2px,color:#15803d

5. Осложнения: что ломается и как это чинить

Всё не так плохо, как ты думаешь. Всё намного хуже — потому что рекламные сети постоянно меняют домены, а память роутера не резиновая. Вот типичные проблемы.

Ошибка: adlist read: max cache size reached

Причина: DNS-кэш заполнен, список доменов не помещается целиком.

Решение: увеличь размер кэша, либо уменьши количество источников adlist.


/ip dns set cache-size=65536

Ошибка: name-count остаётся 0 после добавления adlist по URL

Причина: роутер не может достучаться до источника списка — либо нет интернета на момент добавления, либо проблема с SSL-сертификатом.

Решение: проверь доступность URL и попробуй временно отключить проверку сертификата.


/ip/dns/adlist/set 0 ssl-verify=no
/ip/dns/adlist/reload

Проблема: заблокирован нужный сервис (платёжка, CRM, аналитика клиента)

Причина: домен сервиса попал под фильтр слишком широкого списка.

Решение: временно отключи adlist, найди реальный IP через внешний DNS, потом добавь исключение через FWD-запись.


/ip/dns/adlist/set 0 disabled=yes

После диагностики верни adlist обратно и добавь whitelist для конкретного домена, как показано в шаге 4 рецепта.

Проблема: реклама всё ещё показывается на части устройств

Причина: устройство использует не роутер как DNS, а зашитый DoH внутри приложения (типичный случай — Chrome, Firefox, Android 10+).

Решение: закрой сторонний DNS-трафик через firewall, как в шаге 6, либо отключи DoH внутри приложений вручную на клиентских устройствах.

Проблема: роутер тормозит после добавления крупного списка

Причина: на слабых моделях (RB750, hAP lite и подобные) большой объём записей в DNS-кэше съедает всю доступную память.

Решение: используй не агрегированный список на 160+ тысяч записей, а компактный список только рекламных доменов без трекеров и malware-доменов.

6. Альтернативы: чем ещё можно резать рекламу в сети

Adlist — не единственный вариант. Вот с чем его стоит сравнить перед принятием решения.

Вариант Плюсы Минусы
Adlist на MikroTik Не требует отдельного железа, работает нативно, обновляется вместе с RouterOS Нет визуального дашборда, whitelist только через ручные FWD-записи
Pi-hole на отдельном хосте Подробная статистика, удобный веб-интерфейс, гибкие черные и белые списки Нужен отдельный сервер или Raspberry Pi, лишняя точка отказа в сети
Статичные DNS-записи вручную (без adlist) Полный контроль, работает даже на старых версиях RouterOS Тысячи записей вручную не потянешь, список быстро устаревает
Блокировка через сторонний DNS-провайдер (NextDNS, AdGuard DNS) Готовые списки, статистика в облаке, не грузит роутер Зависимость от внешнего сервиса, приватность запросов уходит наружу

Для домашней сети или небольшого офиса adlist на MikroTik закрывает задачу полностью без лишних сущностей. Если нужна детальная аналитика по заблокированным доменам с графиками — тут придётся смотреть в сторону Pi-hole или облачного DNS-провайдера, потому что RouterOS такого дашборда не даст.

7. Профилактика: чтобы блокировка не развалилась через месяц

Мониторинг

Раз в неделю проверяй match-count и name-count через /ip/dns/adlist/print. Резкое падение name-count означает проблему с источником списка.

Автообновление списков

RouterOS проверяет обновления adlist каждые 4 часа автоматически. Ручной reload нужен редко — например, сразу после смены источника.


/ip/dns/adlist/reload

Резервное копирование конфигурации

Перед любыми изменениями DNS-настроек сделай бэкап. Хранить копию нужно не только на самом роутере, но и вне его.


/system backup save name=router-backup-before-adlist
/export file=router-config-export

Что бэкапить: полный backup плюс текстовый export конфигурации. Как часто: перед каждым существенным изменением и раз в месяц по расписанию. Где хранить: вне роутера — на отдельном сервере или в облаке, локальная копия не спасёт при выходе устройства из строя. Как восстановить:


/system backup load name=router-backup-before-adlist

Безопасность

  • ограничь доступ к DNS-серверу роутера по firewall только для локальной подсети
  • не открывай allow-remote-requests=yes на интерфейс, смотрящий в интернет
  • используй SSH-ключи вместо пароля для управления роутером
  • настрой отдельного пользователя с ограниченными правами для повседневного администрирования вместо постоянной работы под admin
  • включи fail2ban-подобную защиту через встроенный address-list и правила firewall для брутфорс-попыток на management-порты
  • ограничь Winbox/API доступ по списку разрешённых IP-адресов
  • отключи неиспользуемые сервисы через /ip service print и /ip service disable

Обновление RouterOS

Как обновлять безопасно: сначала бэкап, потом обновление на тестовом устройстве или в окне обслуживания, не в пятницу вечером. Что проверить до обновления: release notes на предмет изменений в DNS и adlist. Как откатиться: держи под рукой предыдущий образ RouterOS и созданный бэкап конфигурации — откат делается через загрузку старого образа плюс restore backup.

Таблица портов

Порт Протокол Назначение Доступен снаружи?
53 UDP/TCP DNS-запросы клиентов к роутеру Нет, только для локальной подсети
443 TCP Загрузка adlist по HTTPS-ссылке, DoH-запросы Да, исходящий трафик от роутера наружу
8291 TCP Winbox-доступ к роутеру Нет, ограничить по address-list

8. FAQ

Почему блокировка рекламы не работает после настройки adlist?

Чаще всего дело в том, что клиентские устройства используют не роутер как DNS-сервер, а сторонний DNS или встроенный DoH в браузере. Проверь настройки DHCP-сервера и раздачу DNS-адреса, а также firewall-правила на блокировку внешнего DNS-трафика.

Как проверить что adlist работает правильно?

Выполни /ip/dns/adlist/print и посмотри на name-count — там должно быть ненулевое количество доменов. Дальше проверь резолв заведомо рекламного домена командой nslookup с клиента на адрес роутера, ответ должен быть 0.0.0.0.

Что делать если adlist заблокировал нужный сайт?

Добавь статичную DNS-запись типа FWD для конкретного домена через /ip/dns/static/add name=домен type=FWD. Такая запись имеет приоритет над adlist и пропускает запрос дальше на обычный резолвинг.

Чем adlist на MikroTik отличается от Pi-hole?

Adlist работает нативно внутри RouterOS без отдельного сервера, но не даёт визуальной статистики и подробных логов по каждому запросу. Pi-hole требует отдельного хоста, зато даёт удобный веб-интерфейс с графиками и историей заблокированных доменов.

Сколько доменов можно добавить в adlist на MikroTik?

Ограничение зависит от размера DNS-кэша, который ты выделил. Списки на 150-160 тысяч доменов (типа StevenBlack hosts) требуют кэша от 32 МБ и выше. На слабых моделях роутеров с малым объёмом памяти лучше использовать компактные списки.

Как часто обновляется список adlist?

RouterOS автоматически проверяет обновления каждые 4 часа. Принудительный reload через /ip/dns/adlist/reload запускает проверку немедленно, но обычно в этом нет необходимости.

Прогноз

После настройки реклама и трекеры отсекаются на уровне DNS для всей сети разом — без установки чего-либо на телефоны, приставки и смарт-ТВ. Список обновляется сам каждые 4 часа, whitelist через FWD-записи закрывает редкие ложные срабатывания.

Дальше остаётся только следить за match-count раз в неделю и не забывать про бэкап перед апдейтом RouterOS. Если после всех шагов реклама всё равно лезет — пиши в комментарии, разберёмся, что именно не докрутили.

Андрей А.
Author: Андрей А.

Руководитель ИТ / Кризис-менеджер 25 лет в IT: от инженера в МегаФоне до руководителя отдела. Знаю, как выглядит бардак: нестабильные сети, устаревшая инфраструктура, конфликты в команде, раздутые сроки. Помогаю бизнесу выходить из кризиса: навожу порядок в легаси, стабилизирую то, что разваливается, выстраиваю прогнозируемые процессы. Не раз возвращал к жизни ИТ-структуры — знаю цену хаосу. 📍 Ищу проект для полной реорганизации / стабилизации. 📬 Telegram: @over_dude ✉️ mail@it-apteka.com

Оставайтесь на связи

Рецепты от IT-боли. Без воды, без рекламы, без маркетинговой шелухи.

Подписаться на IT-Аптеку →

Мы ВКонтакте

IT-Аптека — советы, новости и помощь рядом.

Вступить в группу ВКонтакте →
Поделитесь:

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Прокрутить вверх