Я понял, как это сделать — немного странно, но в моей лабораторной сети работает.
Шаг 1: Создайте «петлевой» адрес на отдельном интерфейсе моста (bridge), не подключая его ни к каким физическим портам:
/interface add name=“bridge1”
/ip address add address=10.10.10.1/32 interface=bridge1
Шаг 2: Создайте пул IP-адресов:
/ip pool add name=Relay1 ranges=192.168.1.10-192.168.1.255
Шаг 3: Создайте сеть:
/ip dhcp-server network add address=192.168.1.0/24 gateway=192.168.1.1 dns-server=8.8.8.8
Пока всё нормально, верно? Допустим, у вашего сервера есть 3 интерфейса, через которые можно достучаться до сети реле: ether1, ether2 и ether3.
Для каждой релейной сети нужно добавить три DHCP-сервера, все они будут использовать одинаковый удалённый пул, адрес реле и SRC-ADDRESS, который равен вашему «петлевому» адресу из шага 1.
Шаг 4:
/ip dhcp server add Relay1-ether1 relay=192.168.1.1 address-pool=Relay1 src-address=10.10.10.1 interface=ether1
/ip dhcp server add Relay1-ether2 relay=192.168.1.1 address-pool=Relay1 src-address=10.10.10.1 interface=ether2
/ip dhcp server add Relay1-ether3 relay=192.168.1.1 address-pool=Relay1 src-address=10.10.10.1 interface=ether3
Шаг 5: На вашем релейном сервере укажите адрес реле как петлевой адрес 10.10.10.1:
/ip dhcp-relay add name=LocalRelay1 interface=Local1 dhcp-server=10.10.10.1 local-address=192.168.1.1 disabled=no
Почему не работает один DHCP-сервер на bridge1:
Если вы поставите interface=bridge1 на DHCP-сервере, процесс никогда не получит пакеты. DHCP-демон слушает пакеты, приходящие ВНУТРЬ Mikrotik с интерфейса bridge1 (представьте правило файрвола in-interface=bridge1), но пакеты на самом деле приходят на ether1, ether2 или ether3 — как определяют протоколы маршрутизации, — и поэтому не передаются DHCP-серверу.
Создание трёх (в этом примере) процессов DHCP-сервера позволяет Mikrotik слушать все интерфейсы, но использовать общий пул адресов. Если вы меняете параметры или опции в настройках сети, они применятся ко всем трём серверам.
Если вы создаёте статичную запись в Mikrotik, убедитесь, что убрали указание конкретного сервера из статической записи!
Ещё один вариант — просто создать Metarouter, специально для запуска DHCP.