mikrotik-wiki.ru
Главная
Загрузка...

DNS на MikroTik — кеш, статические записи и серверы

RouterOS 7.xIP13 мин730 мар. 2026 г.
TelegramVK

DNS (Domain Name System) — система преобразования доменных имён в IP-адреса. Без работающего DNS-сервера ни одно устройство в вашей сети не сможет открыть сайт по имени, обновить время через NTP или получить обновления. MikroTik RouterOS содержит полнофункциональный DNS-сервер с кешированием, статическими записями, поддержкой регулярных выражений и возможностью выступать DNS-сервером для всей локальной сети.

В этом руководстве мы настроим базовый DNS на MikroTik: зададим upstream-серверы, включим кеширование, создадим статические записи для локальных ресурсов, настроим принудительное перенаправление DNS-запросов и защитим DNS-сервер от доступа извне. Все команды приведены для RouterOS 7.20+.

Примечание: Эта статья описывает базовую настройку DNS. Если вам нужен DNS over HTTPS (DoH) или блокировка рекламы через DNS — смотрите отдельное руководство DNS на MikroTik — DoH и блокировка рекламы.

Описание

Как работает DNS на MikroTik

DNS-сервер RouterOS работает в двух режимах, которые могут быть активны одновременно:

  1. DNS forwarder (рекурсивная пересылка) — MikroTik принимает DNS-запросы от клиентов и пересылает их вышестоящим серверам (upstream). Полученные ответы сохраняются в локальном кеше, чтобы при повторном запросе отвечать мгновенно, без обращения к upstream.
  2. Авторитативный DNS (статические записи) — MikroTik хранит собственную базу DNS-записей (A, AAAA, CNAME, MX, TXT и другие) и отвечает на запросы к этим именам напрямую, без обращения к upstream-серверам.

Полный путь DNS-запроса от клиента выглядит так:

  1. Клиент (ПК, телефон, IoT-устройство) отправляет запрос к MikroTik — например, «какой IP у mikrotik.com?»
  2. MikroTik проверяет статические записи (/ip/dns/static). Если есть совпадение — возвращает ответ немедленно.
  3. Если статической записи нет — ищет в кеше (/ip/dns/cache). Если запись найдена и TTL не истёк — возвращает кешированный ответ.
  4. Если в кеше ничего нет — пересылает запрос upstream-серверам (поле servers). Получив ответ, сохраняет его в кеш и отдаёт клиенту.

Ключевые параметры /ip/dns

Все настройки DNS-сервера сосредоточены в одном разделе /ip/dns. Вот основные параметры:

ПараметрОписаниеЗначение по умолчанию
serversСписок upstream DNS-серверов (через запятую)(пусто или от провайдера)
allow-remote-requestsРазрешить DNS-запросы от клиентов сетиno
cache-sizeРазмер кеша в KiB2048
cache-max-ttlМаксимальный TTL записей в кеше1w (1 неделя)
max-udp-packet-sizeМаксимальный размер UDP-пакета DNS4096
max-concurrent-queriesМаксимум одновременных запросов к upstream100
max-concurrent-tcp-sessionsМаксимум одновременных TCP-сессий DNS20
query-server-timeoutТаймаут ожидания ответа от upstream2s
query-total-timeoutОбщий таймаут на DNS-запрос10s

Для просмотра текущих настроек выполните:

[admin@MikroTik] >
/ip/dns/print

Вывод покажет все параметры, включая динамически полученные серверы (например, от PPPoE или DHCP-клиента WAN-интерфейса).

Зачем MikroTik в роли DNS-сервера

Использование MikroTik как DNS-сервера для LAN даёт несколько преимуществ:

  • Скорость — кешированные записи отдаются мгновенно, без задержки на обращение к внешнему серверу. Для повторных запросов это экономит 20–100 мс.
  • Локальные имена — через статические записи вы можете назначить имена внутренним серверам, принтерам, NAS. Вместо 192.168.88.100 пишете nas.local.
  • Единая точка управления — DNS-сервер, DHCP-сервер и файрволл на одном устройстве. Это упрощает диагностику и настройку.
  • Split DNS — разные ответы для внутренних и внешних ресурсов. Например, portal.company.ru для клиентов LAN резолвится в приватный IP, а извне — в публичный.
  • Контроль — через redirect DNS (dst-nat порт 53) вы можете заставить все устройства использовать ваш DNS, даже если клиент вручную прописал 8.8.8.8.

