Атакуем dhcp

Резервирование адресов

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

Есть простой способ решить эту задачу с помощью DHCP — зарезервировать IP-адрес за конкретным компьютером.

Для этого переходим в подпункт «Резервирование адресов» пункта меню «DHCP». Если ранее вы уже резервировали адреса, здесь будет доступен список устройств, который можно редактировать по мере необходимости. Если же нет, жмём кнопку «Добавить».

В открывшемся окне нужно ввести МАС-адрес устройства и IP, который будет за ним зарезервирован.

Атакуем dhcp

Здесь же можно включить или выключить резервирование адреса для этого устройства, изменив соответствующий параметр в пункте «Состояние».

После ввода параметров нажмите кнопку «Сохранить». Теперь это устройство всегда будет получать при подключении к сети только этот IP-адрес.

После сохранения параметров вы вернётесь в предыдущее окно. В списке устройств теперь будет видно то, которое вы только что добавили. Нажав «Изменить», вы можете отредактировать параметры резервирования адреса. А с помощью пункта «Удалить» удалить устройство из списка и отменить резервирование.

Атакуем dhcp

С помощью кнопок «Включить всё», «Отключить всё» и «Удалить всё» вы можете управлять резервированием адресов для всех устройств из списка.

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

Общее понятие стандарта

Атакуем dhcp

DHCP — это стандарт используется, чтобы хост-системы в сети TCP/IP настраивались автоматически для сети при загрузке с применением механизма клиент/сервер. Они хранят и управляют информацией для клиентов и предоставляют эту информацию по их запросу, которая включает в себя IP-адрес и доступные сетевые услуги. Dhcp-сервер произошел из более раннего протокола BOOTP, который применялся для загрузки по сети TCP/IP , используя тот же формат для сообщений с клиентом, включая дополнительную информацию про данные конфигурации клиентской сети.

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

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

Хост-машина под управлением Linux

Атакуем dhcp

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

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

Установка Linux DHCP:

  1. RHEL / CentOS: yum install dhcp -y.
  2. Ubuntu раньше 12.04 или Debian старше Wheezy (7.0): sudo apt-get install dhcp3-server.
  3. Ubuntu 12.04 и более поздние версии или Debian Wheezy, а затем: sudo apt-get install isc-dhcp-server. Чтобы запустить сервер и настроить его на автозапуск при загрузке.
  4. Выбрать команду на основе установленной версии DHCP.

Настройка dhcp сервера ISC-DHCP:

  1. Запуск службы isc-dhcp-server chkconfig isc-dhcp-server on dhcp3.
  2. Запуск службы dhcp3-server chkconfig dhcp3-server on DHCPD (CentOS / RHEL).
  3. Запуск службы dhcpd chkconfig dhcpd.

Понятие DHCP

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

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

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

Для взаимодействия DHCP-сервера и DHCP-клиента используется специальный протокол DHCP, который является расширением протокола BOOTP (Bootstrap Protocol). DHCP устраняет определенные ограничения, которые BOOTP имел в качестве службы настройки узла.

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

  • автоматическое назначение сетевым узлам IP-адресов и прочих параметров протокола TCP/IP (например, маска подсети, адрес основного шлюза подсети, адреса серверов DNS и WINS);
  • недопущение дублирования IP-адресов, назначаемых различным узлам сети;
  • освобождение IP-адресов узлов, удаленных из сети;
  • ведение централизованной БД выданных IP-адресов.

Во взаимодействии по протоколу DHCP принимают участие две или три стороны:

  1. DHCP-клиент — тот, кто хочет получить параметры настройки TCP/IP;
  2. DHCP-сервер — тот, кто выдаёт эти параметры;
  3. DHCP-ретранслятор (relay agent) — вспомогательный участник, который может играть роль посредника между клиентом и сервером. Он используется в тех случаях, когда у клиента нет возможности обратиться к серверу напрямую, в частности, в том случае, если они находятся в разных широковещательных доменах. DHCP-ретранслятор обрабатывает стандартный широковещательный DHCP-запрос и перенаправляет его на DHCP-сервер в виде целенаправленного (unicast) пакета, а полученный от DHCP-сервера ответ, в свою очередь, перенаправляет DHCP-клиенту.

Как правило, DHCP-сервер выделяет IP-адреса (и прочие параметры TCP/IP) одним из двух способов:

  1. Случайным образом из предопределённого пула (в том случае, если клиенту ранее уже выдавался какой-то адрес, он может попробовать получить его вновь);
  2. Жёстко зафиксированным образом, исходя из MAC-адреса клиента.

В роли DHCP сервера может выступать сервер под управлением серверной ОС семейства Linux или Windows, некоторые модели коммутаторов и даже обычные компьютеры с клиентскими операционными системами, в случае если на них установлено специализированное программное обеспечение.

