Skip to content

Кейс №5 (строительная лаба №2): DHCP-сервер на CHR + перехват rogue DHCP ​

Дата: 2026-09-29 Задача: построить DHCP на CHR для lab-lan и перевести клиентов со статики на автоматику (лаба №2 из дорожной карты). Статус: ✅ построено; по пути пойман и нейтрализован rogue DHCP-сервер


Построенная конфигурация (CHR) ​

routeros
/ip pool add name=lab-pool ranges=192.168.100.100-192.168.100.200
/ip dhcp-server add name=lab-dhcp interface=ether2 address-pool=lab-pool
/ip dhcp-server network add address=192.168.100.0/24 gateway=192.168.100.1 dns-server=192.168.100.1
/ip dhcp-server enable lab-dhcp

Клиент (alpine1): /etc/network/interfaces → iface eth0 inet dhcp, сетевой сервис перезапущен.

Происшествие: мятежный DHCP ​

Симптом при переводе на DHCP: udhcpc: Timeout, server 192.168.100.11 not responding (позже — server 192.168.100.200 not responding), адрес получался через раз, линк «плавал».

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

  • Lease на CHR появлялся и биндился — настоящий сервер работал;
  • но в эфире lab-lan отвечал ещё кто-то, чей Offer содержал server-id = собственный адрес самого клиента — bogus-предложение, на которое udhcpc безуспешно пытался закончить DORA.

Улика: осиротевший процесс dnsmasq --conf-file=.../lab-lan.conf (PID 110378, запущен 28.09, когда сеть lab-lan имела иную конфигурацию; пережил несколько переопределений сети и потерял управление libvirt).

Действие: sudo pkill -f "lab-lan.conf" → эфир очистился, DHCP стабилизировался.

Закрепление результата: резервирование ​

Чтобы клиент сохранял адрес (и чтобы не ломать SSH-доступ при смене аренды):

routeros
/ip dhcp-server lease make-static [find mac-address=52:54:00:D4:81:0F]
/ip dhcp-server lease set [find mac-address=52:54:00:D4:81:0F] address=192.168.100.11

Итог: alpine1 получает 192.168.100.11 по DHCP (default route metric 202), интернет работает.

Уроки (двойные) ​

  1. Пул DHCP не должен пересекаться со статикой (.1 роутер, .11/.12 клиенты-резервы, .254 хост). Иначе — конфликт адресов.
  2. Rogue DHCP — классическая полевая неисправность: посторонний сервер в сегменте (клиент воткнул свой роутер «вторым концом» в сеть, кривой свитч с DHCP, осиротевший процесс). Симптом: «интернет то есть, то нет», странные адреса у клиентов (не из пула провайдера), Offer'ы с невозможным server-id. Лечение: найти и выключить источник; защита на свитчах — DHCP snooping.
  3. Инфраструктурный мусор (сиротские процессы) — реальный источник «мистики»: пересоздавая виртуальные сети, контролируй, что старые демоны умирают (ps aux | grep dnsmasq).
  4. metric 202 на default route — приметка маршрута, полученного по DHCP (udhcpc).

Следующие шаги ​

  • alpine2 — перевести на DHCP так же (с резервированием .12).
  • Лаба №6: VLAN на CHR + изоляция клиентов.