В простых сетях DHCP-сервер и клиенты обычно находятся в одном сегменте. Клиент шлет broadcast-запрос, сервер отвечает и все работает. Но как только появляется маршрутизатор, broadcast дальше не идет, и DHCP внезапно ломается.
Именно для таких случаев и нужен DHCP relay.
Идея простая: маршрутизатор принимает DHCP-broadcast от клиента и пересылает его unicast’ом на DHCP-сервер в другой сети. Ответ сервера он так же передает обратно клиенту.
▪️ Как это выглядит логически
Клиент: DHCPDISCOVER (broadcast)
Маршрутизатор (relay): ловит запрос и отправляет его на DHCP-сервер
DHCP-сервер: выдает адрес с учетом подсети клиента
Relay: возвращает ответ клиенту
Ключевой момент - relay добавляет в пакет поле giaddr, по которому сервер понимает, из какой сети пришел запрос.
▪️ Пример на Linux (isc-dhcp-relay)
1️⃣ Устанавливаем relay:
apt install isc-dhcp-relay
2️⃣ Указываем IP DHCP-сервера, например 10.50.0.10, и интерфейсы, где сидят клиенты:
INTERFACES="eth1 eth2"
SERVERS="10.50.0.10"
3️⃣ Перезапускаем:
systemctl restart isc-dhcp-relay
Готово. Клиенты из разных VLAN/подсетей будут получать IP от одного центрального DHCP-сервера.
▪️ Где это реально используется
Несколько VLAN, один DHCP-сервер
Офисы с централизованной сетевой инфраструктурой
Wi-Fi контроллеры и L3-коммутаторы
MikroTik / Cisco / Juniper - relay там настраивается аналогично
▪️ Важно помнить
На DHCP-сервере должны быть описаны все подсети
UDP порты 67/68 должны быть разрешены
Без relay DHCP через маршрутизатор не работает по определению
#networking #dhcp
🧑💻 NetworkAdmin