Настройка

Шаг 1. Upstream DNS-серверы

Первым делом зададим вышестоящие DNS-серверы, к которым MikroTik будет обращаться за ответами. Рекомендуется указать минимум два сервера от разных провайдеров для отказоустойчивости:

[admin@MikroTik] >
# Задаём upstream DNS-серверы: Cloudflare (основной) + Google (резервный)
/ip/dns/set servers=1.1.1.1,8.8.8.8

Популярные публичные DNS-серверы:

ПровайдерОсновнойРезервный
Cloudflare1.1.1.11.0.0.1
Google8.8.8.88.8.4.4
Quad99.9.9.9149.112.112.112
Yandex77.88.8.877.88.8.1

Вы можете указать до 10 upstream-серверов. MikroTik будет отправлять запросы всем серверам параллельно и использовать первый полученный ответ:

[admin@MikroTik] >
# Четыре upstream-сервера для максимальной отказоустойчивости
/ip/dns/set servers=1.1.1.1,1.0.0.1,8.8.8.8,8.8.4.4

Важно: Если ваш MikroTik получает DNS-серверы автоматически от провайдера (через DHCP-клиент или PPPoE), эти серверы отображаются как dynamic-servers в выводе /ip/dns/print. Статически заданные серверы (servers) имеют приоритет над динамическими. Если вы хотите использовать только свои серверы, а не серверы провайдера, отключите получение DNS в настройках DHCP-клиента:

[admin@MikroTik] >
# Отключаем получение DNS от провайдера на WAN-интерфейсе
/ip/dhcp-client/set [find interface=ether1] use-peer-dns=no

Проверьте, что MikroTik может резолвить имена через указанные серверы:

[admin@MikroTik] >
# Тестовый DNS-запрос (выполняется от имени самого роутера)
:resolve mikrotik.com

Если команда вернула IP-адрес — upstream-серверы работают корректно. Если вы видите ошибку dns server failure или timeout — проверьте доступность серверов через ping:

[admin@MikroTik] >
/ping 1.1.1.1 count=3
/ping 8.8.8.8 count=3

Шаг 2. Включение DNS для локальной сети

По умолчанию MikroTik резолвит DNS-запросы только для самого себя (для задач вроде обновления пакетов, NTP, fetch). Чтобы клиенты LAN могли использовать роутер как DNS-сервер, нужно включить параметр allow-remote-requests:

[admin@MikroTik] >
# Разрешаем клиентам LAN отправлять DNS-запросы к MikroTik
/ip/dns/set allow-remote-requests=yes

После этого MikroTik начнёт слушать порт 53 (UDP и TCP) на всех интерфейсах. Клиенты должны знать, что DNS-сервер — это IP-адрес роутера. Если у вас настроен DHCP-сервер, укажите MikroTik как DNS в параметрах DHCP network:

[admin@MikroTik] >
# Указываем роутер как DNS-сервер для клиентов DHCP
/ip/dhcp-server/network/set [find] dns-server=192.168.88.1

Клиенты, которые уже получили DHCP-аренду со старым DNS, обновят настройки при следующем обновлении lease. Чтобы ускорить процесс, можно сбросить все аренды:

[admin@MikroTik] >
# Проверяем текущие настройки DHCP network
/ip/dhcp-server/network/print

Шаг 3. Настройка кеша

Кеш — главное преимущество локального DNS-сервера. Размер кеша по умолчанию (2048 KiB = 2 МБ) достаточен для небольшой домашней сети. Для офиса на 20–50 устройств рекомендуется увеличить до 8192 KiB (8 МБ):

[admin@MikroTik] >
# Увеличиваем кеш и задаём максимальный TTL
/ip/dns/set cache-size=8192 cache-max-ttl=1d

Параметр cache-max-ttl ограничивает максимальное время жизни записи в кеше. Значение 1d (1 день) — разумный компромисс: записи обновляются ежедневно, но при этом не создают лишнего трафика к upstream.

Рекомендации по размеру кеша:

Сценарийcache-sizeПримерное количество записей
Домашняя сеть (1–5 устройств)2048 (по умолчанию)~2000
Малый офис (10–30 устройств)8192~8000
Средний офис (30–100 устройств)16384~15000
Крупная сеть (100+ устройств)32768~30000

