Что такое dhcp клиент
Принципы работы протокола DHCP
DHCP – протокол, позволяющий в автоматическом режиме получать клиентам IP-адреса. Его часто используют при построении современных сетей. Рассмотрим принцип работы DHCP, схему DORA, основные функции и другие особенности протокола.
Зачем нужен протокол DHCP?
Пользователям IP-адреса могут назначать вручную. Но это затратно по времени, а в больших ЛВС ещё и сопровождается высокой сложностью настроек, следовательно, и множеством ошибок. Поэтому в 1993 года был разработан протокол DHCP. Он позволил автоматизировать настройку IP-адресов, упростить диагностику сетевого соединения и получение доступа из одной подсети в другую.
Принцип работы протокола динамической настройки узла
Работает DHCP по схеме DORA, которая включает 4 этапа: обнаружение (discover), предложение (offer), запрос (request), подтверждение (acknowledge). Рассмотрим каждый этап отдельно.
Обнаружение
При подключении клиента к сети начинается процесс его инициализации. Пользовательский компьютер не имеет IP-адреса, поэтому происходит отправка сообщения DHCPDISCOVER на все устройства в ЛВС. В той же сети обязательно присутствует DHCP server. Его роль не обязательно берет на себя выделенный сервер. Это может быть коммутатор или маршрутизатор.
В крупных организациях обычно несколько DHCP-серверов. Для передачи широковещательного сообщения от клиента всегда используется 67 порт, а для отправки ответного предложения – 68.
Внимание! Отправка сообщения DHCPDISCOVER не всегда является первым шагом по получению IP-адреса. Если у клиента статический IP-адрес и срок его аренды ещё не закончился, инициализация начинается с отправки DHCPREQUEST вместе с уже имеющимся идентификатором сервера. Если DHCP-сервер не отвечает, то тогда уже отправляется пакет DHCPDISCOVER, и процедура получения IP-адреса начинается заново.
Предложение
После получения запроса сервер сообщает клиенту IP-адрес, который может ему подойти. IP DHCP выделяется из диапазона доступных адресов, настроенных администратором сети. Если существуют IP-адреса, которые нельзя назначать DHCP-серверу, то можно задать конкретный диапазон. Например, от 192.0.0.48 до 192.0.0.123.
Другая ситуация – когда пользователи могут использовать любые адреса из доступных, кроме входящих в определенную область. В этом случае администратором задается исключение (excluded-ip-address). Например, клиентам нельзя назначать IP в диапазоне 192.0.0.14 — 192.0.0.45.
Адреса, назначаемые клиентам, являются динамическими, т. е. они постоянно меняются. Например, вчера у пользовательского компьютера был IP 192.0.0.445, а сегодня – 192.0.0.55. Но иногда для доступа к защищенным сервисам или для удобства идентификации клиента в ЛВС за пользователем закрепляют конкретный адрес. В этом случае он становится статическим, а саму процедуру называют резервацией.
В DHCPOFFER, которое получает клиент, содержится IP-адрес из доступной области. Идентификация устройства происходит по MAC-адресу.
Запрос
После получения сообщения от сервера DHCP клиент отправляет пакет DHCPREQUEST. Это сообщение означает, что пользовательский ПК принимает предлагаемый адрес. Если в сети присутствует несколько серверов DHCP, то после получения сообщения DHCPREQUEST все они помечают выбранный адрес занятым.
Подтверждение
Завершается процедура подтверждением передачи IP-адреса с помощью сообщения DHCPACK от сервера. В этом сообщении также указывается и срок использования выбранного клиентом адреса.
Как выбирает DHCP-сервер клиент, если в сети их несколько?
При первом подключении клиент выберет самое первое предложение. Но если ранее устройство уже подключалось к этой ЛВС, при повторном подключении оно выберет предложение от сервера, с которым была установлена связь в первый раз.
Отказ от адреса
При переходе клиента в новую подсеть возникает необходимость в смене IP. В этом случае серверу передается сообщение DHCPRELEASE. После получения пакета server DHCP помечает указанный адрес свободным. Клиентские сетевые параметры резервируются, т. е. при запросе от устройства можно снова возобновить действие этого IP-адреса. Отказаться от аренды можно и вручную. Для этого существует команда ipconfig/release.
Продолжительность аренды
IP имеет ограниченное время действия. Когда сервер DHCP отвечает клиенту и выделяет ему адрес, он также указывает срок аренды. Это может быть 24 часа или 2-3 дня. Этот срок называют lease time. Задается он в настройках сервера DHCP. Предоставление адресов в аренду – разумное решение. Отключившиеся от сети пользователи не резервируют навечно за собой конкретный IP, а новые клиенты смогут быстро получить адрес для работы в выбранной подсети.
Клиент может пользоваться полученным IP конкретное время. Как только проходит половина срока аренды, пользователь может запросить новый адрес или обновить его. При повторном получении IP используется упрощенная схема. Клиент сразу отправляет сообщение DHCPREQUEST, а сервер в ответ с помощью пакета DHCPACK подтверждает запрос.
Если сервер не отвечает, то клиент отправит запрос повторно, когда истечет 25% второй половины срока аренды. В третий раз запрос будет отправлен, когда общий срок аренды составит 87,5%. В этот раз запрос будет широковещательным, т. е. на него сможет ответить любой DHCP-сервер.
Как назначаются адреса клиентам?
Сервер распределяет IP-адреса одним из 3 способов:
Важный момент! Для нормальной работы протокола и присвоения IP-адреса по запросу нужно убедиться, что брандмауэр не блокирует порты. DHCP для работы нужны порты 67 и 68. Встроенный защитник Windows обычно не блокирует их, но сторонние антивирусные программы могут.
Особые сообщения протокола динамической настройки узла
Кроме работы по схеме DORA сервер DHCP применяет и другие сообщения для взаимодействия с клиентскими устройствами. Их всего 4:
Опции Dynamic Host Configuration Protocol
Клиенту для работы в сети кроме IP требуются другие параметры DHCP: шлюз, адрес сервера, маска подсети и т. д. Опции кодируются определенными цифрами. В пакете они отображаются в порядке возрастания. К основным опциям относят:
Пакет обязательно завершается опцией 255 End. Она означает, что других опций уже не будет, и это конец пакета. Далее мы разберем другие опции, которые также часто используются системными администраторами для настройки DHCP.
Опция 82 – информация об агенте ретрансляции
Эта опция нужна для того, чтобы сообщить DHCP-серверу о том, через какой ретранслятор и порт отправляются запросы. Она позволяет серверу и клиенту обмениваться сообщениями даже при нахождении в разных подсетях. Альтернативное название опции – DHCP Relay.
По умолчанию широковещательные сообщения отправляются на DHCP порт и доставляются в пределах текущего домена. Но бывают ситуации, когда в сети нет DHCP-сервера. В этом случае на помощь приходит ретранслятор. Это может быть маршрутизатор или сервер. Он получает в своей подсети сообщения от клиентского устройства, а затем перенаправляет его в другой домен, где есть DHCP-сервер. Аналогичным способом он присылает ответ.
Работа сетевых сервисов DHCP и DNS
DNS – система доменных имен. Она нужна для того, чтобы одному IP-адресу соответствовало одно доменное имя. Доменное имя может присваиваться не только сайту, но и клиенту в ЛВС. Например, Buhgalter PC. DNS сопоставляет IP-адреса с доменами.
С проблемой взаимодействия DHCP и DNS сталкиваются пользователи Linux. В этой ОС отсутствует Active Directory, благодаря которой можно создать связь между доменом и IP. Но существуют альтернативные способы настройки этих двух сетевых сервисов в Linux. Использование пакета dnsmasq – один из них.
После установки пакета dnsmasq через терминал необходимо отредактировать файл конфигурации. В файле содержатся комментарии с объяснениями каждой настройки. После завершения редактирования конфигурации можно приступать к настройке фаервола. Удобнее всего это делать через Ubuntu Uncomplicated Firewall. Нужно будет открыть для DNS 53 порт с помощью следующих команд:
Заключительный этап – корректировка настроек роутера. В веб-интерфейсе устройства нужно отключить DHCP для ЛВС и изменить настройки DNS таким образом, чтобы все они указывали на настроенный DHCP-сервер. После этого необходимо перезапустить сеть на сервере.
Минусы протокола DHCP
У DHCP имеются определенные уязвимости. По схеме DORA первый откликнувшийся сервер имеет право предложить клиентскому устройству IP. Злоумышленник может использовать собственный сервер для дачи ответа клиенту. И если он успеет сделать это самым первым, то получит доступ к устройству и сможет контролировать его работу в сети.
Использование UDP-протокола – еще один недостаток DHCP. Проблема в том, что у UDP нет шифрования. Это значит передаваемые данные смогут в любой момент «считать» злоумышленники. К тому же протокол UDP не гарантирует доставку информации. При работе этого протокола могут возникать ошибки и потери в передачи пакетов данных. Это отрицательно сказывается на производительности DHCP и скорости загрузки PXE.
Заключение
Протокол DHCP применяется для автоматического назначения статических и динамических IP-адресов и предоставления конфигурационной информации клиентам. Он работает в режиме запрос-ответ и базируется на клиент-серверной архитектуре. Несмотря на все недостатки DHCP, удобной альтернативы этому протоколу не существует. Большинство современных локально-вычислительных сетей проектируется с использованием этого протокола. Для выдачи IP-адреса сервер DHCP должен находиться с клиентом в одной подсети или быть соединенным с ним посредством маршрутизатора.
Что такое DHCP-протокол
Рассказываю о том, как компьютеры получают IP-адреса для работы в сети.
Способы выдачи IP-адресов
Чтобы компьютер мог работать в сети, ему нужен IP-адрес. Он выглядит как 4 числа через точку. Например, IP-адрес timeweb.com – 185.114.246.105. Это как страна, город, улица и дом в почтовом адресе, только в интернете – это узлы связи и магистральные роутеры. Если устройству не выдали IP-адрес, оно не может общаться с другими устройствами в сети.
«IP» расшифровывается как Internet Protocol. Данный протокол имеет две версии: IPv4 и IPv6.
Устройство может получить IP-адрес двумя способами: статическим (ручным) и динамическим.
Динамический способ подойдет как для предприятий, где количество устройств фиксировано, так и для кафе, через Wi-Fi которых каждый день проходит много разных гаджетов.
Протокол DHCP и динамический IP
Для динамической выдачи IP-адресов используется сетевой протокол DHCP («Dynamic Host Configuration Protocol»), что переводится как протокол динамической настройки узла.
DHCP работает по модели «клиент-сервер». Он автоматически раздает IP-адреса и другие параметры конфигурации устройствам, чтобы те могли работать в сети.
Взаимодействие DHCP-сервера и клиента
Сервер и клиент обмениваются сообщениями по принципу «запрос-ответ». Взаимодействие состоит из 4 этапов и сокращенно называется «DORA». По одной букве на каждый этап:
Подтверждение – Acknowledgement (ACK).
Поиск (Discover): Клиент → Сервер
На этом этапе клиенту главное найти и узнать, где находится сервер.
Мы включили компьютер, который находится в сети. Еще в этой же сети работает DHCP. В данном случае наш компьютер – это клиент, а DHCP – сервер. Теперь нашему устройству необходимо получить IP-адрес и другую необходимую информацию о сети, например шлюз, адреса DNS и маску подсети. Поэтому клиент начинает поиски сервера и посылает сообщение «DHCPDISCOVER» на компьютеры внутри этого сегмента сети.
Такое сообщение называется широковещательным (broadcast) – это значит, что поток данных от клиента получат все устройства внутри его сети. Ответить на такое сообщение смогут только DHCP-серверы.
Запрос клиента получат все участники сети, но ответит только сервер
Предложение (Offer): Сервер → Клиент
DHCP-сервер получает сообщение от клиента, после чего выбирает свободный IP-адрес из числа доступных и отправляет его в ответном сообщении «DHCPOFFER».
Как правило, IP-адрес закрепляется за клиентом на определенное время, поэтому может меняться между сеансами работы в сети.
Если клиенту ответили несколько серверов, он выберет какой-то один и получит от него IP-адрес с настройками.
Запрос (Request): Клиент → Сервер
Клиент получил IP-адрес и отправляет серверу ответное сообщение: «DHCPREQUEST». В нем он еще раз прописывает полученный адрес и тем самым подтверждает, что будет использовать его.
Ответное сообщение с IP-адресом получают все DHCP-серверы в сети, если их несколько. Это необходимо для того, чтобы каждый сервер знал, что этот адрес занят, и не предлагал его другим клиентам.
Только один сервер продолжает взаимодействие с клиентом. Это тот, который предложил выбранный клиентом IP-адрес.
Подтверждение (ACK): Сервер → Клиент
Сервер отправляет сообщение «DHCPACK» и тем самым закрепляет IP-адрес за клиентом. В сообщении содержится сам адрес, срок его использования и дополнительные настройки сети. Клиент проверяет эти настройки, применяет полученную конфигурацию и получает доступ к сети.
В общем виде весь процесс взаимодействия выглядит так:
– (Клиент) Кто тут сервер? Мне надо получить IP-адрес: «DHCPDISCOVER».
– (Сервер) Я сервер, предлагаю тебе использовать вот этот IP: «DHCPOFFER».
– (Клиент) Хорошо, я буду использовать этот IP, что ты мне отправил: «DHCPREQUEST».
– (Сервер) Вот и договорились. Приятной работы в сети: «DHCPACK».
Другие варианты сообщений
«DHCPINFORM» – так клиент запрашивает локальные настройки сети. В ответ на это сообщение сервер посылает запрашиваемую конфигурацию.
«DHCPNAK» – так сервер отказывает клиенту пользоваться IP-адресом.
Длительность использования IP-адреса
Время, на которое клиент получает IP-адрес от сервера, называется «срок аренды» (lease time). Он может составлять несколько минут, часов и даже суток. Когда срок аренды заканчивается, адрес освобождается, и сервер может отдать его другому клиенту.
Клиент может продлить аренду и использовать IP-адрес дальше. Для этого он ждет, пока пройдет половина срока, который изначально назначил сервер. После этого клиент посылает серверу сообщение «DHCPREQUEST», в котором указывает свой текущий IP-адрес. В ответном сообщении «DHCPACK» сервер запускает срок аренды заново. Получилась укороченная схема взаимодействия «клиент-сервер» из двух последних этапов (запрос → подтверждение).
Если сервер молчит и не отправляет подтверждение «DHCPACK», то клиент пробует отправить повторный запрос «DHCPREQUEST», когда пройдет половина от того времени, что осталось сейчас. И так до тех пор, пока не пройдет ⅞ времени всей аренды. После этого клиент начнет отправлять широковещательные запросы на свою сеть и ждать ответа от другого сервера.
Перед тем как завершить работу и отключиться от сети, клиент автоматически отправит серверу сообщение «DHCPRELEASE». Это значит, что IP-адрес свободен и сервер может передать его другому компьютеру.
Способы раздачи IP-адресов в DHCP
DHCP-сервер может назначать IP-адреса тремя способами:
Фиксированный – в этом случае происходит настройка DHCP сервера, в ходе которой администратор вручную прописывает соответствие между каждым MAC-адресом и IP-адресом. Таким образом, за каждым устройством закрепляется свой адрес, который будет выдавать сервер.
Это удобно в рамках небольшой сети, когда известны MAC-адреса всех компьютеров.
Автоматический – при таком способе каждое устройство автоматически получает IP-адрес, который не будет меняться. DHCP-сервер выдает адрес в бессрочную аренду, пока клиент от него не откажется.
Динамический – DHCP-сервер выдает клиенту любой адрес из диапазона свободных. Эти адреса не закрепляются за конкретными устройствами.
Динамическим способом раздают IP-адреса, когда состав пользователей и их количество в сети постоянно меняется, например при использовании Wi-Fi в кафе. В этом случае кафе покупает определенное количество IP-адресов и выдает посетителям, которые подключаются к сети.
Связь DHCP и клиента в разных подсетях
Обычно сеть дополнительно разделяют на подсети. Это помогает повысить производительность и обеспечить безопасность. Производительность повышается за счет того, что таким образом равномерно распределяется широковещательный трафик.
DHCP-сервер и клиент могут оказаться в разных подсетях, разделенных одним или несколькими маршрутизаторами. Как правило, маршрутизаторы не пропускают широковещательный трафик.
Вспомним, что первое сообщение, которое отправляет клиент, чтобы найти сервер («DHCPDISCOVER»), – широковещательное. Следовательно, клиент и сервер из разных подсетей не смогут просто так взаимодействовать.
Эту проблему решают с помощью ретрансляции или DHCP relay. С помощью этой настройки маршрутизаторы смогут передавать только широковещательный трафик, который относится к протоколу DHCP.
Таким образом, если маршрутизатор может работать в режиме DHCP relay, то у него получится передать первый запрос клиента «DHCPDISCOVER» серверу в другой подсети. В этом случае взаимодействию «клиент-сервер» ничего не помешает.
Краткие выводы
Для связи с другими устройствами и работы в сети компьютеру требуется IP-адрес.
Устройство может получить статический или динамический IP-адрес.
Динамические IP-адреса назначаются с помощью протокола DHCP.
Чтобы получить IP-адрес, устройство-клиент взаимодействует с DHCP-сервером по модели «DORA».
Сервер может назначить IP-адрес клиенту тремя способами: фиксированно, автоматически или динамически.
Если сервер и клиент находятся в разных подсетях, они смогут взаимодействовать с помощью ретрансляции DHCP relay.
Записки IT специалиста
Технический блог специалистов ООО»Интерфейс»
Как устроен и работает протокол DHCP
В современных сетях служба DHCP является одной из базовых, обеспечивая автоматическую настройку сетевых параметров у клиентов и от правильности ее работы зависит надежное функционирование всей сети. Поэтому важно иметь хотя бы базовые представления о работе одноименного протокола, что позволит не только грамотно подойти к настройке, но и оперативно устранить возможные проблемы. Тем более что протокол DHCP достаточно прост и разобраться в нем может каждый, достаточно иметь начальные знания о работе сетей.
Получение адреса
Рассмотрим процесс получения IP-адреса, он достаточно прост и состоит из четырех этапов, которые в упрощенном виде показаны на следующей схеме:
Все это можно увидеть, если заглянуть внутрь DHCP-пакета:
В данном случае это запрос обнаружения (Discover), цветом мы отметили упоминавшиеся выше поля и опции. Вроде бы все просто, но есть некоторые моменты, которые обычно обходятся молчанием, но способны вызвать определенные затруднения от неверного их понимания.
Запрос обнаружения рассылается для всех узлов сети, но отвечают на него только DHCP-сервера, формируя сообщение Предложения DHCP (DHCP OFFER), которое содержит предлагаемую сервером сетевую конфигурацию. Если серверов несколько, то предложений клиент получит несколько. Из предложенных конфигураций клиент выбирает одну, как правило полученную первой. Предлагаемый клиенту адрес содержится в специальном поле yiaddr, а поле siaddr передается адрес DHCP-сервера.
Так как MAC-адрес отправителя известен, то сервер направляет ответ непосредственно клиенту (unicast), хотя в некоторых случаях может ответить и широковещательным пакетом. Например, DHCP-сервера dnsmasq и Mikrotik отвечает непосредственно клиенту (юникастом), в то время как DHCP Windows Server отвечает широковещательным пакетом. По большому счету это не имеет особого значения, просто вы должны знать, что это вполне допустимые режимы работы DHCP-сервера и не являются признаком неправильной работы.
В структуре ответа мы также отметили цветом вышеописанные опции, также обратите внимание, что в данном случае ответ был отправлен широковещательным пакетом (Windows Server). Ниже показана структура ответа dnsmasq:
Здесь видно, что сервер ответил непосредственно клиенту (отправив фрейм на его MAC-адрес), не прибегая к широковещательной рассылке.
Остальные сетевые параметры передаются в виде опций, в нашем случае это опции 1, 3 и 6 (маска, шлюз, DNS):
Приняв предложение клиент официально запрашивает у сервера данную конфигурацию, для чего отправляет широковещательно Запрос DHCP (DHCP REQUEST), он полностью повторяет по структуре сообщение обнаружения (Discover), только добавляет к нему опцию 54 с адресом сервера, конфигурацию которого клиент принял. Опция 50 содержит предложенный сервером IP-адрес. Несмотря на то, что MAC-адрес DHCP-сервера известен, запрос (Request) рассылается широковещательно, это нужно для того, чтобы остальные DHCP-сервера понимали, что их предложение отвергнуто.
Выше показана структура запроса, можете сравнить его с пакетом обнаружения, обратите внимание на заполненное значение опции 54.
Получив запрос сервер направляет клиенту в ответ Подтверждение DHCP (DHCP ACK), которое отправляется на MAC-адрес клиента (хотя может и широковещательно) и получив которое клиент должен настроить свой сетевой адаптер согласно указанного адреса и опций.
По структуре сообщение подтверждения (Ask) практически не отличается от предложения (Offer), за исключением того, что поле siaddr с адресом DHCP-сервера не заполняется, но его адрес передается в опции 54.
Получив адрес клиент может проверить его на предмет использования при помощи широковещательного ARP-запроса (в большинстве реализаций так и происходит) и если будет обнаружено, что выделенный адрес уже используется (скажем, назначен вручную), то клиент посылает широковещательное сообщение Отказа DHCP (DHCP DECLINE) и начинает процесс получения адреса заново. Сервер, получив сообщение отказа, должен пометить указанный адрес как недоступный и уведомить администратора о возможной проблеме в конфигурации (например, записью в логе).
Также клиент может самостоятельно отказаться от выданного адреса, отправив серверу сообщение Освобождения DHCP (DHCP RELEASE), в отличии от других сообщений, освобождение направляется юникастом серверу, выдавшему адрес. Получив такое сообщение сервер помечает адрес как доступный, но на всякий случай оставляет запись о клиенте, если он захочет получить адрес повторно. Это поведение не является обязательным, но реализовано в большинстве DHCP-серверов.
Обновление адреса
В зависимости от срока прошедшего с момента получения адреса клиент может находится в одном из нескольких состояний.
Для этого он отправляет сообщение запроса (Request), в котором указывает текущий IP-адрес. Если сервер подтверждает аренду, то отвечает сообщением подтверждения (Ask), клиент сбрасывает счетчики T1 и T2 и начинает отсчет срока аренды заново.
Данные о сроке аренды и времени обновления адреса и обновлении конфигурации передаются сервером в опциях 51, 58 и 59:
Если сервер не ответил клиенту, то он берет промежуток времени до окончания состояния обновления и делит его пополам, в это время будет отправлен повторный запрос, при его отсутствии промежуток времени снова будет поделен пополам, потом снова пополам, при этом полученный промежуток времени не может быть меньше 60 сек. Таким образом, чем ближе окончание срока обновления, тем чаще будут делаться запросы.
После наступления момента времени T2, если клиенту не удалось обновить адрес, он переходит в состояние обновления Обновления конфигурации (REBINDING). В этом случае он посылает сообщение Обнаружения DHCP, теперь клиенту может ответить любой DHCP-сервер, а не только тот, который выдал IP-адрес. Если ответа от сервера не было, то оставшееся время также делится пополам и запрос повторяется. Все это время клиент может продолжать пользоваться уже полученной сетевой конфигурацией и нормально работать.
Если же до окончания срока аренды ответ так и не был получен, то клиент прекращает все сетевые операции и переходит в состояние Инициализации (INIT). В последствии, при получении предложений (Offer) от различных серверов клиент предпочтет выбрать предложение от сервера, который выдавал ему адрес прошлый раз и продолжит пользоваться старым адресом.
Также при обновлении могут быть иные сценарии развития событий. Скажем, клиент был включен в другую подсеть. В этом случае при получении запроса DHCP (клиент не знает, что он в другой подсети и пытается продлить аренду) сервер определяет неподходящий адрес в запросе и отвечает ему сообщением Отмены DHCP (DHCP NAK), после чего клиент должен начать процедуру получения адреса заново.
Если сеть клиента корректна, но запрашиваемый адрес занят, то сервер также ответит сообщением отмены (Nak) и клиент начнет получение адреса повторно.
Получение дополнительной информации
Если клиент имеет статически назначенный IP-адрес, но хочет получить дополнительные параметры, скажем адрес серверов имен или статические маршруты, то он отправляет специальное широковещательное сообщение Информации DHCP (DHCP INFORM), в ответ сервера отправляют сообщение подтверждения (Ask) без выделения IP-адреса.
Помогла статья? Поддержи автора и новые статьи будут выходить чаще:
Или подпишись на наш Телеграм-канал: