DHCP-сервер на MikroTik: настройка за 10 минут и разбор ошибок

Как настроить DHCP-сервер на MikroTik так, чтобы устройства сами получали адрес, шлюз и DNS: мастер DHCP Setup, те же настройки вручную, закрепление адреса за устройством и разбор типичных сбоев, включая чужой DHCP-сервер в сети.
Нет роутера под рукой? На открытом уроке стенд уже включён и ждёт вас. Подробнее ↓Что такое DHCP и как он работает
DHCP (Dynamic Host Configuration Protocol) автоматически выдаёт устройствам IP-адрес, маску, шлюз и DNS-сервер. Без него настройки пришлось бы вписывать на каждом компьютере, телефоне и принтере, а любая опечатка заканчивается конфликтом адресов или потерей связи. Смену шлюза или DNS достаточно сделать один раз, на роутере.
Обмен идёт по UDP, порты 67 (сервер) и 68 (клиент), в четыре шага:
- Discover: клиент рассылает широковещательный запрос «есть тут DHCP-сервер?».
- Offer: сервер предлагает адрес.
- Request: клиент подтверждает, что берёт именно этот адрес.
- Acknowledge: сервер закрепляет адрес на время аренды (lease).
Адрес выдаётся не навсегда, а на срок аренды. Примерно на середине срока клиент просит продлить её, а если устройство пропало из сети, адрес по окончании аренды возвращается в пул. На MikroTik DHCP-сервер состоит из трёх объектов: пула адресов, самого сервера и описания сети (шлюз, DNS).
Что понадобится
- Роутер MikroTik, подключённый по WinBox. Если вы ещё не подключались, начните со статьи «WinBox: первое подключение к MikroTik за 10 минут».
- Компьютер или телефон, который будет клиентом DHCP, подключённый к порту из
bridge. - Схема из конфигурации RouterOS по умолчанию:
bridgeс локальными портами и адресом192.168.88.1/24. Если адреса на bridge нет, добавьте его:/ip address add address=192.168.88.1/24 interface=bridge.
bridge, а не к отдельным портам, которые в него входят.Команды в статье проверены на RouterOS 7.22 и 6.49. Где версии различаются, это сказано в тексте.
Шаг 1. Настройте сервер мастером
Самый быстрый способ: IP → DHCP Server → DHCP Setup. Мастер задаёт вопросы по очереди, на каждый нужно ответить и нажать Next:
- DHCP Server Interface:
bridge. - DHCP Address Space:
192.168.88.0/24. - Gateway for DHCP Network:
192.168.88.1. - Addresses to Give Out: мастер предлагает
192.168.88.2-192.168.88.254. Впишите192.168.88.10-192.168.88.254, чтобы начало сети осталось для принтеров и точек доступа. - DNS Servers: по умолчанию пусто. Впишите
192.168.88.1, адрес роутера. - Lease Time: по умолчанию 30 минут на RouterOS 7.22 и 10 минут на 6.49. Для начала оставьте как есть.
То же самое в терминале запускается командой /ip dhcp-server setup, вопросы идут в том же порядке. На RouterOS 7.22 в консоли перед DNS добавляется вопрос send dns: у него нет значения по умолчанию, ответьте yes.










Как это выглядит в WinBox 3 (Windows)









Шаг 2. То же вручную: пул, сервер, сеть
Чтобы понимать, что именно создаёт мастер, повторим его работу тремя командами. Мастер называет пул dhcp_pool0 и сервер dhcp1; ниже мы даём пулу своё имя, суть та же. Пул адресов, которые сервер может выдавать:
/ip pool add name=dhcp_pool ranges=192.168.88.10-192.168.88.254
Сам DHCP-сервер, привязанный к bridge:
/ip dhcp-server add name=dhcp1 interface=bridge address-pool=dhcp_pool lease-time=1h disabled=no
Параметры сети, которые клиент получит вместе с адресом:
/ip dhcp-server network add address=192.168.88.0/24 gateway=192.168.88.1 dns-server=192.168.88.1
Адреса 192.168.88.2–192.168.88.9 остаются вне пула: их удобно закрепить за принтерами, точками доступа и серверами. Результат на экране WinBox: пул в IP → Pool, сервер и его время аренды в IP → DHCP Server, шлюз и DNS на вкладке Networks.