Шаг 4. Статические DNS-записи

Статические записи позволяют задать собственные DNS-имена для ресурсов в локальной сети. Это удобно для серверов, NAS, принтеров, камер видеонаблюдения и других устройств с фиксированным IP.

Запись типа A (имя -> IPv4)

[admin@MikroTik] >
# Локальный файловый сервер
/ip/dns/static/add name=nas.local address=192.168.88.100

# Сервер видеонаблюдения
/ip/dns/static/add name=nvr.local address=192.168.88.101

# Сетевой принтер
/ip/dns/static/add name=printer.local address=192.168.88.102

# Роутер (удобный alias)
/ip/dns/static/add name=router.local address=192.168.88.1

Запись типа CNAME (alias)

[admin@MikroTik] >
# files.local — alias для nas.local
/ip/dns/static/add name=files.local type=CNAME cname=nas.local

Запись типа MX (почта)

[admin@MikroTik] >
# Почтовый сервер для домена company.local
/ip/dns/static/add name=company.local type=MX mx-exchange=mail.company.local mx-preference=10
/ip/dns/static/add name=mail.company.local address=192.168.88.50

Запись типа TXT

[admin@MikroTik] >
# SPF-запись для внутреннего почтового домена
/ip/dns/static/add name=company.local type=TXT text="v=spf1 ip4:192.168.88.50 -all"

Проверьте созданные записи:

[admin@MikroTik] >
/ip/dns/static/print

Для проверки работоспособности выполните resolve с самого MikroTik:

routeros
:resolve nas.local
# Ожидаемый результат: 192.168.88.100

Шаг 5. Split DNS для внутренних сервисов

Split DNS — это техника, при которой одно и то же доменное имя резолвится в разные IP-адреса в зависимости от того, откуда пришёл запрос. На MikroTik это реализуется через статические записи: клиенты LAN обращаются к DNS-серверу MikroTik и получают внутренний IP, а внешние клиенты используют публичный DNS, который возвращает внешний IP.

Типичный пример — корпоративный портал:

[admin@MikroTik] >
# Внутренние клиенты получают приватный IP веб-сервера
/ip/dns/static/add name=portal.company.ru address=192.168.88.50

# Внутренние клиенты получают приватный IP почтового сервера
/ip/dns/static/add name=mail.company.ru address=192.168.88.51

# VPN-сервер тоже резолвится внутри (например, для split tunnel)
/ip/dns/static/add name=vpn.company.ru address=192.168.88.1

Таким образом, когда сотрудник в офисе открывает portal.company.ru, трафик идёт напрямую к серверу по приватному IP (без выхода в интернет и обратного NAT). А внешний клиент получает публичный IP через провайдерский DNS.

Шаг 6. Regexp в статических записях (RouterOS 7)

RouterOS 7 поддерживает регулярные выражения в статических DNS-записях. Это мощный инструмент для массовых правил без перечисления каждого домена.

[admin@MikroTik] >
# Все поддомены *.local резолвятся в 192.168.88.1
/ip/dns/static/add regexp=".*\\.local\quot; address=192.168.88.1

# Все поддомены *.lan резолвятся в 192.168.88.1
/ip/dns/static/add regexp=".*\\.lan\quot; address=192.168.88.1

# Все поддомены *.office.company.ru — на внутренний сервер
/ip/dns/static/add regexp=".*\\.office\\.company\\.ru\quot; address=192.168.88.50

Внимание: Regexp-записи проверяются при каждом DNS-запросе и потребляют больше CPU, чем обычные статические записи. В большинстве случаев достаточно обычных A-записей. Используйте regexp только когда нужно покрыть множество поддоменов по шаблону.

Порядок приоритета DNS-записей: точное совпадение имени -> regexp-записи (в порядке добавления) -> кеш -> upstream.

Просмотр regexp-записей:

[admin@MikroTik] >
/ip/dns/static/print where regexp!=""

Шаг 7. Перенаправление всех DNS-запросов на MikroTik (DNS hijacking)

Некоторые устройства (Smart TV, IoT, приложения Google) игнорируют DNS, полученный по DHCP, и отправляют запросы напрямую к жёстко прописанным серверам (чаще всего 8.8.8.8). Чтобы контролировать весь DNS-трафик в сети, нужно перенаправить все запросы на порт 53 к MikroTik через NAT-правило:

