DNS на MikroTik — кеш, статические записи и серверы
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 работает в двух режимах, которые могут быть активны одновременно:
- DNS forwarder (рекурсивная пересылка) — MikroTik принимает DNS-запросы от клиентов и пересылает их вышестоящим серверам (upstream). Полученные ответы сохраняются в локальном кеше, чтобы при повторном запросе отвечать мгновенно, без обращения к upstream.
- Авторитативный DNS (статические записи) — MikroTik хранит собственную базу DNS-записей (A, AAAA, CNAME, MX, TXT и другие) и отвечает на запросы к этим именам напрямую, без обращения к upstream-серверам.
Полный путь DNS-запроса от клиента выглядит так:
- Клиент (ПК, телефон, IoT-устройство) отправляет запрос к MikroTik — например, «какой IP у mikrotik.com?»
- MikroTik проверяет статические записи (
/ip/dns/static). Если есть совпадение — возвращает ответ немедленно. - Если статической записи нет — ищет в кеше (
/ip/dns/cache). Если запись найдена и TTL не истёк — возвращает кешированный ответ. - Если в кеше ничего нет — пересылает запрос upstream-серверам (поле
servers). Получив ответ, сохраняет его в кеш и отдаёт клиенту.
Ключевые параметры /ip/dns
Все настройки DNS-сервера сосредоточены в одном разделе /ip/dns. Вот основные параметры:
| Параметр | Описание | Значение по умолчанию |
|---|---|---|
servers | Список upstream DNS-серверов (через запятую) | (пусто или от провайдера) |
allow-remote-requests | Разрешить DNS-запросы от клиентов сети | no |
cache-size | Размер кеша в KiB | 2048 |
cache-max-ttl | Максимальный TTL записей в кеше | 1w (1 неделя) |
max-udp-packet-size | Максимальный размер UDP-пакета DNS | 4096 |
max-concurrent-queries | Максимум одновременных запросов к upstream | 100 |
max-concurrent-tcp-sessions | Максимум одновременных TCP-сессий DNS | 20 |
query-server-timeout | Таймаут ожидания ответа от upstream | 2s |
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-серверы:
| Провайдер | Основной | Резервный |
|---|---|---|
| Cloudflare | 1.1.1.1 | 1.0.0.1 |
| 8.8.8.8 | 8.8.4.4 | |
| Quad9 | 9.9.9.9 | 149.112.112.112 |
| Yandex | 77.88.8.8 | 77.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:
codenslookup mikrotik.com 192.168.88.1 nslookup nas.local 192.168.88.1
На Linux/macOS:
codedig @192.168.88.1 mikrotik.com dig @192.168.88.1 nas.local host nas.local 192.168.88.1
Если ответ приходит — DNS-сервер на MikroTik работает корректно. Если нет — проверьте:
- Включён ли
allow-remote-requests=yes - Не блокирует ли файрволл порт 53 в цепочке input
- Указан ли 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 и блокировка рекламы.
/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)"