Как это выглядит в WinBox 3 (Windows)



Шаг 3. Включите DNS на роутере
В примере клиентам выдаётся DNS 192.168.88.1, то есть сам роутер, поэтому он должен принимать DNS-запросы от клиентов:
/ip dns set allow-remote-requests=yes servers=8.8.8.8,1.1.1.1
Команда включает приём запросов и задаёт внешние серверы, к которым роутер будет обращаться сам. Если провайдер выдаёт DNS автоматически, servers можно не менять. В WinBox это IP → DNS, флажок Allow Remote Requests.

Как это выглядит в WinBox 3 (Windows)

Шаг 4. Проверьте, что клиент получил адрес
Сначала посмотрите на роутере выданные адреса. У активных клиентов в колонке status будет bound, рядом видны MAC-адрес и имя хоста:
/ip dhcp-server lease print
Сервер выдаёт адреса с верхнего края пула: первый клиент обычно получает 192.168.88.254, а не .10. Это нормально.

Как это выглядит в WinBox 3 (Windows)

Затем проверьте клиента. В Windows выполните ipconfig /release, затем ipconfig /renew и ipconfig /all; в Linux переподключите интерфейс и посмотрите ip a и ip r. Должны быть адрес из 192.168.88.0/24, шлюз и DNS 192.168.88.1. После этого проверьте ping 192.168.88.1.


Как это выглядит в Windows 7 (WinBox 3)


Если подозреваете, что пул закончился, посмотрите занятые адреса. Команда есть на RouterOS 7.22 и 6.49, в колонке INFO виден MAC клиента:
/ip pool used print
Хотите увидеть сам обмен? Используйте sniffer на портах DHCP: он показывает все четыре пакета (Discover, Offer, Request, Acknowledge):
/tool sniffer quick interface=bridge port=67,68
В WinBox это Tools → Packet Sniffer. /tool torch для этой цели не подходит: в наших прогонах на RouterOS 7.22 и 6.49 фильтр по порту 67 не показал ни одного DHCP-пакета, потому что запросы клиента широковещательные и идут с адреса 0.0.0.0.
Закрепите адрес за устройством
Принтер, камера или сервер должны всегда получать один и тот же адрес. Привяжите адрес к MAC-адресу устройства. Если устройство уже получило адрес динамически, проще всего превратить аренду в статическую.
В WinBox: IP → DHCP Server → Leases, выделите строку клиента и нажмите Make Static. Затем дважды кликните по аренде и впишите нужный адрес, например 192.168.88.50. Меняйте адрес только у статической записи: у динамической RouterOS ответит can not change dynamic lease.






Как это выглядит в WinBox 3 (Windows)





