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

DHCP Server

RouterOS 7.xIP11 мин1230 мар. 2026 г.
TelegramVK

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-сервер состоит из трёх связанных сущностей:

  1. IP Pool — диапазон адресов для выдачи
  2. DHCP Server — сам процесс, привязанный к интерфейсу
  3. 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-сервером. Причины:

  1. DHCP-сервер не запущен — проверьте /ip/dhcp-server print
  2. Нет IP-адреса на интерфейсе — DHCP-сервер не запустится без адреса в той же подсети
  3. 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»

Причины:

  1. Интерфейс, указанный в настройках, не существует или отключён
  2. Address pool удалён или переименован
  3. Нет IP-адреса на интерфейсе

Диагностика:

[admin@MikroTik] >
/ip/dhcp-server print detail
/interface print where name=bridge1
/ip/address print where interface=bridge1
/ip/pool print

Ошибка: статический lease не работает

Проверьте:

  1. MAC-адрес указан правильно (регистр не важен, но формат XX:XX:XX:XX:XX:XX — обязательно)
  2. Lease привязан к правильному серверу (параметр server)
  3. Указанный адрес находится в той же подсети, что и network DHCP-сервера
  4. Адрес не конфликтует с другим static lease
[admin@MikroTik] >
/ip/dhcp-server/lease print where mac-address=AA:BB:CC:DD:EE:FF

Ошибка: клиенты не получают DHCP Options

  1. Убедитесь, что option set назначен на network или lease
  2. Проверьте формат значения — для текстовых значений используйте одинарные кавычки: value="'text'"
  3. Для IP-адресов в бинарных опциях используйте hex-формат
[admin@MikroTik] >
/ip/dhcp-server/option print
/ip/dhcp-server/option/sets print

Ошибка: адреса быстро заканчиваются

Если пул исчерпывается при небольшом количестве реальных устройств:

  1. Уменьшите lease time — «мёртвые» устройства быстрее освободят адреса
  2. Расширьте пул
  3. Удалите зависшие аренды вручную:
[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

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

[admin@MikroTik] >
/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