DHCP Server
DHCP Server на MikroTik — полное руководство
Это руководство охватывает полную настройку DHCP Server на MikroTik RouterOS 7.x: от базового развёртывания до тонкой настройки опций, статических привязок, relay между VLAN и диагностики проблем. После выполнения всех шагов вы получите стабильно работающий DHCP-сервер для сети любого масштаба.
Инструкция актуальна для RouterOS 7.x и подходит для всех моделей MikroTik с достаточным объёмом памяти: hAP ax2, hAP ax3, RB5009, CCR2004, CCR2116 и других.
1. Что такое DHCP и зачем он нужен
DHCP (Dynamic Host Configuration Protocol) — протокол автоматической выдачи сетевых параметров клиентам. Без DHCP каждому устройству в сети пришлось бы вручную прописывать IP-адрес, маску подсети, шлюз и DNS-серверы. В сети на 10 устройств это терпимо, в сети на 200 — невозможно.
DHCP-сервер на MikroTik выполняет четыре задачи:
- Выдаёт IP-адрес из заданного пула
- Сообщает сетевые параметры: шлюз, DNS, домен, NTP и любые другие опции
- Ведёт таблицу аренд (lease) — кто какой адрес получил и когда
- Поддерживает статические привязки — фиксированный IP для конкретного MAC-адреса
Процесс получения адреса проходит в четыре шага (DORA): клиент отправляет Discover, сервер отвечает Offer, клиент подтверждает Request, сервер фиксирует Acknowledge. Всё это происходит за доли секунды.
В RouterOS DHCP-сервер состоит из трёх связанных сущностей:
- IP Pool — диапазон адресов для выдачи
- DHCP Server — сам процесс, привязанный к интерфейсу
- DHCP Network — сетевые параметры (gateway, DNS, domain и прочие)
Рассмотрим каждый компонент по порядку.
2. Создание IP Pool
IP Pool определяет диапазон адресов, которые DHCP-сервер может выдавать клиентам. Важно не включать в пул адрес самого роутера и другие статически назначенные адреса в сети (серверы, принтеры, точки доступа).
Создадим пул для типовой офисной сети 192.168.88.0/24, оставив первые 9 адресов для инфраструктуры:
[admin@MikroTik] >/ip/pool add name=pool-lan ranges=192.168.88.10-192.168.88.254
Если нужно исключить часть диапазона из середины (например, адреса 192.168.88.200-192.168.88.210 зарезервированы для серверов), создайте пул с разрывом:
[admin@MikroTik] >/ip/pool add name=pool-lan ranges=192.168.88.10-192.168.88.199,192.168.88.211-192.168.88.254
Для сети с несколькими VLAN создайте отдельные пулы:
[admin@MikroTik] >/ip/pool add name=pool-vlan10 ranges=10.10.10.10-10.10.10.254 /ip/pool add name=pool-vlan20 ranges=10.10.20.10-10.10.20.254 /ip/pool add name=pool-vlan30 ranges=10.10.30.10-10.10.30.254
Проверьте созданные пулы:
[admin@MikroTik] >/ip/pool print
Параметр next-pool позволяет указать резервный пул — если адреса в основном пуле закончатся, DHCP переключится на следующий. Это полезно для гостевых сетей с высокой текучестью:
[admin@MikroTik] >/ip/pool add name=pool-guest-primary ranges=10.10.99.10-10.10.99.200 /ip/pool add name=pool-guest-overflow ranges=10.10.99.201-10.10.99.254 /ip/pool set pool-guest-primary next-pool=pool-guest-overflow
3. Настройка DHCP Server
После создания пула добавим сам DHCP-сервер. Он привязывается к конкретному интерфейсу — обычно это bridge, VLAN-интерфейс или физический порт.
Базовая настройка для LAN:
[admin@MikroTik] >/ip/dhcp-server add name=dhcp-lan interface=bridge1 address-pool=pool-lan lease-time=8h
Параметры:
- name — имя сервера, используется для идентификации в логах и настройках
- interface — интерфейс, на котором сервер принимает DHCP-запросы
- address-pool — ранее созданный пул адресов
- lease-time — время аренды (подробнее в разделе рекомендаций)
Далее настройте сетевые параметры, которые сервер будет передавать клиентам:
[admin@MikroTik] >/ip/dhcp-server/network add address=192.168.88.0/24 gateway=192.168.88.1 dns-server=1.1.1.1,8.8.8.8 domain=office.local
Параметры сети:
- address — подсеть, для которой действуют эти параметры
- gateway — шлюз по умолчанию для клиентов
- dns-server — DNS-серверы (можно указать несколько через запятую)
- domain — доменное имя, которое клиенты получат как суффикс DNS-поиска
Убедитесь, что на интерфейсе bridge1 уже назначен IP-адрес из той же подсети:
[admin@MikroTik] >/ip/address add address=192.168.88.1/24 interface=bridge1
Проверьте, что сервер запущен и работает:
[admin@MikroTik] >/ip/dhcp-server print
В столбце Status должно быть значение running. Если статус disabled — включите сервер:
[admin@MikroTik] >/ip/dhcp-server enable dhcp-lan
4. Static Lease — привязка IP к MAC-адресу
Статическая привязка гарантирует, что конкретное устройство всегда получит один и тот же IP-адрес. Это необходимо для серверов, сетевых принтеров, IP-камер, NAS и любых устройств, к которым обращаются по IP.
Добавим привязку:
[admin@MikroTik] >/ip/dhcp-server/lease add address=192.168.88.100 mac-address=AA:BB:CC:DD:EE:FF server=dhcp-lan comment="Сервер 1С"
Посмотрим текущие аренды и найдём нужное устройство по имени хоста:
[admin@MikroTik] >/ip/dhcp-server/lease print detail
Если устройство уже получило динамический адрес, его можно конвертировать в статический прямо из таблицы аренд:
[admin@MikroTik] >/ip/dhcp-server/lease make-static [find where host-name="DESKTOP-USER01"]
После конвертации при желании можно изменить адрес на нужный:
[admin@MikroTik] >/ip/dhcp-server/lease set [find where host-name="DESKTOP-USER01"] address=192.168.88.50
Массовая привязка нескольких устройств:
[admin@MikroTik] >/ip/dhcp-server/lease add address=192.168.88.100 mac-address=AA:BB:CC:DD:EE:01 server=dhcp-lan comment="Принтер HP" add address=192.168.88.101 mac-address=AA:BB:CC:DD:EE:02 server=dhcp-lan comment="Камера вход" add address=192.168.88.102 mac-address=AA:BB:CC:DD:EE:03 server=dhcp-lan comment="NAS Synology" add address=192.168.88.103 mac-address=AA:BB:CC:DD:EE:04 server=dhcp-lan comment="IP-телефон 201"
Полезная настройка — запретить выдачу адресов устройствам без статической привязки. Это превращает DHCP-сервер в строго контролируемый механизм:
[admin@MikroTik] >/ip/dhcp-server set dhcp-lan authoritative=yes
Параметр authoritative=yes заставляет сервер отвечать DHCP NAK на запросы с адресами, которые не принадлежат его сети. Это ускоряет переключение клиентов между подсетями и помогает бороться с конфликтами.
5. DHCP Options — передача дополнительных параметров
DHCP-опции позволяют передавать клиентам произвольные сетевые параметры. Каждая опция имеет числовой код согласно стандарту RFC 2132.
Option 6 — DNS-серверы
Если DNS-серверы уже заданы в network, отдельная option не нужна. Но если требуется переопределить DNS для конкретного DHCP-сервера или набора клиентов:
[admin@MikroTik] >/ip/dhcp-server/option add name=opt-dns code=6 value="0x01010101080808080808040404080808"
Проще задать DNS через параметр dns-server в network — это рекомендуемый способ:
[admin@MikroTik] >/ip/dhcp-server/network set [find where address="192.168.88.0/24"] dns-server=1.1.1.1,8.8.8.8,8.8.4.4
Option 42 — NTP-серверы
Передача адресов NTP-серверов клиентам. Полезно для корпоративных сетей, где синхронизация времени критична (логирование, Active Directory, сертификаты):
[admin@MikroTik] >/ip/dhcp-server/option add name=opt-ntp code=42 value="'192.168.88.1'"
Если NTP-сервер — сам роутер (при условии, что на нём настроен NTP-клиент или сервер):
[admin@MikroTik] >/system/ntp/client set enabled=yes servers=0.pool.ntp.org,1.pool.ntp.org /ip/dhcp-server/option add name=opt-ntp code=42 value="'192.168.88.1'"
Option 15 — Domain Name
Передача доменного суффикса для DNS-поиска. Клиенты смогут обращаться к внутренним серверам по короткому имени:
[admin@MikroTik] >/ip/dhcp-server/option add name=opt-domain code=15 value="'office.local'"
Применение опций к серверу
После создания опций их нужно привязать к DHCP-серверу через option set:
[admin@MikroTik] >/ip/dhcp-server/option/sets add name=office-options options=opt-ntp,opt-domain /ip/dhcp-server/network set [find where address="192.168.88.0/24"] dhcp-option-set=office-options
Можно назначить опции и на уровне конкретного lease — например, для определённого устройства передать специфический TFTP-сервер (option 66) для автопровизии IP-телефонов:
[admin@MikroTik] >/ip/dhcp-server/option add name=opt-tftp code=66 value="'tftp.office.local'" /ip/dhcp-server/option/sets add name=phone-options options=opt-ntp,opt-domain,opt-tftp /ip/dhcp-server/lease set [find where comment="IP-телефон 201"] dhcp-option-set=phone-options
6. DHCP Relay между VLAN
В сегментированной сети с VLAN клиенты из разных подсетей не могут напрямую получать адреса от DHCP-сервера в другой подсети — широковещательные DHCP Discover не проходят через маршрутизатор. Для решения этой задачи используется DHCP Relay.
Допустим, DHCP-сервер работает в основной подсети 192.168.88.0/24 на bridge1, а клиенты находятся в VLAN 20 (10.10.20.0/24) и VLAN 30 (10.10.30.0/24).
Создайте VLAN-интерфейсы и назначьте адреса:
[admin@MikroTik] >/interface/vlan add name=vlan20 vlan-id=20 interface=bridge1 /interface/vlan add name=vlan30 vlan-id=30 interface=bridge1 /ip/address add address=10.10.20.1/24 interface=vlan20 /ip/address add address=10.10.30.1/24 interface=vlan30
Настройте relay:
[admin@MikroTik] >/ip/dhcp-relay add name=relay-vlan20 interface=vlan20 dhcp-server=192.168.88.1 local-address=10.10.20.1 disabled=no /ip/dhcp-relay add name=relay-vlan30 interface=vlan30 dhcp-server=192.168.88.1 local-address=10.10.30.1 disabled=no
Параметры:
- interface — интерфейс, на котором relay слушает DHCP-запросы
- dhcp-server — IP-адрес DHCP-сервера, которому перенаправляются запросы
- local-address — адрес relay-агента, вставляемый в поле giaddr пакета DHCP
На стороне основного DHCP-сервера нужно добавить сети и пулы для каждого VLAN:
[admin@MikroTik] >/ip/pool add name=pool-vlan20 ranges=10.10.20.10-10.10.20.254 /ip/pool add name=pool-vlan30 ranges=10.10.30.10-10.10.30.254 /ip/dhcp-server/network add address=10.10.20.0/24 gateway=10.10.20.1 dns-server=1.1.1.1,8.8.8.8 /ip/dhcp-server/network add address=10.10.30.0/24 gateway=10.10.30.1 dns-server=1.1.1.1,8.8.8.8
DHCP-сервер автоматически определит нужную подсеть по полю giaddr в relay-пакете и выдаст адрес из соответствующего пула.
Проверьте работу relay:
[admin@MikroTik] >/ip/dhcp-relay print
В столбце Status должно быть running для каждого relay.
7. Lease Time — рекомендации по времени аренды
Время аренды (lease time) определяет, как долго клиент может использовать выданный IP-адрес без повторного запроса. Выбор lease time зависит от типа сети.
Офисная сеть (стационарные устройства):
[admin@MikroTik] >/ip/dhcp-server set dhcp-lan lease-time=12h
12 часов — оптимальный баланс. Устройства обновляют аренду каждые 6 часов (50% от lease time), при этом адреса не зависают надолго, если устройство отключили.
Гостевая Wi-Fi сеть:
[admin@MikroTik] >/ip/dhcp-server set dhcp-guest lease-time=2h
2 часа — гости приходят и уходят, адреса нужно быстро возвращать в пул. В кафе или конференц-зале можно поставить даже 1 час.
Серверная сеть (статические привязки):
[admin@MikroTik] >/ip/dhcp-server set dhcp-servers lease-time=1d
1 день для серверов, но в реальности для серверов лучше использовать static lease — тогда lease time не имеет критического значения.
Сеть IoT-устройств:
[admin@MikroTik] >/ip/dhcp-server set dhcp-iot lease-time=1d
IoT-устройства обычно включены постоянно и не должны часто обновлять аренду. Длинный lease time снижает нагрузку на DHCP.
Общие рекомендации:
- Lease time не должен быть короче 1 часа в любой сети — иначе при недоступности DHCP-сервера устройства быстро потеряют связь
- Не ставьте lease time больше 7 дней — «мёртвые» адреса будут долго занимать пул
- Размер пула должен быть минимум в 2 раза больше количества одновременных клиентов — это даёт запас при rotation
8. Диагностика проблем DHCP
Когда клиенты не получают адреса или получают неправильные параметры, используйте следующие инструменты диагностики.
Просмотр текущих аренд
[admin@MikroTik] >/ip/dhcp-server/lease print
Для детального вывода с временем аренды и статусом:
[admin@MikroTik] >/ip/dhcp-server/lease print detail
Отфильтруйте только активные (bound) аренды:
[admin@MikroTik] >/ip/dhcp-server/lease print where status=bound
Найдите аренды для конкретного MAC-адреса:
[admin@MikroTik] >/ip/dhcp-server/lease print where mac-address=AA:BB:CC:DD:EE:FF
Включение оповещений о конфликтах
DHCP-сервер может проверять, не занят ли адрес перед выдачей. Включите ARP-проверку:
[admin@MikroTik] >/ip/dhcp-server alert add interface=bridge1 on-alert="/log warning \"DHCP alert: rogue server detected\""
Эта функция обнаруживает посторонние DHCP-серверы в сети — одна из самых частых причин проблем.
Логирование DHCP
Включите подробное логирование для диагностики:
[admin@MikroTik] >/system/logging add topics=dhcp action=memory
Просмотр логов:
[admin@MikroTik] >/log print where topics~"dhcp"
В логах вы увидите каждый этап DORA-процесса: discover, offer, request, acknowledge и возможные ошибки.
Проверка доступности пула
Убедитесь, что в пуле есть свободные адреса:
[admin@MikroTik] >/ip/pool/used print
Если все адреса заняты, клиенты не смогут получить IP. Решение — расширить пул или уменьшить lease time.
Проверка статуса сервера
[admin@MikroTik] >/ip/dhcp-server print detail
Обратите внимание на поля:
- invalid — если
yes, проверьте привязку к интерфейсу и пулу - dynamic — если
yes, сервер создан автоматически (Setup wizard), лучше пересоздать вручную
9. Мониторинг DHCP-сервера
Для постоянного контроля за работой DHCP используйте встроенные средства мониторинга.
Статистика использования пула
Посмотрите, сколько адресов выдано из каждого пула:
[admin@MikroTik] >/ip/pool/used print count-only /ip/pool print
Сравните количество используемых адресов с размером пула. Если заполнение превышает 80% — пора расширять пул или сокращать lease time.
Мониторинг в реальном времени
Наблюдайте за новыми арендами в реальном времени через лог:
[admin@MikroTik] >/log print follow where topics~"dhcp"
Скрипт оповещения о заполнении пула
Создайте скрипт, который будет предупреждать при высоком заполнении пула:
[admin@MikroTik] >/system/script add name=dhcp-pool-check source={ :local totalLeases [/ip/dhcp-server/lease print count-only] :local boundLeases [/ip/dhcp-server/lease print count-only where status=bound] :if ($boundLeases > 200) do={ /log warning ("DHCP pool alert: $boundLeases active leases") } }
Запланируйте выполнение скрипта каждые 30 минут:
[admin@MikroTik] >/system/scheduler add name=check-dhcp-pool interval=30m on-event=dhcp-pool-check
SNMP для внешнего мониторинга
Если используете Zabbix, PRTG или Grafana — включите SNMP:
[admin@MikroTik] >/snmp set enabled=yes contact="admin@office.local" location="Серверная" /snmp/community set [find default=yes] name=monitoring read-access=yes write-access=no addresses=10.10.10.50/32
10. Типичные ошибки и их решения
Ошибка: клиенты получают адрес 169.254.x.x (APIPA)
Клиент не смог связаться с DHCP-сервером. Причины:
- DHCP-сервер не запущен — проверьте
/ip/dhcp-server print - Нет IP-адреса на интерфейсе — DHCP-сервер не запустится без адреса в той же подсети
- Firewall блокирует порты UDP 67/68 — добавьте разрешающее правило:
[admin@MikroTik] >/ip/firewall/filter add chain=input protocol=udp dst-port=67 action=accept comment="Allow DHCP"
Ошибка: два DHCP-сервера в одной сети
Самая коварная проблема — посторонний DHCP-сервер (чужой роутер, ноутбук с расшаренным интернетом) раздаёт неправильные адреса. Признак — часть клиентов получает адреса из неизвестной подсети.
Обнаружение:
[admin@MikroTik] >/ip/dhcp-server/alert print
Решение: физически найти и отключить посторонний DHCP-сервер. Дополнительная защита — DHCP Snooping на управляемых коммутаторах.
Ошибка: сервер в статусе «invalid»
Причины:
- Интерфейс, указанный в настройках, не существует или отключён
- Address pool удалён или переименован
- Нет IP-адреса на интерфейсе
Диагностика:
[admin@MikroTik] >/ip/dhcp-server print detail /interface print where name=bridge1 /ip/address print where interface=bridge1 /ip/pool print
Ошибка: статический lease не работает
Проверьте:
- MAC-адрес указан правильно (регистр не важен, но формат XX:XX:XX:XX:XX:XX — обязательно)
- Lease привязан к правильному серверу (параметр
server) - Указанный адрес находится в той же подсети, что и network DHCP-сервера
- Адрес не конфликтует с другим static lease
[admin@MikroTik] >/ip/dhcp-server/lease print where mac-address=AA:BB:CC:DD:EE:FF
Ошибка: клиенты не получают DHCP Options
- Убедитесь, что option set назначен на network или lease
- Проверьте формат значения — для текстовых значений используйте одинарные кавычки:
value="'text'" - Для IP-адресов в бинарных опциях используйте hex-формат
[admin@MikroTik] >/ip/dhcp-server/option print /ip/dhcp-server/option/sets print
Ошибка: адреса быстро заканчиваются
Если пул исчерпывается при небольшом количестве реальных устройств:
- Уменьшите lease time — «мёртвые» устройства быстрее освободят адреса
- Расширьте пул
- Удалите зависшие аренды вручную:
[admin@MikroTik] >/ip/dhcp-server/lease remove [find where status=waiting]
11. Полный пример конфигурации
Ниже — готовая конфигурация DHCP для офиса с основной сетью и двумя VLAN:
[admin@MikroTik] ># === IP Pools === /ip/pool add name=pool-lan ranges=192.168.88.10-192.168.88.254 add name=pool-vlan20 ranges=10.10.20.10-10.10.20.254 add name=pool-vlan30 ranges=10.10.30.10-10.10.30.254 # === IP-адреса на интерфейсах === /ip/address add address=192.168.88.1/24 interface=bridge1 add address=10.10.20.1/24 interface=vlan20 add address=10.10.30.1/24 interface=vlan30 # === DHCP Server === /ip/dhcp-server add name=dhcp-lan interface=bridge1 address-pool=pool-lan lease-time=8h authoritative=yes # === DHCP Networks === /ip/dhcp-server/network add address=192.168.88.0/24 gateway=192.168.88.1 dns-server=1.1.1.1,8.8.8.8 domain=office.local add address=10.10.20.0/24 gateway=10.10.20.1 dns-server=1.1.1.1,8.8.8.8 domain=office.local add address=10.10.30.0/24 gateway=10.10.30.1 dns-server=1.1.1.1,8.8.8.8 domain=office.local # === DHCP Options === /ip/dhcp-server/option add name=opt-ntp code=42 value="'192.168.88.1'" add name=opt-domain code=15 value="'office.local'" /ip/dhcp-server/option/sets add name=office-options options=opt-ntp,opt-domain /ip/dhcp-server/network set [find where address="192.168.88.0/24"] dhcp-option-set=office-options /ip/dhcp-server/network set [find where address="10.10.20.0/24"] dhcp-option-set=office-options /ip/dhcp-server/network set [find where address="10.10.30.0/24"] dhcp-option-set=office-options # === DHCP Relay для VLAN === /ip/dhcp-relay add name=relay-vlan20 interface=vlan20 dhcp-server=192.168.88.1 local-address=10.10.20.1 disabled=no add name=relay-vlan30 interface=vlan30 dhcp-server=192.168.88.1 local-address=10.10.30.1 disabled=no # === Static Leases === /ip/dhcp-server/lease add address=192.168.88.100 mac-address=AA:BB:CC:DD:EE:01 server=dhcp-lan comment="Сервер 1С" add address=192.168.88.101 mac-address=AA:BB:CC:DD:EE:02 server=dhcp-lan comment="Принтер HP LaserJet" add address=192.168.88.102 mac-address=AA:BB:CC:DD:EE:03 server=dhcp-lan comment="NAS Synology" # === Firewall — разрешить DHCP === /ip/firewall/filter add chain=input protocol=udp dst-port=67 action=accept comment="Allow DHCP" place-before=0 # === Логирование === /system/logging add topics=dhcp action=memory # === Мониторинг: оповещение о заполнении пула === /system/script add name=dhcp-pool-check source={ :local boundLeases [/ip/dhcp-server/lease print count-only where status=bound] :if ($boundLeases > 200) do={ /log warning ("DHCP pool alert: $boundLeases active leases") } } /system/scheduler add name=check-dhcp-pool interval=30m on-event=dhcp-pool-check
Эта конфигурация покрывает большинство сценариев офисной сети. Адаптируйте адреса, имена интерфейсов и пороговые значения под свою инфраструктуру.
/ip/pool add name=pool-lan ranges=192.168.88.10-192.168.88.254
/ip/pool add name=pool-lan ranges=192.168.88.10-192.168.88.199,192.168.88.211-192.168.88.254
/ip/pool add name=pool-vlan10 ranges=10.10.10.10-10.10.10.254
/ip/pool add name=pool-vlan20 ranges=10.10.20.10-10.10.20.254
/ip/pool add name=pool-vlan30 ranges=10.10.30.10-10.10.30.254
/ip/pool print
/ip/pool add name=pool-guest-primary ranges=10.10.99.10-10.10.99.200
/ip/pool add name=pool-guest-overflow ranges=10.10.99.201-10.10.99.254
/ip/pool set pool-guest-primary next-pool=pool-guest-overflow
/ip/dhcp-server add name=dhcp-lan interface=bridge1 address-pool=pool-lan lease-time=8h
/ip/dhcp-server/network add address=192.168.88.0/24 gateway=192.168.88.1 dns-server=1.1.1.1,8.8.8.8 domain=office.local
/ip/address add address=192.168.88.1/24 interface=bridge1
/ip/dhcp-server print
/ip/dhcp-server enable dhcp-lan
/ip/dhcp-server/lease add address=192.168.88.100 mac-address=AA:BB:CC:DD:EE:FF server=dhcp-lan comment="Сервер 1С"
/ip/dhcp-server/lease print detail
/ip/dhcp-server/lease make-static [find where host-name="DESKTOP-USER01"]
/ip/dhcp-server/lease set [find where host-name="DESKTOP-USER01"] address=192.168.88.50
/ip/dhcp-server/lease
add address=192.168.88.100 mac-address=AA:BB:CC:DD:EE:01 server=dhcp-lan comment="Принтер HP"
add address=192.168.88.101 mac-address=AA:BB:CC:DD:EE:02 server=dhcp-lan comment="Камера вход"
add address=192.168.88.102 mac-address=AA:BB:CC:DD:EE:03 server=dhcp-lan comment="NAS Synology"
add address=192.168.88.103 mac-address=AA:BB:CC:DD:EE:04 server=dhcp-lan comment="IP-телефон 201"
/ip/dhcp-server set dhcp-lan authoritative=yes
/ip/dhcp-server/option add name=opt-dns code=6 value="0x01010101080808080808040404080808"
/ip/dhcp-server/network set [find where address="192.168.88.0/24"] dns-server=1.1.1.1,8.8.8.8,8.8.4.4
/ip/dhcp-server/option add name=opt-ntp code=42 value="'192.168.88.1'"
/system/ntp/client set enabled=yes servers=0.pool.ntp.org,1.pool.ntp.org
/ip/dhcp-server/option add name=opt-ntp code=42 value="'192.168.88.1'"
/ip/dhcp-server/option add name=opt-domain code=15 value="'office.local'"
/ip/dhcp-server/option/sets add name=office-options options=opt-ntp,opt-domain
/ip/dhcp-server/network set [find where address="192.168.88.0/24"] dhcp-option-set=office-options
/ip/dhcp-server/option add name=opt-tftp code=66 value="'tftp.office.local'"
/ip/dhcp-server/option/sets add name=phone-options options=opt-ntp,opt-domain,opt-tftp
/ip/dhcp-server/lease set [find where comment="IP-телефон 201"] dhcp-option-set=phone-options
/interface/vlan add name=vlan20 vlan-id=20 interface=bridge1
/interface/vlan add name=vlan30 vlan-id=30 interface=bridge1
/ip/address add address=10.10.20.1/24 interface=vlan20
/ip/address add address=10.10.30.1/24 interface=vlan30
/ip/dhcp-relay add name=relay-vlan20 interface=vlan20 dhcp-server=192.168.88.1 local-address=10.10.20.1 disabled=no
/ip/dhcp-relay add name=relay-vlan30 interface=vlan30 dhcp-server=192.168.88.1 local-address=10.10.30.1 disabled=no
/ip/pool add name=pool-vlan20 ranges=10.10.20.10-10.10.20.254
/ip/pool add name=pool-vlan30 ranges=10.10.30.10-10.10.30.254
/ip/dhcp-server/network add address=10.10.20.0/24 gateway=10.10.20.1 dns-server=1.1.1.1,8.8.8.8
/ip/dhcp-server/network add address=10.10.30.0/24 gateway=10.10.30.1 dns-server=1.1.1.1,8.8.8.8
/ip/dhcp-relay print
/ip/dhcp-server set dhcp-lan lease-time=12h
/ip/dhcp-server set dhcp-guest lease-time=2h
/ip/dhcp-server set dhcp-servers lease-time=1d
/ip/dhcp-server set dhcp-iot lease-time=1d
/ip/dhcp-server/lease print
/ip/dhcp-server/lease print detail
/ip/dhcp-server/lease print where status=bound
/ip/dhcp-server/lease print where mac-address=AA:BB:CC:DD:EE:FF
/ip/dhcp-server alert add interface=bridge1 on-alert="/log warning \"DHCP alert: rogue server detected\""
/system/logging add topics=dhcp action=memory
/log print where topics~"dhcp"
/ip/pool/used print
/ip/dhcp-server print detail
/ip/pool/used print count-only
/ip/pool print
/log print follow where topics~"dhcp"
/system/script add name=dhcp-pool-check source={
:local totalLeases [/ip/dhcp-server/lease print count-only]
:local boundLeases [/ip/dhcp-server/lease print count-only where status=bound]
:if ($boundLeases > 200) do={
/log warning ("DHCP pool alert: $boundLeases active leases")
}
}
/system/scheduler add name=check-dhcp-pool interval=30m on-event=dhcp-pool-check
/snmp set enabled=yes contact="admin@office.local" location="Серверная"
/snmp/community set [find default=yes] name=monitoring read-access=yes write-access=no addresses=10.10.10.50/32
/ip/firewall/filter add chain=input protocol=udp dst-port=67 action=accept comment="Allow DHCP"
/ip/dhcp-server/alert print
/ip/dhcp-server print detail
/interface print where name=bridge1
/ip/address print where interface=bridge1
/ip/pool print
/ip/dhcp-server/lease print where mac-address=AA:BB:CC:DD:EE:FF
/ip/dhcp-server/option print
/ip/dhcp-server/option/sets print
/ip/dhcp-server/lease remove [find where status=waiting]
# === IP Pools ===
/ip/pool
add name=pool-lan ranges=192.168.88.10-192.168.88.254
add name=pool-vlan20 ranges=10.10.20.10-10.10.20.254
add name=pool-vlan30 ranges=10.10.30.10-10.10.30.254
# === IP-адреса на интерфейсах ===
/ip/address
add address=192.168.88.1/24 interface=bridge1
add address=10.10.20.1/24 interface=vlan20
add address=10.10.30.1/24 interface=vlan30
# === DHCP Server ===
/ip/dhcp-server
add name=dhcp-lan interface=bridge1 address-pool=pool-lan lease-time=8h authoritative=yes
# === DHCP Networks ===
/ip/dhcp-server/network
add address=192.168.88.0/24 gateway=192.168.88.1 dns-server=1.1.1.1,8.8.8.8 domain=office.local
add address=10.10.20.0/24 gateway=10.10.20.1 dns-server=1.1.1.1,8.8.8.8 domain=office.local
add address=10.10.30.0/24 gateway=10.10.30.1 dns-server=1.1.1.1,8.8.8.8 domain=office.local
# === DHCP Options ===
/ip/dhcp-server/option
add name=opt-ntp code=42 value="'192.168.88.1'"
add name=opt-domain code=15 value="'office.local'"
/ip/dhcp-server/option/sets
add name=office-options options=opt-ntp,opt-domain
/ip/dhcp-server/network set [find where address="192.168.88.0/24"] dhcp-option-set=office-options
/ip/dhcp-server/network set [find where address="10.10.20.0/24"] dhcp-option-set=office-options
/ip/dhcp-server/network set [find where address="10.10.30.0/24"] dhcp-option-set=office-options
# === DHCP Relay для VLAN ===
/ip/dhcp-relay
add name=relay-vlan20 interface=vlan20 dhcp-server=192.168.88.1 local-address=10.10.20.1 disabled=no
add name=relay-vlan30 interface=vlan30 dhcp-server=192.168.88.1 local-address=10.10.30.1 disabled=no
# === Static Leases ===
/ip/dhcp-server/lease
add address=192.168.88.100 mac-address=AA:BB:CC:DD:EE:01 server=dhcp-lan comment="Сервер 1С"
add address=192.168.88.101 mac-address=AA:BB:CC:DD:EE:02 server=dhcp-lan comment="Принтер HP LaserJet"
add address=192.168.88.102 mac-address=AA:BB:CC:DD:EE:03 server=dhcp-lan comment="NAS Synology"
# === Firewall — разрешить DHCP ===
/ip/firewall/filter add chain=input protocol=udp dst-port=67 action=accept comment="Allow DHCP" place-before=0
# === Логирование ===
/system/logging add topics=dhcp action=memory
# === Мониторинг: оповещение о заполнении пула ===
/system/script add name=dhcp-pool-check source={
:local boundLeases [/ip/dhcp-server/lease print count-only where status=bound]
:if ($boundLeases > 200) do={
/log warning ("DHCP pool alert: $boundLeases active leases")
}
}
/system/scheduler add name=check-dhcp-pool interval=30m on-event=dhcp-pool-check