DHCP (Dynamic Host Configuration Protocol)

Dependences: IP

DHCP (Dynamic Host Configuration Protocol) — протокол динамической конфигурации хоста. Позволяет автоматически получить сетевые настройки без ручной конфигурации.

Преимуществами являются:
  • автоматизация конфигурации хостов (администратору не нужно настраивать каждый хост)
  • уменьшение вероятности ошибочной конфигурации (человеческий фактор)
  • простой переход на новую схему адресации
  • защита от подмены адресов
  • возможность подключения только авторизированных клиентов

Получение конфигурации

Простая схема получения конфигурации показана на рисунке.

DHCP

DISCOVER отправляется широковещательным сообщением. Цель этого сообщения — обнаружить все DHCP серверы в сети.

Все серверы в сети пытаются выделить свободный адрес и, в случае успеха, отправляют обратно клиенту OFFER (предложение). В этом сообщении содержится предлагаемая конфигурация, в которую входит не только IP адрес, но и маска сети, MTU интерфейса, маршрут по умолчанию, бесклассовые маршруты, путь для загрузки по сети и др.

Так как отвечают все серверы, клиенту необходимо выбрать лишь одно предложение. Выбранным может быть первое пришедшее предложение или выбор может основываться на адресе DHCP сервера. После выбора конфигурации клиент отправляет широковещательное сообщение REQUEST, в котором повторяется выбранная конфигурация. Это сообщение служит для  запроса аренды у сервера.
Широковещательная рассылка нужна для того, чтобы остальные серверы освободили выделенные ресурсы.

Серверы узнают о принадлежности конфигурации серверу исходя из уникального поля идентификатора в сообщениях. Этот уникальный идентификатор устанавливается сервером в сообщении OFFER.
Если сервер принимает заявку на аренду, он отвечает Ack и клиент может использовать адрес. Но возможен вариант, когда сервер отвечает NAck, тогда клиенту нужно повторить процесс получения конфигурации.

Клиент, получив адрес в аренду, сохраняет его. При следующей загрузке DHCP клиент будет пытаться получить старый адрес. Для этого он отправляет сообщение REQUEST одноадресной рассылкой со старой конфигурацией. На что сервер отвечает либо Ack, либо NAck.

Таким образом отбрасываются первые два шага описанного выше процесса получения конфигурации.

Отдельного внимания заслуживает процесс определения конфигурации, которую выдает сервер клиенту.
Приведу выдержку из RFC 2131, в которой описывается алгоритм выбора адреса:

  • The client's current address as recorded in the client's current binding, ELSE
  • The client's previous address as recorded in the client's (now expired or released) binding, if that address is in the server's pool of available addresses and not already allocated, ELSE
  • The address requested in the 'Requested IP Address'option, if that address is valid and not already allocated, ELSE
  • A new address allocated from the server's pool of available addresses; the address is selected based on the subnet from which the message was received (if 'giaddr'is 0) or on the address of the relay agent that forwarded the message ('giaddr'when not 0).     



Время аренды

Хосты арендуют адрес на время, по истечению которого выделенный адрес считается свободным. Поэтому клиент должен запросить заново используемый адрес до истечения времени аренды. Если обновить адрес не удается, то клиент не может больше использовать динамически выданную конфигурацию.

Так как продлить аренду необходимо до истечения времени ее действия, клиент посылает запрос REQUEST по истечению половины времени действия аренды.

DHCP сервер может отказать в продлении аренды, ответив NAck. В таком случае клиент запрашивает новый адрес. Следует отметить, что для пользователя такая смена IP адреса должна быть незаметна. Поэтому рекомендуется использовать DNS в связке с DHCP сервером, и вместо IP адресов использовать Hostname.

DHCP Relay

DHCP relay agent — это хост или маршрутизатор, который перенаправляет DHCP сообщения между DHCP клиентом и DHCP сервером.
DHCP Relay агент слушает DHCP DISCOVERY сообщения в определенных сетях и, получив их, перенаправляет DHCP серверу одноадресной рассылкой (unicast). Использование одноадресной рассылки позволяет находится серверу в сети, отличной от сети агента.
DHCP Relay агент позволяет связать множество сетей с одним или несколькими DHCP серверами, которые находятся в других широковещательных доменах с клиентами.
Также важной возможностью агентов является отслеживание аренды адресов и фильтрация трафика от неавторизированных клиентов. Также агенты могут фильтровать DHCP сообщения от сторонних DHCP серверов и выполнять другие задачи защиты сети.

Благодарим за статью: Дмитрия Подгорного

Войти