Для чего нужен relay agent

Первичный DHCP-запрос клиента может быть широковещательным и не проходит через маршрутизатор как обычный пакет. Если сервер находится в другой подсети, relay agent принимает запрос в клиентском сегменте и передает его серверу. Это позволяет обслуживать несколько сетей без отдельного DHCP-сервера в каждой из них.

Функция relay может работать на маршрутизаторе или отдельном узле, но по смыслу она отличается от обычной IP-маршрутизации. RFC 1542 поясняет, что relay агент принимает BOOTP-сообщение и создает новое сообщение для следующего адресата; нельзя сводить его работу к прозрачному перенаправлению исходного пакета.

Что происходит с запросом

В DHCP/BOOTP-сообщении есть поле giaddr, связанное с адресом шлюза. Relay использует его в обработке запроса, чтобы сервер мог определить клиентскую сеть и выбрать подходящую конфигурацию. Ответ затем проходит обратно через relay к клиенту. Для расширенной передачи сведений о сети RFC 3046 описывает Relay Agent Information Option, известную также как Option 82; поддержка и правила заполнения зависят от оборудования и конфигурации.

Эти детали важны при нескольких VLAN или подсетях. Наличие IP-связности между сервером и маршрутизатором еще не доказывает, что сообщения DHCP доходят в нужном направлении и что сервер видит правильную клиентскую сеть.

Как отличить проблему relay от проблемы пула

Если клиент не получает предложение, проверьте по порядку: находится ли клиент в нужном VLAN, включен ли relay для его интерфейса, указан ли правильный адрес сервера, проходит ли обратный ответ и совпадает ли подсеть с областью выдачи на DHCP-сервере. Для Option 82 дополнительно проверьте, принимает ли сервер добавленную информацию и согласован ли формат между устройствами.

Relay не создает адресный пул и не решает сам, кому выдать адрес. Он также не заменяет DNS-сервер. Не включайте его на рабочем маршрутизаторе без согласования: ошибка в helper-настройке может повлиять на выдачу параметров целой сети.

В связанной статье DHCP описан обмен клиента и сервера; для общей картины также пригодятся DNS и сетевые порты. Использованы RFC 1542, RFC 2131 и RFC 3046; сетевое оборудование не настраивалось и пакеты не отправлялись.