Перейдем к shellshock

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

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

Ответ: практически в любые! Вот список кодов DHCP-опций, в которые возможно инъектировать (проверено на NetworkManager из состава CentOS 6.5): , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , , 214, 215, 216, 217, 218, 219, , , , , 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 (). Почему? Потому, что ее длина — вариативна (максимальная длина — 256 байт), а также потому, что ее все используют. Ее описание еще есть здесь. Существует даже статья о том, как с помощью этой опции обновить уязвимые к shellshock системы 🙂

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

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

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

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

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

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

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

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

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

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

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

Видео:

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

01.09.2019  windows | интернет

При проблемах с доступом в Интернет в Windows 10 и попытке устранения неполадок в «Диагностике сетей Windows» вы можете получить сообщение «DHCP не включен на сетевом адаптере Беспроводная сеть» или «сетевом адаптере Ethernet», при этом в параметрах сети и Интернет вы можете видеть сообщение: «Без доступа к Интернету. Устройство подключено, но доступ к данным сети может быть ограничен», либо «Нет подключения. Вы не подключены ни к одной сети».

В этой инструкции подробно о том, как исправить ошибку «DHCP не включен на сетевом адаптере» в Windows 10 и восстановить доступ к Интернету. Также может быть полезной отдельная инструкция: Не работает Интернет в Windows 10.

  • Причина проблемы и методы исправления
  • инструкция

Основная причина проблемы и способы её исправить

Самая частая причина ошибки «DHCP не включен на сетевом адаптере» — изменение параметров сетевого подключения (самостоятельное или какой-либо программой), отключающее DHCP, как об этом и сообщает утилита устранения неполадок. Под DHCP здесь понимается опция автоматического получения IP-адреса вашим сетевым адаптером. Второй по распространенности вариант — указание неверного для вашей сети статического IP-адреса (иногда он может стать неверным после того, как вы изменили параметры LAN на роутере). Чтобы включить DHCP снова, или поменять параметры IP-адреса вы можете:

  1. В диагностике неполадок нажать «Попробуйте выполнить восстановление от имени администратора». А в следующем окне с заголовком «Автоматически обновлять параметры сети» — нажать «Внести это исправление».
  2. Если всё прошло успешно, в результате вы должны получить сообщение о том, что проблема «DHCP не включен на сетевом адаптере» для адаптера Ethernet или Беспроводная сеть была исправлена.
  3. Если предыдущее не помогло, нажмите клавиши Win+R (Win — клавиша с эмблемой Windows) на клавиатуре, введите ncpa.cpl и нажмите Enter.
  4. В открывшемся списке сетей нажмите правой кнопкой мыши по той сети, которая сообщает о проблеме и выберите пункт меню «Свойства».
  5. В списке компонентов подключения выберите IP версии 4 и нажмите «Свойства».
  6. Убедитесь, что в общих свойствах установлено «Получить IP-адрес автоматически и «Получить адрес DNS-сервера автоматически». Если это не так, установите соответствующие параметры и примените настройки.
  7. Если параметры уже заданы на автоматическое получение параметров, попробуйте, наоборот, вручную ввести IP-адрес: в качестве адреса используйте адрес вашего роутера с отличающимся последним числом (адрес роутера обычно указан на нем самом на наклейке сзади/внизу). Например, адрес роутера — 192.168.1.1, в качестве IP указываем что-то наподобие 192.168.1.33 (не следует указывать 2-ку и т.п., они могут быть заняты), маска подсети будет подставлена автоматически, в «Основной шлюз» указываем просто адрес роутера. Для DNS можно указать 8.8.8.8 и 8.8.4.4 соответственно. Примените настройки. Если вы не знаете адрес роутера, то почти всегда это 192.168.1.1 или 192.168.0.1, можно просто поочередно попробовать оба варианта.

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

  • Если у вас прямое кабельное подключение от провайдера и роутер не используется, и вы проверили, что кабель подключен надежно, проблема может быть со стороны самого Интернет-провайдера (в этом случае она обычно исправляется в короткие сроки с его стороны).
  • Перезагрузите роутер, если он используется для подключения (выключите его из розетки, подождите несколько секунд, снова включите и подождите, когда загрузится).
  • Выполните сброс сетевых настроек Windows 10.
  • Попробуйте отключить протокол IP версии 6 в компонентах подключения — снять галочку в окне, которое вы видели на шаге 5 и применить настройки.
  • Если вы перед появлением проблемы меняли настройки роутера, возможно, стоит сбросить их и выполнить настройку заново.
  • Если у вас установлен сторонний антивирус, попробуйте отключить функции сетевой защиты в нем или полностью отключить антивирус.
  • Загляните в диспетчер устройств (правый клик по кнопке пуск — диспетчер устройств) и откройте раздел «Сетевые адаптеры». Откройте свойства Wi-Fi адаптера (если ошибка возникает на сетевом адаптере «Беспроводная сеть») или Ethernet-адаптера. Проверьте, активна ли кнопка «Откатить» на вкладке «Драйвер». Если да — используйте её.
  • Проверьте, есть ли точки восстановления на дату, предшествовавшую появлению проблемы. Если да, используйте их. См. Точки восстановления Windows 10.

Алгоритм работы[править]

Получение IP адресаправить

Клиент посылает в свою подсеть широковещательное сообщение DHCPDISCOVER, в котором могут указываться устраивающие клиента IP-адрес и срок его аренды. В качестве IP-адреса источника указывается 0.0.0.0, в качестве адреса назначения — 255.255.255.255. Если DHCP-сервер отсутствует в подсети, то сообщение будет передано в другие подсети агентами протокола BOOTP.

  • Получив запрос от клиента, DHCP-сервер отвечает на него сообщением DHCPOFFER

    На данном этапе сервер не обязан резервировать адрес, который он отправил клиенту.

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

  • Получив конфигурации от серверов (их может быть несколько, если в подсети более одного DHCP-севрера), клиент отправляет широковещательное сообщение DHCPREQUEST

    На данном этапе допускается, что клиента не устроит ни один из предложенных адресов, тогда он вновь отправит DHCPDISCOVER.

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

Получив DHCPREQUEST и убедившись, что в сообщении его идентификатор, сервер проверяет свободен ли в данный момент запрошенный адрес. Если да, то отправляет DHCPACK и вносит запись в базу, иначе отправляет DHCPNACK.

  • Получив сообщение DHCPACK, клиент обязан убедиться в уникальности IP-адреса (средствами протокола ARP) и зафиксировать суммарный срок его аренды.
    • Срок аренды: время, прошедшее между отправкой сообщения DHCPREQUEST и приемом ответного сообщения DHCPACK + срок аренды, указанный в DHCPACK.
    • Если адрес уже используется другой станцией, клиент отправляет DHCPDECLINE и начинает всю процедуру снова.

Для досрочного прекращения аренды адреса клиент отправляет серверу сообщение DHCPRELEASE.

Выбор адреса DHCP-серверомправить

Алгоритм работы DHCP-сервера при получении DHCPDISCOVER:

  • Если клиент запросил конкретный адрес, и в данный момент этот адрес свободен, то он будет отправлен клиенту.
  • Если клиент не запрашивал адрес, и адрес, закрепленный за ним в данный момент, свободен, то он будет отправлен клиенту.
  • Если ни один из предыдущих пунктов не выполнен, то адрес случайно выбирается из пула свободных адресов.
  • Если в пуле нет свободных адресов, то сервер отправляет сообщение о проблеме администратору.

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

Истечение срока аренды адресаправить

Когда срок аренды адреса подходит к концу клиент может:

  • Отправить DHCPRELEASE и начать процедуру получения адреса заново
  • Продлить аренду текущего адреса по алгоритму:
    • Когда проходит половина времени аренды адреса, клиент переходит в состояние RENEWING.
      • Клиент оправляет DHCP-серверу, выдавшему адрес, сообщение DHCPREQUEST с просьбой продлить срок аренды.
      • Получив DHCPACK, клиент пересчитывает срок аренды и продолжает работу в обычном режиме.
    • Если ответ не получен к моменту времени = 7/8 срока аренды адреса, то клиент переходит в состояние REBINDING.
      • Клиент отправляет широковещательное сообщение DHCPREQUEST со своим текущим сетевым адресом.
      • Получив DHCPACK, клиент пересчитывает срок аренды и продолжает работу в обычном режиме.
    • Если к моменту окончания аренды ответ не получен, то процедура получения адреса начинается сначала.
    • Если ответ DHCPACK придет с опозданием, но до завершения новой процедуры получения адреса, то клиент продолжает пользоваться предыдущим адресом.

Конфигурирование DHCP роутера

Если
настройки по умолчанию не устраивают, то можно изменить конфигурацию
параметров. В том же меню, где мы включили функцию раздачи адресов,
можно ввести диапазон раздачи IP-адресов, например 192.153.0.1 –
192.153.0.3. Для работы можно указать и всего два адреса, например, для
ноутбука и мобильного телефона. Это ограничивает количество одновременно
работающих устройств, что является самой простой защитой соединения.

Далее
настраиваем шлюз (Gataway). Это IP-адрес устройства, через которое
проходит интернет для устройств. Обычно этот параметр такой же, как и
IP-адрес роутера.

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

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

Как работает DHCP?

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

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

Возможности сервера DHCP

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

  • Шлюзы по умолчанию. Если в вашей сети имеется несколько Интернет-каналов (для обеспечения бесперебойной работы), вы можете назначить хостам несколько шлюзов и порядок их предпочтения. В случае выхода одного из каналов из строя, переключение на резервный канал произойдет автоматически, без вашего вмешательства. Это же дает возможность организовать простейшую балансировку нагрузки между каналами, назначив по DHCP одной группе хостов один маршрутизатор в качестве шлюза, а другой группе – второй.
  • Статические маршруты. Если в вашей сети есть несколько подсетей, соединенных маршрутизаторами, то при помощи DHCP можно автоматически оповещать хосты о наличии маршрутов в другие подсети. Причем это, по желанию, можно сделать только для избранных – например, используя привязку к MAC. Эта же опция полезна при организации VPN-доступа к корпоративной сети – VPN-клиентам можно сообщить маршруты лишь к нужным им подсетям, оставив другие подсети недоступными для подключающихся по VPN пользователей.
  • Смещение времени. Если ваши пользователи часто бывают в различных временных поясах (например, мотаются из Питера во Владивосток и обратно), то можно заставить системные часы их ноутбука адаптироваться к вашему местному времени при помощи DHCP.
  • Сервер синхронизации времени. Поскольку часы компьютеров славятся своей неточностью, их желательно синхронизировать с какими-то эталонными часами. Для этого используется служба NTP. Информацию о сервере NTP можно раздавать хостам при помощи DHCP.
  • DNS-серверы. С помощью этой опции вы можете назначать вашим клиентам DNS-серверы как внутри сети, так и за ее пределами. Причем, в отличие ручной настройки интерфейса, вы можете передать хосту обширный список доступных DNS-серверов.
  • Настройки сервера загрузки – настройки протокола TFTP/BOOTP, необходимые для бездисковой загрузки хостов. Эта возможность востребована при наличии в сети бездисковых терминалов, загружающихся по сети, и при организации дистанционной автоматической установки ОС на компьютеры пользователей (об этом поговорим отдельно)
  • Списки доступных SMTP и POP серверов.
  • Настройки WINS и Netbios
  • Размер MTU, время жизни кэша ARP, размер TTL и др.

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

Протокол DHCP

Протокол DHCP (Dynamic Host Configuration Protocol — протокол динамического конфигурирования хостов) является протоколом клиент-серверной модели. То есть, есть сервер DHCP (демон dhcpd) отвечающий на запросы клиентов и есть клиент DHCP (dhclient) посылающий запросы и принимающий ответы от сервера. Передача данных производится при помощи протокола UDP, при этом сервер принимает сообщения от клиентов на порт 67 и отправляет сообщения клиентам на порт 68.

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

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

1. Обнаружение DHCP (DHCPDISCOVER)

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

2. Ответ DHCP — сервера (DHCPOFFER)

Получив сообщение от клиента, сервера определяют требуемую конфигурацию клиента в соответствии со своими указанными в конфигурационном файле настройками. Все сервера, получившие запрос, формируют ответ (DHCPOFFER), содержащий конфигурацию клиента, и отправляют его клиенту на MAC-адрес. В ответе содержится следующая информация: IP, назначенный хосту, и прочие параметры (такие, как адреса маршрутизаторов и DNS-серверов). Клиент получает ответы от всех серверов DHCP, функционирующих в сети, из них он должен выбрать тот, который его «устраивает» (а устраивает его скорее всего тот, который пришел первым).

3. Запрос DHCP-сервера (DHCPREQUEST)

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

4. Подтверждение от DHCP-сервера (DHCPACK)

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

При этом, кроме указанных сообщений, возможны и другие (на схеме указаны пунктиром):

Отказ от настроек, предоставленных DHCP-сервером (DHCPDECLINE)

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

Отмена от DHCP-сервера (DHCPNAK)

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

Освобождение адреса DHCP (DHCPRELEASE)

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

Информация DHCP (DHCPINFORM)

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

DHCP – это что такое?

Разберемся
в этом вопросе. Во избежание ошибок при адресации был реализован
протокол динамического конфигурирования хостов (DHCP). Это функция,
которая осуществляет динамическую раздачу сетевых настроек
подключившимся клиентским машинам. Если на этих устройствах в настройках
стоит параметр «получать IP-адрес только с DHCP сервера» и включена
служба DHCP, то вся ответственность за правильную настройку сетевых
параметров на клиентских компьютерах передается DHCP-серверу. Это
значительно снижает стоимость поддержки и управления сетью, а также
помогает избежать ошибок в раздаче адресов. Служба, включающая DHCP, по
умолчанию запускается автоматически при включении любого устройства с
поддержкой интерфейсов проводной или беспроводной сети. Например, на
планшетах или телефонах достаточно включить Wi-Fi и среди найденных
устройств, раздающих интернет, найти свое и подключиться к нему. При
этом автоматическая раздача адресов исключает дублирование IP и, как
следствие, помогает избежать конфликтов сети.

Атакуем dhcp