Dynamic Host Configuration Protocol (DHCP)

  • BOOTP протокол, позволяющий бездисковым клиентам во время старта конфигурировать установки TCP/IP.
  • DHCP – расширение BOOTP.
  • Каждый раз при запуске DHCP клиента он запрашивает информацию у DHCP сервера. Информация включает в себя обязательным образом IP адрес и маску подсети, дополнительно может передаваться адрес default gateway и адреса WINS и DNS серверов.
  • Если пул адресов DHCP сервера весь распределен на момент подачи запроса клиента, то клиент не сможен инициализировать TCP/IP.

Недостатки ручной конфигурации TCP/IP

  • Неправильный набор IP адреса, маски подсети и default gateway может привести к большим проблемам (сам знаю - это действительно так).
  • При перемещении компьютера из одной подсетки в другую требуется переконфигурить установки TCP/IP.

Процесс конфигурирования DHCP клиента

Запрос на выделение IP адреса При запуске клиента запускается урезанная версия TCP/IP и широковещательным сообщением посылается запрос об адресе DHCP сервера (DHCPDISCOVER message). Клиент использует 0.0.0.0 как исходный адрес в сообщении и 255.255.255.255 как адрес назначения. В запросе также указывается MAC адрес и имя клиента.

Процесс выделения IP адреса происходит в следующих случаях:

  • TCP/IP инициализируется при запуске клиента
  • Клиент запросил конкретный IP адрес, но он уже занят
  • Клиент уже получил IP адрес, но освободил его и требуется выделение нового адреса.
Предложение IP адреса Все DHCP сервера, получившие запрос, отвечают на него, посылая клиенту следующую информацию:
  • MAC адрес клиента
  • Предложенный IP адрес
  • Маска подсети
  • Время жизни предлагаемого IP адреса
  • Собственный IP адрес
Выбор IP адреса Клиент принимает первый поступивший ответ от DHCP сервера и посылает в сеть широковещательное сообщение (DHCPREQUEST), в котором сообщает, что принимает поступивший IP адрес (сообщение также содержит IP адрес сервера, предложение которого принято).

Клиент ждет предложения IP адреса 1 секунду. Если ни один DHCP сервер не ответил, то клиент повторяет запрос с интервалом 9, 13 и 16 секундный интервал плюс случайное значение в пределах от 0 до 1000 миллисекунд. Если ответ все равно не получен, клиент возобновляет попутки через 5 минут.

Подтверждение выбора IP адреса DHCP сервер, предложение которого принято, подтверждает выделение IP адреса сообщением (DHCPACK). Это сообщение помимо подтверждения собержит иногда другую дополнительную информацию, такую как адреса WINS и DNS серверов и др. Клиент запоминает полученную информацию в реестре HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\adapter\Parameters\Tcpip

Процесс обновления IP адреса

Инициализация запроса на обновление IP адреса DHCP клиент пытается обновить выделенный IP адрес по истечении половины времени его жизни. Для этого посылается DHCPDISCOVER сообщение непосредственно на DHCP сервер.

Если сервер доступен, то он посылает клиенту DHCPACK сообщение с новым временем жизни IP адреса и другими конфигурационными параметрами.

Если сервер недоступен, то клиент повторяет попытки до истечения оставшейся половины срока жизни IP адреса.

Если клиент был перезагружен, то он посылает DHCPREQUEST сообщение с просьбой выделить ему свой старый IP адрес. В случае неудачи или ошибки клиент продолжает использовать старый IP адрес.

Последующие попытки обновления IP адреса Если неудалось обновить IP адрес на выделившем его DHCP сервере, клиент пытается связаться с другими DHCP серверами по истечении 87.5% времени жизни IP адреса. Он посылает широковещательное сообщение DHCPREQUEST. Любой DHCP сервер может ответить DHCPACK сообщением (подтверждение обновления IP адреса) или DHCPNACK сообщением (инициирует переинициализацию клиента для получения нового IP адреса)

По истечении срока жизни IP адреса и невозможности его обновить связь по TCP/IP прерывается до получения клиентом нового IP адреса.

Дополнительные полезные рассуждения

Перед установкой DHCP сервера ответьте себе на следующие вопросы:

  • Будут ли все компьютеры в сети DHCP клиентами ? Если нет, то:
    • Эти компьютеры будут иметь статические IP адреса
    • Статические адреса должны быть исключены из конфигурации DHCP сервера
    • Если клиент требует определенного адреса, то этот адрес должен быть зарезервирован
  • Будет ли DHCP сервер обслуживать несколько подсетей? Если так, то:
    • Все маршрутизаторы, соединяющие подсети должны быть BOOTP совместимыми, иначе придется ставить DHCP сервера в каждой подсетке, в которой есть DHCP клиенты.
  • Сколько DHCP серверов требуется в сети?
    • DHCP сервера не обмениваются между собой информацией. Поэтому необходимо, чтобы области IP адресов на каждом DHCP сервере не пересекались.

Применение нескольких DHCP серверов

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

  • Каждый DHCP сервер должен содержать набор, имеющий порядка 75% адресов данной подсети.
  • Каждый DHCP сервер должен содержать наборы адресов каждой удаленной подсети, содержащие приблизительно 25% от имеющихся в них адресов.

Это нужно для того, чтобы клиент мог получить требуемый адрес даже если DHCP сервер в его собственной подсети недоступен.

Требования к конфигурации DHCP

Маршрутизаторы Все маршрутизаторы должны быть совместимы с RFC1542, то есть быть BOOTP совместимыми.
Сервера
  • DHCP ставится как минимум на один NT сервер (не ставится на Workstation)
  • Сервер DHCP должен иметь статический IP адрес
  • Каждый DHCP сервер должен иметь набор IP адресов, для выдачи их клиентам.
Клиенты
  • Windows Windows NT Server or Workstation 4.0.
  • Windows 95.
  • Windows for Workgroups 3.11 running Microsoft TCP/IP-32.
  • Microsoft Network Client 3.0 for MS-DOS with real-mode TCP/IP driver.
  • LAN Manager 2.2c (LAN Manager 2.2c for OS/2 not supported).