Клиент dhcp посылает сообщение discover

Обновлено: 02.07.2024

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

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

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

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

DHCP, как определено в документе RFC 2131, был разработан на базе протокола BOOTP (Bootstrap Protocol), с помощью которого клиент может автоматически получить IP-адрес, обычно, во время загрузки компьютера.

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

DHCP-клиент

DHCP-сервер

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

  • IP-адрес (IP-address), назначается динамически;
  • Маска подсети (subnet mask), назначается статически;
  • Шлюз сети по умолчанию (default gateway), назначается статически;
  • Первичный DNS-сервер (primary DNS server), назначается для связывания доменного имени и назначенного IP-адреса;
  • Вторичный DNS-сервер (secondary DNS server), назначается статически для избыточности и балансировки нагрузки.

Агент-ретранслятор DHCP

DHCP-транзакция

Рис. 2. Процесс DHCP-транзакции.

Возобновление назначения IP-адреса

Если клиенту нужно продлить время назначения (lease time), по истечении примерно 50% времени назначения IP-адреса, он должен выполнить процедуру возобновления назначения (lease renewal). При этом выполняется более простая процедура, чем начальное назначение IP-адреса.

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

Конфигурация DHCP

При DHCP-транзакции могут конфигурироваться DHCP-серверы, DHCP-клиенты, агенты-ретрансляторы (Relay agent), а также пороги ограничения времени назначения (Short lease threshold).

Конфигурация DHCP-клиента

Код параметра в поле Option

Описание

1

Маска подсети для устройства (subnet mask)

3

Список маршрутизаторов по умолчанию

6

Список серверов DNS

15

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

51

Истечение заданного времени назначения (lease time)

Конфигурация DHCP-сервера

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

