Tutorial
Блокировка рекламы на MikroTik AdList
Блокируйте рекламу на уровне DNS на роутерах MikroTik с помощью встроенного AdList в RouterOS v7.15+ — без Pi-hole и без лишнего железа.
Резюме MikroTik AdList (RouterOS v7.15+) блокирует рекламу на уровне DNS для каждого устройства в локальной сети — без Pi-hole и без дополнительного оборудования. В этом руководстве рассмотрены предварительные требования, настройка публичных и пользовательских списков, тестирование, белые списки и ограничения, о которых стоит помнить (внутриприложенческие баннеры и видеореклама YouTube вне зоны досягаемости DNS-фильтрации).
Почему AdList, а не Pi-hole?
AdList — это встроенный в MikroTik блокировщик рекламы на основе DNS. В отличие от контейнера Pi-hole, AdList работает нативно в RouterOS и не требует отдельного устройства, контейнерного runtime или перенастройки DNS. После включения он фильтрует запросы к известным рекламным серверам (записи A и AAAA), возвращая 0.0.0.0 вместо реального IP. Каждый телефон, телевизор, консоль и IoT-устройство в локальной сети автоматически получают блокировку, пока используют MikroTik в качестве DNS.
По сравнению с эксплуатацией Pi-hole у AdList три операционных преимущества: настройка — одна вкладка внутри IP → DNS, а не разворачивание отдельного хоста; обновления приходят вместе с апгрейдом RouterOS, а не отдельным циклом apt; и в сети на одну точку отказа меньше. Цена вопроса — RAM: большие списки расходуют кэш, и его, возможно, придётся увеличить.
Подготовка роутера
Перед тем как AdList станет полезен, должны выполняться два условия:
Обновите RouterOS до v7.15 или новее. AdList появился в v7.15. Зайдите в System → Packages → Check for updates и установите последний стабильный релиз. На более старых релизах пути /ip dns adlist просто нет.
Увеличьте размер DNS-кэша. Adlist-ы хранятся внутри DNS-кэша; размер по умолчанию слишком мал для сколько-нибудь значимого списка и приводит к ошибке adlist read: max cache size reached. В IP → DNS поднимите Cache size до значения, достаточного для ваших списков — для роутера со 128 МБ RAM и одним-двумя списками 30–40 МБ — разумный ориентир.
/ip/dns set cache-size=40000
Убедитесь, что Allow Remote Requests включён, чтобы устройства локальной сети могли обращаться к роутеру за DNS.
Добавьте публичный adlist
Публичные блок-списки вроде hosts-файла StevenBlack дают широкое покрытие рекламы и трекеров уже в первый день. В IP → DNS → Adlist нажмите +, вставьте URL списка и отключите SSL Verify, если вы ещё не импортировали удостоверяющий центр. После парсинга список появится с количеством совпадений и количеством имён.
Эквивалент в CLI:
/ip/dns/adlist add \ url=https://raw.githubusercontent.com/StevenBlack/hosts/master/hosts \ ssl-verify=noЧтобы посмотреть, сколько доменов загрузилось и сколько запросов уже заблокировано:
/ip/dns/adlist/printmatch-count — количество заблокированных запросов; name-count — количество записей, которые содержит список.
Белые списки и forwarders
Иногда нужный домен оказывается в публичном блок-листе. Добавьте статическую запись forward, чтобы AdList пропускал именно этот домен:
/ip/dns/static add name=example.com type=FWDForwarders также позволяют задать upstream-резолверы (Quad9, Cloudflare) для конкретных доменов. Сначала определите пул forwarder, затем направьте статические записи на него:
/ip/dns/forwarders add dns-servers=1.1.1.1,8.8.8.8 name=my-fwd/ip/dns/static add name=example.com type=FWD forward-to=my-fwdСоздайте и импортируйте свой блок-список
Если нужен полный контроль, составьте список самостоятельно. Каждая строка — 0.0.0.0 домен:
0.0.0.0 adverts.com0.0.0.0 click.adclick.com0.0.0.0 malware-site.com0.0.0.0 fraud.scam.comСоздайте или загрузите файл на RouterOS:
/file/add name=adbl.txt/file/edit adbl.txt contentsВведите список доменов, нажмите Ctrl-O для сохранения и подключите файл к AdList:
/ip/dns/adlist add file=adbl.txtПодтвердите, что файл распарсился, проверив name-count через /ip/dns/adlist/print.
Тестирование и диагностика
Очистите DNS-кэш на клиенте и сделайте запрос к известному рекламному домену:
ipconfig /flushdnsnslookup someadserver.comОтвет должен прийти как 0.0.0.0, а не реальный IP.
Следите за match-count со временем, чтобы понять, действительно ли список приносит пользу. Если видите adlist read: max cache size reached, увеличьте кэш или уберите один список. Для более глубокого DNS-харднинга в пару к этому посмотрите наши гайды по настройке DNS over HTTPS и блокировке трафика в страну.
Обслуживание и ограничения
- Автоматические обновления. RouterOS освежает adlist-ы каждые четыре часа. Ручная перезагрузка через
/ip/dns/adlist/reloadдоступна, но обычно не нужна. - Бюджет памяти. Большие списки едят RAM. Подбирайте число и размер списков под свободную память устройства; у hAP ac² запас совсем другой, чем у RB5009.
- Блокировка только по DNS. AdList не способен блокировать рекламу, отдаваемую с того же хоста, что и контент (особенно видеореклама YouTube). Если она вас раздражает, добавьте расширение в браузер.
- Обход DoH/DoT. Клиенты со своими DoH- или DoT-резолверами полностью обходят DNS роутера. Заблокируйте исходящий DNS куда-либо, кроме самого роутера, правилом файрвола, чтобы навязать политику.
Масштабируйте блокировку рекламы на все площадки
Поддерживать AdList на одном роутере легко. Поддерживать его на парке устройств — с индивидуальными белыми списками для клиента, бюджетами размера списка под модель и неизбежным расхождением между площадками — задача сложнее, чем кажется.
MKController доставляет одинаковую конфигурацию AdList, пользовательские списки и правила forwarder на каждый MikroTik в вашем инвентаре одной операцией. Когда match-count резко падает или в логе начинают появляться ошибки max cache size, дашборд показывает пострадавшие устройства, чтобы вы починили их раньше, чем заметят клиенты.