[admin@MikroTik] >
# Перенаправляем все DNS-запросы клиентов LAN на роутер (UDP)
/ip/firewall/nat/add \
  chain=dstnat \
  protocol=udp \
  dst-port=53 \
  src-address=192.168.88.0/24 \
  dst-address=!192.168.88.1 \
  action=redirect \
  to-ports=53 \
  comment="DNS redirect: force all DNS to router (UDP)"

# То же для TCP (некоторые клиенты используют TCP для DNS)
/ip/firewall/nat/add \
  chain=dstnat \
  protocol=tcp \
  dst-port=53 \
  src-address=192.168.88.0/24 \
  dst-address=!192.168.88.1 \
  action=redirect \
  to-ports=53 \
  comment="DNS redirect: force all DNS to router (TCP)"

Ключевой момент — условие dst-address=!192.168.88.1. Без него правило будет перехватывать и запросы, адресованные самому роутеру, создавая петлю. Мы перехватываем только запросы, которые клиент отправляет мимо роутера (например, напрямую к 8.8.8.8).

После добавления правил проверьте, что трафик перехватывается:

[admin@MikroTik] >
# Смотрим счётчики правил NAT
/ip/firewall/nat/print stats where comment~"DNS redirect"

Если счётчик bytes растёт — правила работают.

Шаг 8. Безопасность DNS — ограничение доступа

Если у вашего MikroTik есть публичный IP-адрес и включён allow-remote-requests=yes, DNS-сервер доступен из интернета. Это серьёзная угроза безопасности: открытый DNS-резолвер будет найден ботами за считанные часы и использован для DNS amplification DDoS-атак.

Обязательно заблокируйте доступ к DNS извне:

[admin@MikroTik] >
# Разрешаем DNS-запросы только из LAN
/ip/firewall/filter/add \
  chain=input \
  protocol=udp \
  dst-port=53 \
  src-address=192.168.88.0/24 \
  action=accept \
  comment="DNS: allow from LAN (UDP)"

/ip/firewall/filter/add \
  chain=input \
  protocol=tcp \
  dst-port=53 \
  src-address=192.168.88.0/24 \
  action=accept \
  comment="DNS: allow from LAN (TCP)"

# Блокируем DNS-запросы с WAN
/ip/firewall/filter/add \
  chain=input \
  protocol=udp \
  dst-port=53 \
  in-interface-list=WAN \
  action=drop \
  comment="DNS: block from WAN (UDP)"

/ip/firewall/filter/add \
  chain=input \
  protocol=tcp \
  dst-port=53 \
  in-interface-list=WAN \
  action=drop \
  comment="DNS: block from WAN (TCP)"

Если у вас несколько подсетей (VLAN), используйте address-list вместо множества правил:

[admin@MikroTik] >
# Все разрешённые подсети в одном списке
/ip/firewall/address-list/add list=dns-allowed address=192.168.88.0/24
/ip/firewall/address-list/add list=dns-allowed address=10.10.10.0/24
/ip/firewall/address-list/add list=dns-allowed address=10.10.20.0/24

# Одно правило для всех подсетей
/ip/firewall/filter/add \
  chain=input \
  protocol=udp \
  dst-port=53 \
  src-address-list=dns-allowed \
  action=accept \
  comment="DNS: allow from trusted subnets"

Совет: Правила accept для DNS должны располагаться перед общим правилом drop в цепочке input. Используйте параметр place-before при добавлении или вручную переместите правила в нужную позицию.

Проверка

Проверка на MikroTik

[admin@MikroTik] >
# Текущие настройки DNS
/ip/dns/print

# Resolve домена (запрос от имени роутера)
:resolve mikrotik.com
:resolve nas.local

# Статистика DNS-сервера
/ip/dns/print detail

# Количество записей в кеше
/ip/dns/cache/print count-only

# Содержимое кеша (все записи)
/ip/dns/cache/print

# Поиск конкретного домена в кеше
/ip/dns/cache/print where name~"google"

# Записи с отрицательным кешем (NXDOMAIN)
/ip/dns/cache/print where type=NXDOMAIN

# Просмотр статических записей
/ip/dns/static/print

# Сброс кеша (полная очистка)
/ip/dns/cache/flush

Команда /ip/dns/cache/flush полезна при отладке: после смены upstream-серверов или добавления статических записей сбросьте кеш, чтобы изменения вступили в силу немедленно.