Конфигурация пула адресов предусматривает следующее:

  1. Создание пула и вхождение в его режим конфигурации.
  2. Определение сети, для которой предназначен этот пул.
  3. Определение диапазона IP-адресов, которые DHCP-сервер может назначать DHCP-клиентам. Можно также назначить несколько диапазонов для каждого пула.
  4. Установка вида назначения (lease) для клиентов, который определяет, получает ли клиент IP-адрес динамически, статически или постоянно.
    1. Динамический IP-адрес может использоваться клиентом в течение ограниченного времени, по истечению которого сервер может переназначить этот адрес для другого устройства;
    2. Постоянный IP-адрес назначается устройству на неограниченное время;
    3. Статический IP-адрес назначается определённым клиентам. DHCP-сервер может распознать клиента по его МАС-адресу (фиксированному адресу, встроенному в устройство). Это может делаться для ключевых устройств в сети, например, для серверов, принтеров и пр.

    Конфигурация агента-ретранслятора

    Конфигурация порога короткого времени назначения (short lease threshold)

    Время короткого назначения (short lease time) конфигурируется для различных ситуаций, например, для бесплатного доступа wifi в кафе. Можно назначить, например, один час бесплатного доступа, после чего пользователю будет необходимо вновь регистрироваться в сети. В условиях предприятия время назначения можно задавать в пределах дней или недель.

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

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

    Можно сделать и так, что устройство будет просто запрашивать новый адрес при необходимости. В этом случае, можно установить порог кроткого времени назначения (short lease threshold), которое может составлять от 1 минуты до 24 часов. В этом случае, любое время назначения не превышающее порог short lease threshold, не будет сохраняться в резервной постоянной памяти.

    Решение DDI

    Основными элементами управления в IP-сетях являются DNS, DHCP и управление IP-адресами IPAM (IP address management). Эти элементы тесно связаны друг с другом. Однако, раздельное управление этими элементами создает много проблем в плане эффективности и операционными рисками, например:

    1. Ограниченная и раздельная видимость размещенных ресурсов в сети, что ограничивает возможности планирования и разворачивания новых сервисов;
    2. Неэффективное общее управление размещением IP-адресов и конфигурацией DNS- и DHCP-серверов, что приводит к конфликтам в сети;
    3. Ручное выполнение многих задач по администрированию сетей, что занимает много времени и снижает эффективность бизнеса;
    4. Слабые механизмы резервирования DNS и DHCP, что создает высокие риски нестабильности IP-сервисов;
    5. Проблемы масштабирования, сложности администрирования пространств из миллионов IP-адресов, со множеством DNS-DHCP серверов;
    6. Ограничение в автоматизации предоставления облачных услуг вследствие не интегрированных IP-ресурсов в процессах провиженинга облачных сервисов.

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

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

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

    9.3.1 Введение

    9.3.2 Общая структура DHCP пакета, назначение его полей и их размер

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

    9.3.1 Структура DHCP-пакета, поля и их размер

    Сама по себе картинка нам еще ничего не дает, кроме названия полей в DHCP-пакета, также мы видим, что пакет разбивается на строки (иначе, машинные слова), каждая строка 32-а бита. Крайний левый бит в слове имеет нулевой порядковый номер, а крайний правый бит 31-ый. Размер всех полей в битах кратен числу 8.

    Давайте теперь поговорим более подробно о каждом поле DHCP пакета. Для их описания я подготовил таблицу.

    Всё самое важное подсвечено красным цветом. Мы видим, что в качестве мак-адреса источника клиент подставил свой мак-адрес, а вот мак-адрес сервера он не знает, поэтому использует широковещательный мак-адрес. Даже если клиент будет знать IP-адрес DHCP-сервера, ему это не поможет, ведь для того, чтобы обратиться к серверу по протоколу IP, клиент должен сделать ARP-запрос, а как он это сделает, если у него еще нет IP-адреса?

    Флаги – отдельная тема, сейчас мы их пропустим. У клиента еще нет и не было IP-адреса, клиент не знает IP-адрес сервера, клиент ничего не знает по DHCP Relay Agent, клиент сам себе не может выдать IP-адрес, поэтом следующих четыре поля имеют значения 0.0.0.0. В поле Client MAC Address клиент сообщает свой мак-адрес серверу. А вот поле Client Hardware Address Padding различается для машин с Windows и Linux, сейчас вы видите значение для Windows, это поле мы обсудим позже.

    Далее клиент сообщает серверу о том, что ему не нужно сообщать hostname сервера и не надо давать ссылку на Boot-файл. Ну а поле Magic Cookie сообщает о том, что начались DHCP опции и нам нужно обратить внимание на следующий рисунок.

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

    Еще из полезного сервер предложил в качестве опций клиенту IP-адрес шлюза по умолчанию, маску подсети и адрес DNS-сервера.

    ПРИМЕЧАНИЕ: здесь мы пропускаем все проверки на занятость/свободность IP-адреса, это мы обсудили при прошлом разговоре и сейчас считаем, что они есть и в результате этих проверок IP-адрес свободен.

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

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

    Для чего нужен протокол DHCP

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

    Впервые протокол был описан в 1993 году в документе RFC 1531, но с тех пор в описание вносились правки. На сегодняшний день основным документом, регламентирующим протокол, является RFC 2131. Помимо автоматизации процесса настройки IP, DHCP позволяет упростить диагностику подключения и переход из одной подсети в другую, оставляя уведомления для системного администратора в логах.

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

    Из вступления ясно, какие функции предоставляет DHCP, но по какому принципу он работает? Получение адреса проходит в четыре шага. Этот процесс называют DORA по первым буквам каждого шага: Discovery, Offer, Request, Acknowledgement.

    Давайте подробнее рассмотрим DORA — принцип работы DHCP.


    Протокол DHCP, получение адреса IP — DORA

    Discovery, или поиск

    Offer, или предложение

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

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

    Бывает и так, что не все доступные адреса должны быть назначены клиентам. Например, администратор может исключить (exclude) диапазон 192.0.0.100 — 192.0.0.200 из используемой области. Такое ограничение называется исключением.

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

    Request, или запрос

    Acknowledgement, или подтверждение

    Срок аренды

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

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

    После получения адреса из области, клиент берет его в аренду на время, называемое T. Клиент переходит в связанное (BOUND) состояние и продолжает нормальную работу, пока не наступит время половины срока аренды — T1.

    Три подхода к распределению адресов

    Сервер назначает IP одним из трех основных способов.

    Статическое распределение (static allocation). Почти как ввод адреса на каждом компьютере вручную. Отличие в том, что системный администратор задает нужные соответствия IP для MAC-адресов клиентов на самом DHCP-сервере. IP останется за клиентом, даже если тот выйдет из сети, отключится, перейдет в новую сеть и т.п.

    Автоматическое распределение (automatic allocation). Сервер закрепляет IP из области за каждым клиентом навсегда. Срок аренды не ограничен.

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

    DHCPNAK. Нередко в источниках можно встретить написание DHCPNACK, что является неправильным, так как RFC 2131 регламентирует именно NAK. DHCPNAK отправляется сервером вместо окончательного подтверждения. Такой отказ может быть отправлен клиенту, если аренда запрашиваемого IP истекла или клиент перешел в новую подсеть.

    Опции DHCP

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


    Option 82 — ретрансляция DHCP-сервера


    Опции DHCP для загрузки PXE

    Протокол DHCP позволяет загрузку компьютера без использования носителя данных. Такая загрузка происходит с сетевой карты и называется PXE (Preboot eXecution Environment). Для конфигурации сетевой загрузки LEGACY BIOS PXE используются DHCP-опции 43, 60, 66 и 67.

    • Option 43 зарезервирована для обмена информацией производителей;
    • Option 60 — классовый идентификатор; здесь указывается, например, PXE клиент;
    • Option 66 и 67 необходимы для указания имени сервера PXE и имени файла загрузки соответственно.

    Взаимодействие DHCP и DNS

    Как мы упоминали выше, Option 6 — это сервер DNS. Давайте рассмотрим подробнее взаимодействие двух протоколов.

    В статье мы уже говорили, что DHCP-сервер имеет область IP-адресов, которые допускается распределять между клиентами в сети. DNS-сервер занимается тем, что сопоставляет IP-адреса и доменные имена. Это не только имена сайтов, но и имена компьютеров в сети, (например, NetworkServer PC).

    Если вы хотите создать свою локальную сеть на базе Linux, потому что это бесплатно и вы не хотите связываться Windows, то вы можете столкнуться с проблемой взаимодействия DNS и DHCP. Linux не имеет Active Directory, как в Windows, позволяющей тесно связать DHCP и DNS, избегая необходимости обращаться к клиенту каждый раз по IP. Однако способы организовать такую связь существуют и для свободной системы.

    Первый вариант — настроить DHCP-сервер так, чтобы фиксировал адрес за клиентом. Второй вариант — настроить взаимодействие DHCP- и DNS- серверов. Первый вариант подходит, если область IP-адресов широкая и вы можете позволить себе фиксировать IP за каждым клиентом. Если же для вас такой метод будет расточительным, то необходимо дать двум серверам работать вместе.

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

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

    Шаг 1 — конфигурация сети

    В первую очередь необходимо определиться с компьютером, который будет выполнять роль сервера. Важно выбрать тот компьютер (Ubuntu Server или Ubuntu Desktop), который вы не планируете выключать слишком часто. Если после полной настройки вы решите выключить компьютер, то вся сеть тоже выключится.

    Выбранному компьютеру необходимо назначить статический IP. Делается это редактированием конфигурационного файла в директории /etc/network/interfaces.

    Шаг 2 — установка dnsmasq

    Установите пакет dnsmasq командой из терминала:

    Шаг 3 — настройка фаервола

    Для изменения настроек фаервола можно использовать Ubuntu Uncomplicated Firewall. Используйте следующие команды:

    Шаг 4 — изменение настроек роутера

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

    Недостатки протокола DHCP

    Третий недостаток — вновь ненадежность UDP, но другого рода. UDP не обеспечивает гарантию доставки информации. Этот протокол допускает потери и ошибки, которые могут сказаться и на работе DHCP, в частности при PXE-загрузке.

    Заключение

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

    Что такое DHCP-протокол

    Рассказываю о том, как компьютеры получают IP-адреса для работы в сети.

    Способы выдачи IP-адресов

    • IPv4 записывается, как в примере выше: 185.114.246.105
    • IPv6 в 4 раза длиннее и выглядит примерно так – 2001:0DA8:AB10:0001:0010:0000:0001:00FB

    Устройство может получить IP-адрес двумя способами: статическим (ручным) и динамическим.

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

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

    Протокол DHCP и динамический IP

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

    • Клиент – это устройство, которому надо получить IP-адрес для работы в сети. Это может быть телефон, планшет, ноутбук или компьютер.
    • Сервер – это устройство, которое раздает IP-адреса клиентам и следит за тем, чтобы два клиента не получили одинаковый IP-адрес.

    Взаимодействие DHCP-сервера и клиента

    Подтверждение – Acknowledgement (ACK).

    Взаимодействие клиент-сервер

    Поиск (Discover): Клиент → Сервер

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

    Поиск сервера клиентом

    Запрос клиента получат все участники сети, но ответит только сервер

    Предложение (Offer): Сервер → Клиент

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

    Если клиенту ответили несколько серверов, он выберет какой-то один и получит от него IP-адрес с настройками.

    Запрос (Request): Клиент → Сервер

    Только один сервер продолжает взаимодействие с клиентом. Это тот, который предложил выбранный клиентом IP-адрес.

    Подтверждение (ACK): Сервер → Клиент

    В общем виде весь процесс взаимодействия выглядит так:

    Длительность использования IP-адреса

    Способы раздачи IP-адресов в DHCP

    DHCP-сервер может назначать IP-адреса тремя способами:

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

    Это удобно в рамках небольшой сети, когда известны MAC-адреса всех компьютеров.

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

    Динамический – DHCP-сервер выдает клиенту любой адрес из диапазона свободных. Эти адреса не закрепляются за конкретными устройствами.

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

    Связь DHCP и клиента в разных подсетях

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

    DHCP-сервер и клиент могут оказаться в разных подсетях, разделенных одним или несколькими маршрутизаторами. Как правило, маршрутизаторы не пропускают широковещательный трафик.

    Эту проблему решают с помощью ретрансляции или DHCP relay. С помощью этой настройки маршрутизаторы смогут передавать только широковещательный трафик, который относится к протоколу DHCP.

    Краткие выводы

    Для связи с другими устройствами и работы в сети компьютеру требуется IP-адрес.

    Устройство может получить статический или динамический IP-адрес.

    Динамические IP-адреса назначаются с помощью протокола DHCP.

    Сервер может назначить IP-адрес клиенту тремя способами: фиксированно, автоматически или динамически.

    Если сервер и клиент находятся в разных подсетях, они смогут взаимодействовать с помощью ретрансляции DHCP relay.

    Читайте также: