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

14 минут чтенияАвтор: Редакция MikroTik.group
DHCP-сервер на MikroTik: настройка за 10 минут и разбор ошибок

Как настроить DHCP-сервер на MikroTik так, чтобы устройства сами получали адрес, шлюз и DNS: мастер DHCP Setup, те же настройки вручную, закрепление адреса за устройством и разбор типичных сбоев, включая чужой DHCP-сервер в сети.

Нет роутера под рукой? На открытом уроке стенд уже включён и ждёт вас. Подробнее ↓

Что такое DHCP и как он работает

DHCP (Dynamic Host Configuration Protocol) автоматически выдаёт устройствам IP-адрес, маску, шлюз и DNS-сервер. Без него настройки пришлось бы вписывать на каждом компьютере, телефоне и принтере, а любая опечатка заканчивается конфликтом адресов или потерей связи. Смену шлюза или DNS достаточно сделать один раз, на роутере.

Обмен идёт по UDP, порты 67 (сервер) и 68 (клиент), в четыре шага:

  1. Discover: клиент рассылает широковещательный запрос «есть тут DHCP-сервер?».
  2. Offer: сервер предлагает адрес.
  3. Request: клиент подтверждает, что берёт именно этот адрес.
  4. Acknowledge: сервер закрепляет адрес на время аренды (lease).
Схема обмена DHCP: клиент отправляет Discover, сервер отвечает Offer, клиент отправляет Request, сервер подтверждает Acknowledge

Адрес выдаётся не навсегда, а на срок аренды. Примерно на середине срока клиент просит продлить её, а если устройство пропало из сети, адрес по окончании аренды возвращается в пул. На 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.
Важно. DHCP-сервер привязывается к интерфейсу, на котором есть IP-адрес, то есть к bridge, а не к отдельным портам, которые в него входят.

Команды в статье проверены на RouterOS 7.22 и 6.49. Где версии различаются, это сказано в тексте.

Шаг 1. Настройте сервер мастером

Самый быстрый способ: IP → DHCP Server → DHCP Setup. Мастер задаёт вопросы по очереди, на каждый нужно ответить и нажать Next:

  1. DHCP Server Interface: bridge.
  2. DHCP Address Space: 192.168.88.0/24.
  3. Gateway for DHCP Network: 192.168.88.1.
  4. Addresses to Give Out: мастер предлагает 192.168.88.2-192.168.88.254. Впишите 192.168.88.10-192.168.88.254, чтобы начало сети осталось для принтеров и точек доступа.
  5. DNS Servers: по умолчанию пусто. Впишите 192.168.88.1, адрес роутера.
  6. Lease Time: по умолчанию 30 минут на RouterOS 7.22 и 10 минут на 6.49. Для начала оставьте как есть.

То же самое в терминале запускается командой /ip dhcp-server setup, вопросы идут в том же порядке. На RouterOS 7.22 в консоли перед DNS добавляется вопрос send dns: у него нет значения по умолчанию, ответьте yes.

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

Шаг 2. То же вручную: пул, сервер, сеть

Это альтернатива шагу 1, а не продолжение. Если сервер уже создан мастером, пропустите команды ниже или сначала удалите созданное, иначе получите два сервера на одном интерфейсе.

Чтобы понимать, что именно создаёт мастер, повторим его работу тремя командами. Мастер называет пул 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 из этой статьи

Тренер рядом

Разбор ваших вопросов вживую

Ближайший урок: [ДАТА И ВРЕМЯ УРОКА]

Читайте также