Проверка с клиентского компьютера

На Windows:

code
nslookup mikrotik.com 192.168.88.1
nslookup nas.local 192.168.88.1

На Linux/macOS:

code
dig @192.168.88.1 mikrotik.com
dig @192.168.88.1 nas.local
host nas.local 192.168.88.1

Если ответ приходит — DNS-сервер на MikroTik работает корректно. Если нет — проверьте:

  1. Включён ли allow-remote-requests=yes
  2. Не блокирует ли файрволл порт 53 в цепочке input
  3. Указан ли IP роутера как DNS-сервер на клиенте (проверьте ipconfig /all на Windows)

Мониторинг нагрузки на DNS

Для оценки нагрузки на DNS-сервер используйте packet sniffer или torch:

[admin@MikroTik] >
# Мониторинг DNS-трафика в реальном времени (порт 53)
/tool/torch interface=bridge protocol=udp dst-port=53 duration=30

# Количество записей в кеше — если близко к лимиту, увеличьте cache-size
/ip/dns/cache/print count-only

Также полезно следить за количеством кешированных записей. Если кеш постоянно заполнен на 90%+, увеличьте cache-size.

Типичные ошибки

1. DNS не работает для клиентов LAN

Симптом: MikroTik сам резолвит имена (:resolve работает), но клиенты не могут — nslookup к IP роутера выдаёт таймаут.

Причина: Не включён allow-remote-requests.

Решение:

[admin@MikroTik] >
/ip/dns/set allow-remote-requests=yes

2. DNS не работает вообще — timeout

Симптом: Ни :resolve на MikroTik, ни клиенты не получают DNS-ответов.

Причина: Не заданы upstream-серверы, либо они недоступны (нет интернет-соединения, блокировка провайдером).

Решение:

[admin@MikroTik] >
# Проверяем, заданы ли серверы
/ip/dns/print

# Проверяем доступность upstream
/ping 1.1.1.1 count=3

# Если серверы провайдера блокируют — используем публичные
/ip/dns/set servers=1.1.1.1,8.8.8.8

3. Кеш переполнен — медленная работа DNS

Симптом: DNS-запросы обрабатываются медленно, в логах могут появляться предупреждения о кеше.

Причина: Маленький cache-size для количества устройств в сети.

Решение:

[admin@MikroTik] >
# Сбрасываем кеш
/ip/dns/cache/flush

# Увеличиваем размер кеша
/ip/dns/set cache-size=16384

4. Статические записи не резолвятся

Симптом: Обычные домены работают, но nas.local или другие статические записи возвращают NXDOMAIN.

Причина: Опечатка в имени записи, или клиент обращается к другому DNS-серверу (не к MikroTik).

Решение:

[admin@MikroTik] >
# Проверяем статические записи
/ip/dns/static/print

# Проверяем на самом роутере
:resolve nas.local

# Убеждаемся, что DHCP выдаёт IP роутера как DNS
/ip/dhcp-server/network/print

На клиенте проверьте, какой DNS используется: ipconfig /all (Windows) или resolvectl status (Linux). Если указан DNS-сервер провайдера — клиент не использует MikroTik.

5. Устройства обходят DNS-сервер MikroTik

Симптом: Статические записи и блокировки не работают на некоторых устройствах (Smart TV, Chromecast, Android-устройства с прошитым DNS).

Причина: Устройство игнорирует DHCP-опцию DNS и отправляет запросы напрямую (чаще всего к 8.8.8.8 или 8.8.4.4).

Решение: Настройте DNS redirect (Шаг 7). Правило dst-nat с action=redirect перехватит все запросы на порт 53 и направит их на MikroTik.

6. Открытый DNS resolver — DDoS amplification

Симптом: Высокая нагрузка на CPU, аномально большой DNS-трафик на WAN-интерфейсе, жалобы от провайдера.

Причина: MikroTik с публичным IP и allow-remote-requests=yes без файрволла — открытый resolver.

Решение: Добавьте правила файрволла из Шага 8. Заблокируйте доступ к порту 53 с WAN-интерфейса.

[admin@MikroTik] >
# Экстренная блокировка DNS из интернета
/ip/firewall/filter/add \
  chain=input \
  protocol=udp \
  dst-port=53 \
  in-interface-list=WAN \
  action=drop \
  place-before=0