То же в терминале. Выбирайте аренду по MAC-адресу, а не по номеру из print: номера сдвигаются, когда в списке появляются новые записи:
/ip dhcp-server lease make-static [find mac-address=AA:BB:CC:DD:EE:FF] /ip dhcp-server lease set [find mac-address=AA:BB:CC:DD:EE:FF] address=192.168.88.50 comment="Printer"
Команда make-static 0 с номером строки тоже работает, если вы только что смотрели lease print. Новый адрес устройство получит при следующем продлении аренды: чтобы не ждать, выполните на клиенте ipconfig /renew. Можно создать запись и заранее, не дожидаясь первой аренды:
/ip dhcp-server lease add address=192.168.88.50 mac-address=AA:BB:CC:DD:EE:FF server=dhcp1 comment="Printer"
Зарезервированный адрес берите вне динамического пула либо внутри него, но заранее проверив, что он свободен.
Время аренды: какое выбрать
- Домашняя сеть и офис с постоянными устройствами: от нескольких часов до суток.
- Гостевой Wi-Fi, кафе, конференция: 10–30 минут, иначе пул быстро заполнится устройствами, которые давно ушли.
Изменить время можно в свойствах сервера (IP → DHCP Server, поле Lease Time) или командой:
/ip dhcp-server set dhcp1 lease-time=30m
Не работает: разбор проблем
| Симптом | Причина | Что сделать |
|---|---|---|
Сервер в списке с флагом I (invalid) | Сервер не может работать: нет адреса на интерфейсе или выбран не тот интерфейс | Проверьте /ip address print и интерфейс сервера: это должен быть bridge, а не порт |
| Клиент получил адрес, но нет интернета | Нет записи в /ip dhcp-server network: клиент остался без шлюза и DNS | Добавьте сеть с gateway и dns-server |
| Интернет есть, имена сайтов не открываются | Клиентам выдан DNS 192.168.88.1, а роутер не принимает запросы | /ip dns set allow-remote-requests=yes |
| Конфликт адресов | Пул захватил адрес роутера или устройства с ручным адресом | Начните пул с .10 и исключите адреса с ручной настройкой |
| Новым устройствам не хватает адресов | Слишком длинная аренда и много гостей | /ip pool used print, расширьте диапазон или уменьшите время аренды |
| Клиент получает 192.168.0.x или другой чужой адрес | В сети работает второй DHCP-сервер | См. блок ниже |
Чужой DHCP-сервер в сети
Частая причина: домашний роутер или точка доступа подключены в сеть LAN-портом, а не WAN, и тоже раздают адреса. Клиент берёт предложение того сервера, чей ответ пришёл первым. Признак: у клиента адрес вроде 192.168.0.x, а на вашем роутере в Leases этого клиента нет.





На MikroTik для этого есть DHCP Alert: роутер сам ищет в сети посторонние DHCP-серверы и сообщает о них. В valid-server укажите MAC-адрес вашего сервера (MAC интерфейса bridge, его видно в /interface print):
/ip dhcp-server alert add interface=bridge valid-server=BC:24:11:D2:88:29 alert-timeout=1m on-alert=":log warning rogue-dhcp" /ip dhcp-server alert enable 0
Важно: правило создаётся выключенным, поэтому команда enable обязательна. Через несколько секунд после включения в журнале появится запись dhcp alert on bridge: discovered unknown dhcp server, mac …, ip …, в самом правиле заполнится поле unknown-server, а скрипт из on-alert сработает. В WinBox это IP → DHCP Server → Alerts. Найдя нарушителя, отключите на нём DHCP-сервер или переткните кабель в WAN-порт.
Частые вопросы
Можно ли выдавать адреса только известным устройствам? Да: укажите в сервере пул static-only, и адреса получат лишь устройства со статической записью в аренде. Остальные клиенты останутся без адреса. Надёжной защитой это не считается, потому что MAC-адрес легко подделать.
/ip dhcp-server set dhcp1 address-pool=static-only
Чем статическая аренда лучше ручного адреса на устройстве? Адресом управляют централизованно, на роутере. Если сеть придётся менять, правки нужны в одном месте.
Сколько DHCP-серверов может быть в одной сети? Один на сегмент, если вы не строите резервирование намеренно. Два независимых сервера без согласования выдают клиентам разные настройки.
Что, если адрес роутеру выдаёт провайдер? Тогда роутер сам DHCP-клиент: /ip dhcp-client add interface=ether1 disabled=no. По умолчанию он добавляет маршрут по умолчанию и принимает DNS провайдера.
Выдаёт ли DHCP что-то кроме адреса? Да, например адрес NTP-сервера или сервера загрузки через опции DHCP. Для типичной сети хватает адреса, маски, шлюза и DNS.
Открытый урок · бесплатно
Настройте DHCP руками на живом стенде
Свой роутер не нужен. На каждом открытом уроке стенды уже прогреты: RouterOS загружена, доступ выдан. Вы поднимаете DHCP-сервер, проверяете выдачу адресов на клиенте и разбираете ситуацию с чужим DHCP-сервером, а тренер отвечает на вопросы по ходу.
Стенд онлайн
Подключение за пару минут
Практика
Шаги 1–4 из этой статьи
Тренер рядом
Разбор ваших вопросов вживую
Ближайший урок: [ДАТА И ВРЕМЯ УРОКА]