7. Upstream-серверы провайдера медленные или ненадёжные

Симптом: DNS-запросы работают, но с большой задержкой (200+ мс). Иногда часть доменов не резолвится.

Причина: DNS-серверы провайдера (полученные по DHCP) перегружены или работают нестабильно.

Решение:

[admin@MikroTik] >
# Отключаем DNS от провайдера
/ip/dhcp-client/set [find interface=ether1] use-peer-dns=no

# Задаём надёжные публичные серверы
/ip/dns/set servers=1.1.1.1,8.8.8.8

# Сбрасываем кеш для применения изменений
/ip/dns/cache/flush

Полная конфигурация в одном блоке

Для удобства — все настройки из статьи собраны вместе:

[admin@MikroTik] >
# === DNS: базовая настройка ===

# 1. Upstream-серверы
/ip/dns/set \
  servers=1.1.1.1,8.8.8.8 \
  allow-remote-requests=yes \
  cache-size=8192 \
  cache-max-ttl=1d

# 2. Отключаем DNS от провайдера (опционально)
/ip/dhcp-client/set [find interface=ether1] use-peer-dns=no

# 3. MikroTik как DNS в DHCP
/ip/dhcp-server/network/set [find] dns-server=192.168.88.1

# 4. Статические записи
/ip/dns/static/add name=router.local address=192.168.88.1
/ip/dns/static/add name=nas.local address=192.168.88.100
/ip/dns/static/add name=printer.local address=192.168.88.102

# 5. DNS redirect — принудительное перенаправление
/ip/firewall/nat/add \
  chain=dstnat \
  protocol=udp \
  dst-port=53 \
  src-address=192.168.88.0/24 \
  dst-address=!192.168.88.1 \
  action=redirect \
  to-ports=53 \
  comment="DNS redirect: force all DNS to router (UDP)"

/ip/firewall/nat/add \
  chain=dstnat \
  protocol=tcp \
  dst-port=53 \
  src-address=192.168.88.0/24 \
  dst-address=!192.168.88.1 \
  action=redirect \
  to-ports=53 \
  comment="DNS redirect: force all DNS to router (TCP)"

# 6. Безопасность — блокируем DNS с WAN
/ip/firewall/filter/add \
  chain=input \
  protocol=udp \
  dst-port=53 \
  in-interface-list=WAN \
  action=drop \
  comment="DNS: block from WAN (UDP)"

/ip/firewall/filter/add \
  chain=input \
  protocol=tcp \
  dst-port=53 \
  in-interface-list=WAN \
  action=drop \
  comment="DNS: block from WAN (TCP)"

DNS vs DoH: когда нужно больше

Базовая настройка DNS, описанная в этой статье, подходит для большинства домашних и офисных сетей. Однако у классического DNS есть ограничение — запросы к upstream-серверам идут открытым текстом по UDP/53. Это значит, что провайдер видит все ваши DNS-запросы и теоретически может их подменять.

Если вам нужно:

  • Зашифровать DNS-трафик к upstream — настройте DNS over HTTPS (DoH)
  • Заблокировать рекламу на уровне DNS — используйте статические записи с адресом 0.0.0.0 или внешние списки
  • Автоматически обновлять списки блокировки — настройте скрипт с планировщиком

Все эти темы подробно разобраны в статье DNS на MikroTik — DoH и блокировка рекламы.

[admin@MikroTik] >
/ip/dns/print
# Задаём upstream DNS-серверы: Cloudflare (основной) + Google (резервный)
/ip/dns/set servers=1.1.1.1,8.8.8.8
# Четыре upstream-сервера для максимальной отказоустойчивости
/ip/dns/set servers=1.1.1.1,1.0.0.1,8.8.8.8,8.8.4.4
# Отключаем получение DNS от провайдера на WAN-интерфейсе
/ip/dhcp-client/set [find interface=ether1] use-peer-dns=no
# Тестовый DNS-запрос (выполняется от имени самого роутера)
:resolve mikrotik.com
/ping 1.1.1.1 count=3
/ping 8.8.8.8 count=3
# Разрешаем клиентам LAN отправлять DNS-запросы к MikroTik
/ip/dns/set allow-remote-requests=yes
# Указываем роутер как DNS-сервер для клиентов DHCP
/ip/dhcp-server/network/set [find] dns-server=192.168.88.1
# Проверяем текущие настройки DHCP network
/ip/dhcp-server/network/print
# Увеличиваем кеш и задаём максимальный TTL
/ip/dns/set cache-size=8192 cache-max-ttl=1d
# Локальный файловый сервер
/ip/dns/static/add name=nas.local address=192.168.88.100

# Сервер видеонаблюдения
/ip/dns/static/add name=nvr.local address=192.168.88.101

# Сетевой принтер
/ip/dns/static/add name=printer.local address=192.168.88.102

# Роутер (удобный alias)
/ip/dns/static/add name=router.local address=192.168.88.1
# files.local — alias для nas.local
/ip/dns/static/add name=files.local type=CNAME cname=nas.local
# Почтовый сервер для домена company.local
/ip/dns/static/add name=company.local type=MX mx-exchange=mail.company.local mx-preference=10
/ip/dns/static/add name=mail.company.local address=192.168.88.50
# SPF-запись для внутреннего почтового домена
/ip/dns/static/add name=company.local type=TXT text="v=spf1 ip4:192.168.88.50 -all"
/ip/dns/static/print
:resolve nas.local
# Ожидаемый результат: 192.168.88.100
# Внутренние клиенты получают приватный IP веб-сервера
/ip/dns/static/add name=portal.company.ru address=192.168.88.50

# Внутренние клиенты получают приватный IP почтового сервера
/ip/dns/static/add name=mail.company.ru address=192.168.88.51

# VPN-сервер тоже резолвится внутри (например, для split tunnel)
/ip/dns/static/add name=vpn.company.ru address=192.168.88.1
# Все поддомены *.local резолвятся в 192.168.88.1
/ip/dns/static/add regexp=".*\\.local\quot; address=192.168.88.1

# Все поддомены *.lan резолвятся в 192.168.88.1
/ip/dns/static/add regexp=".*\\.lan\quot; address=192.168.88.1

# Все поддомены *.office.company.ru — на внутренний сервер
/ip/dns/static/add regexp=".*\\.office\\.company\\.ru\quot; address=192.168.88.50
/ip/dns/static/print where regexp!=""
# Перенаправляем все DNS-запросы клиентов LAN на роутер (UDP)
/ip/firewall/nat/add \
  chain=dstnat \
  protocol=udp \
  dst-port=53 \
  src-address=192.168.88.0/24 \
  dst-address=!192.168.88.1 \
  action=redirect \
  to-ports=53 \
  comment="DNS redirect: force all DNS to router (UDP)"

# То же для TCP (некоторые клиенты используют TCP для DNS)
/ip/firewall/nat/add \
  chain=dstnat \
  protocol=tcp \
  dst-port=53 \
  src-address=192.168.88.0/24 \
  dst-address=!192.168.88.1 \
  action=redirect \
  to-ports=53 \
  comment="DNS redirect: force all DNS to router (TCP)"
# Смотрим счётчики правил NAT
/ip/firewall/nat/print stats where comment~"DNS redirect"
# Разрешаем DNS-запросы только из LAN
/ip/firewall/filter/add \
  chain=input \
  protocol=udp \
  dst-port=53 \
  src-address=192.168.88.0/24 \
  action=accept \
  comment="DNS: allow from LAN (UDP)"

/ip/firewall/filter/add \
  chain=input \
  protocol=tcp \
  dst-port=53 \
  src-address=192.168.88.0/24 \
  action=accept \
  comment="DNS: allow from LAN (TCP)"

# Блокируем DNS-запросы с WAN
/ip/firewall/filter/add \
  chain=input \
  protocol=udp \
  dst-port=53 \
  in-interface-list=WAN \
  action=drop \
  comment="DNS: block from WAN (UDP)"

/ip/firewall/filter/add \
  chain=input \
  protocol=tcp \
  dst-port=53 \
  in-interface-list=WAN \
  action=drop \
  comment="DNS: block from WAN (TCP)"
# Все разрешённые подсети в одном списке
/ip/firewall/address-list/add list=dns-allowed address=192.168.88.0/24
/ip/firewall/address-list/add list=dns-allowed address=10.10.10.0/24
/ip/firewall/address-list/add list=dns-allowed address=10.10.20.0/24

# Одно правило для всех подсетей
/ip/firewall/filter/add \
  chain=input \
  protocol=udp \
  dst-port=53 \
  src-address-list=dns-allowed \
  action=accept \
  comment="DNS: allow from trusted subnets"
# Текущие настройки DNS
/ip/dns/print

# Resolve домена (запрос от имени роутера)
:resolve mikrotik.com
:resolve nas.local

# Статистика DNS-сервера
/ip/dns/print detail

# Количество записей в кеше
/ip/dns/cache/print count-only

# Содержимое кеша (все записи)
/ip/dns/cache/print

# Поиск конкретного домена в кеше
/ip/dns/cache/print where name~"google"

# Записи с отрицательным кешем (NXDOMAIN)
/ip/dns/cache/print where type=NXDOMAIN

# Просмотр статических записей
/ip/dns/static/print

# Сброс кеша (полная очистка)
/ip/dns/cache/flush
nslookup mikrotik.com 192.168.88.1
nslookup nas.local 192.168.88.1
dig @192.168.88.1 mikrotik.com
dig @192.168.88.1 nas.local
host nas.local 192.168.88.1
# Мониторинг DNS-трафика в реальном времени (порт 53)
/tool/torch interface=bridge protocol=udp dst-port=53 duration=30

# Количество записей в кеше — если близко к лимиту, увеличьте cache-size
/ip/dns/cache/print count-only
/ip/dns/set allow-remote-requests=yes
# Проверяем, заданы ли серверы
/ip/dns/print

# Проверяем доступность upstream
/ping 1.1.1.1 count=3

# Если серверы провайдера блокируют — используем публичные
/ip/dns/set servers=1.1.1.1,8.8.8.8
# Сбрасываем кеш
/ip/dns/cache/flush

# Увеличиваем размер кеша
/ip/dns/set cache-size=16384
# Проверяем статические записи
/ip/dns/static/print

# Проверяем на самом роутере
:resolve nas.local

# Убеждаемся, что DHCP выдаёт IP роутера как DNS
/ip/dhcp-server/network/print
# Экстренная блокировка DNS из интернета
/ip/firewall/filter/add \
  chain=input \
  protocol=udp \
  dst-port=53 \
  in-interface-list=WAN \
  action=drop \
  place-before=0
# Отключаем DNS от провайдера
/ip/dhcp-client/set [find interface=ether1] use-peer-dns=no

# Задаём надёжные публичные серверы
/ip/dns/set servers=1.1.1.1,8.8.8.8

# Сбрасываем кеш для применения изменений
/ip/dns/cache/flush
# === DNS: базовая настройка ===

# 1. Upstream-серверы
/ip/dns/set \
  servers=1.1.1.1,8.8.8.8 \
  allow-remote-requests=yes \
  cache-size=8192 \
  cache-max-ttl=1d

# 2. Отключаем DNS от провайдера (опционально)
/ip/dhcp-client/set [find interface=ether1] use-peer-dns=no

# 3. MikroTik как DNS в DHCP
/ip/dhcp-server/network/set [find] dns-server=192.168.88.1

# 4. Статические записи
/ip/dns/static/add name=router.local address=192.168.88.1
/ip/dns/static/add name=nas.local address=192.168.88.100
/ip/dns/static/add name=printer.local address=192.168.88.102

# 5. DNS redirect — принудительное перенаправление
/ip/firewall/nat/add \
  chain=dstnat \
  protocol=udp \
  dst-port=53 \
  src-address=192.168.88.0/24 \
  dst-address=!192.168.88.1 \
  action=redirect \
  to-ports=53 \
  comment="DNS redirect: force all DNS to router (UDP)"

/ip/firewall/nat/add \
  chain=dstnat \
  protocol=tcp \
  dst-port=53 \
  src-address=192.168.88.0/24 \
  dst-address=!192.168.88.1 \
  action=redirect \
  to-ports=53 \
  comment="DNS redirect: force all DNS to router (TCP)"

# 6. Безопасность — блокируем DNS с WAN
/ip/firewall/filter/add \
  chain=input \
  protocol=udp \
  dst-port=53 \
  in-interface-list=WAN \
  action=drop \
  comment="DNS: block from WAN (UDP)"

/ip/firewall/filter/add \
  chain=input \
  protocol=tcp \
  dst-port=53 \
  in-interface-list=WAN \
  action=drop \
  comment="DNS: block from WAN (TCP)"
IP / DNS на MikroTik — кеш, статические записи и серверы