До появления DHCP сетевые адреса назначались компьютерам вручную: нужно было следить, какой машине какой адрес выдан и какие остались свободны. Это занимало много времени и часто приводило к ошибкам. Однако благодаря DHCP удалось автоматизировать процесс назначения сетевых адресов. Подробнее о том, как это работает, расскажем далее. Также рассмотрим архитектуру, принципы и особенности DHCP.
Для чего нужен протокол DHCP
Dynamic Host Configuration Protocol (DHCP) — это сетевой протокол, который позволяет автоматически назначать подключаемым к сети устройствам IP-адреса и другие параметры конфигурации. Он упрощает управление и снижает вероятность конфликтов — назначения двум устройствам одного и того же адреса.
IP-адрес — это идентификатор ресурса в сети стандарта TCP/IP. Он состоит из четырёх блоков (октетов) цифр, разделённых точками: например, 98.139.100.15 — адрес сайта yahoo.com. Ресурсы в этом контексте — это сетевые устройства и веб-страницы.
Компьютеры, телефоны и т.д. могут отправлять и получать данные внутри локальной сети, если их адрес уникален внутри этой сети. Для обмена данными в Интернете у устройства-отправителя в соответствующем поле IP-пакета должен быть указан адрес, уникальный в масштабах Интернета. Его также называют публичным или «белым».
Он может быть как присвоен непосредственно устройству, так и преобразован из локального адреса. Преобразование осуществляет маршрутизатор или брандмауэр методом NAT.
При выходе в сеть устройство получает IP-адрес. Статический адрес может назначаться вручную администратором либо присваиваться DHCP-сервером. Динамический назначается только DHCP-сервером.
Стандарт для протокола DHCP
Принципы, правила и функции протокола DHCP зафиксированы в документе RFC 2131, выпущенном в 1997 году (русский перевод). Он заменил документ RFC 2141 от 1993 года.
RFC (Request for comments, запрос на комментарии) — это серия публикаций об основных стандартах и протоколах Интернета. Например, существуют RFC о протоколе IP, концепциях и объектах инфраструктуры DNS, уникальном идентификаторе ресурса URL.
Такие документы с 1969 года выпускает IETF (Инженерный совет Интернета, Internet Engineering Task Force) и другие организации по техническому развитию и разработке стандартов для Интернета. Некоторые RFC приняты IETF в качестве стандартов Интернета.
Ещё раньше, в 1985 году, появился предшественник DHCP — протокол BOOTP (Bootstrap Protocol, RFC 951).
Как работает DHCP
Когда устройство подключается к сети, в которой есть DHCP-сервер, оно запрашивает у него IP-адрес.
На этом сервере хранится список IP-адресов для выдачи, который называется пулом. В него входит один или несколько диапазонов последовательных адресов.
Сервер назначает новому устройству IP-адрес и другие параметры сетевой конфигурации — адрес шлюза по умолчанию, время аренды и прочие (эти параметры подробно описаны в разделе Опции DHCP).
Время аренды
IP-адреса выдаются на определённый промежуток времени, который называется временем аренды (lease time). Его длительность определяет администратор сети.
Если время аренды истекает, а DHCP-клиент продолжает использовать адрес, он отправляет запрос на продление аренды (этот процесс подробно описан в разделе Процедура назначения IP-адреса). При этом пользователи обычно не замечают разрыва связи. Если клиент отключается от сети, его адрес возвращается в пул и назначается новым устройствам.
Например, у DHCP-сервера в кофейне, где к сети Wi-Fi постоянно подключаются новые устройства, время аренды может составлять один час. В таких оживлённых публичных сетях нецелесообразно назначать IP на более долгий срок, иначе их запас быстро исчерпается.
При этом в корпоративной сети Wi-Fi срок аренды может составлять 8-12 часов, так как в течение всего рабочего дня внутри здания остаются одни и те же сотрудники со своими телефонами и ноутбуками.
А для служебных компьютеров, постоянно подключённых к сети по Ethernet-кабелю, разумно устанавливать сроки аренды от одной недели — если в организации десятки или сотни таких рабочих мест, частое обращение клиентов за продлением аренды увеличит сетевой трафик и замедлит работу в сети.
Архитектура DHCP
Протокол DHCP использует клиент-серверную модель взаимодействия. В неё входят DHCP-сервер, клиенты и иногда агенты ретрансляции.
Архитектура DHCP
DHCP-сервер
Так называют и программу, при помощи которой адреса автоматически выдаются клиентам, и оборудование в локальной сети, на котором эта программа работает: компьютер или маршрутизатор в организации или у Интернет-провайдера.
В локальной сети назначается один или несколько таких серверов, которые по запросу подключают к сети клиентские устройства — выдают им IP-адреса из пула, определённого администратором.
Большая часть пула выделена для динамического назначения (способы назначения подробно описаны в разделе Способы назначения адресов): устройства подключаются к сети на ограниченный период, который после завершения может продлеваться.
Часто несколько адресов резервируют для статического назначения — например, сетевые принтеры, сетевые хранилища, IP-камеры должны быть включены постоянно и доступны по одним и тем же адресам.
Некоторые адреса или диапазоны могут быть исключены из пула — например, если администратор уже назначил их определённым устройствам вручную.
DHCP-клиент
DHCP-клиент — это программа, которая обращается за сетевыми настройками по протоколу DHCP. При подключении клиент запрашивает у сервера IP-адрес и другие параметры сетевой конфигурации с помощью DHCP-сообщений. Данные о конфигурации передаются в полях опций — они подробно описаны в разделе Опции DHCP.
Агент ретрансляции DHCP
Если сеть состоит из нескольких подсетей, то устанавливать DHCP-сервер в каждой из них нерационально — администрировать один центр управления сетью удобнее, чем несколько. При этом в каждой подсети, где нет сервера, настраивают агент ретрансляции, так как DHCP-сообщения не проходят через маршрутизаторы из одной подсети в другую.
Таким агентом служит программа, размещённая на коммутаторе или маршрутизаторе, имеющем доступ к DHCP-серверу настроенном для приёма запросов на подключение к сети.
Опции DHCP
Для передачи дополнительных параметров сетевой конфигурации в протоколе DHCP используются стандартные опции, а иногда — менее распространённые.
Стандартные опции
- Опция 001: маска подсети
Значение этого параметра определяет размер подсети, которой управляет DHCP-сервер, то есть количество устройств, которые могут получить адрес. От этого зависит, на какое сетевое оборудование — коммутатор или маршрутизатор — будут отправляться данные от клиента.
Чтобы обратиться к ресурсу за пределами подсети — например, в Интернете, — устройству нужен маршрутизатор. А если он обращается к узлу в своей подсети — например, к торрент-серверу, — то их связывает коммутатор.
- Опция 003: маршрутизатор (шлюз по умолчанию)
Шлюз — это узел, служащий точкой доступа к другой сети для сетевых устройств. Обычно это маршрутизатор.
Когда указан адрес шлюза по умолчанию, устройства в локальной сети могут взаимодействовать с внешними сетями. Когда нужно обратиться к ресурсу за пределами локальной сети, цепочка переходов начинается именно с шлюза по умолчанию.
- Опция 006: DNS-сервер
Эта опция позволяет указать адрес DNS-сервера, чтобы устройства в локальной сети могли обращаться к нему для разрешения (преобразования) доменных имён в IP-адреса. Здесь можно указать основной и резервный адреса. Такой сервер может находиться внутри этой сети либо за её пределами.
- Опция 051: время аренды
В этой опции указывается максимальный промежуток времени в секундах, в течение которого клиент может использовать адрес до продления аренды.
- Опция 082: информация для настройки агента ретрансляции
В этой опции указываются данные, которые передаются агентами, а не клиентами. По отношению к DHCP-серверу, которому агент перенаправляет сообщения, клиент является удалённым, так как находится в другой подсети.
Самые важные подопции в ней:
- 082.1 Идентификатор порта — информация для идентификации порта, к которому подключён удалённый клиент;
- 082.2 Идентификатор удалённого клиента.
Менее распространённые опции
Ниже приведены примеры опций, которые реже назначаются подключаемым клиентским устройствам.
- Опция 012: имя хоста клиента
По MAC-адресу устройства администратор в случае необходимости может выяснить название компании-производителя, а по значению этого параметра можно узнать больше данных — например, его тип, модель и функции. Идентифицировать устройство особенно важно, если у него нет конкретного пользователя.
Значение этого параметра — например, galaxywatch — указывают при изготовлении устройства (позже пользователь может изменить hostname по своему усмотрению). Устройство может отправлять его серверу в запросе на подключение: «Мне нужен IP-адрес на имя galaxywatch».
Не все серверы поддерживают эту опцию. Кроме того, она может быть отключена из соображений безопасности.
- Опция 015: доменное имя
Эта опция позволяет передать устройству имя домена, которое будет автоматически добавляться при обращении к ресурсам, имя которых не содержит доменной части. Таким образом можно использовать простые имена ресурсов без указания полного имени домена.
Например, если компьютер получает от DHCP-сервера опцию, в которой указан домен firstvds, то при обращении с хоста, допустим, на ресурс blog, DNS-запрос автоматически будет идти по адресу blog.firstvds.
- Опция 042: список NTP-серверов в порядке предпочтения
NTP — сетевой протокол для синхронизации внутренних часов компьютера с эталонными часами — такими считаются часы на NTP-серверах. Опция 42 используется для синхронизации времени на DHCP-клиенте со временем на таком сервере точного времени.
- Опция 101: часовой пояс в виде строки
В этом параметре указывается часовой пояс, в котором находится локальная сеть. Он обозначается по стандарту базы данных часовых поясов (tz database): например, Asia/Tokyo.
Способы назначения адресов
DHCP-сервер назначает клиентам IP-адреса одним из трёх способов:
Динамическое назначение
Это самый распространённый способ назначения адресов. IP-адрес и другие параметры сетевой конфигурации назначаются каждому клиенту по запросу на срок аренды, определяемый администратором. Когда этот срок истекает, клиент снова запрашивает у сервера эту конфигурацию.
Такой способ разумно применять, когда устройствам нужен временный доступ, а также в случаях, когда к сети постоянно подключаются новые устройства и адреса могут быстро исчерпаться.
Статическое (ручное) назначение
Когда адрес устройства не должен меняться — например, если это сетевой принтер, — обычно используют статическое назначение.
Администратор создаёт на DHCP-сервере таблицу распределения: вносит в неё MAC-адреса, которым нужен статический адрес, и назначает каждому IP-адрес.
Получая новый запрос на подключение к сети, DHCP-сервер проверяет, есть ли соответствующий MAC в таблице. Если он там присутствует, сервер предоставляет этому клиенту соответствующую сетевую конфигурацию.
За МАС-адресом такого клиента закрепляется постоянный IP-адрес в этой сети. При последующих подключениях он всегда будет получать именно этот адрес.
Этот способ назначения отличается от ручной настройки каждого клиента только тем, что сведения об адресах хранятся централизованно и потому их не потребуется менять на каждом устройстве, где сбросятся настройки.
Автоматическое назначение
Для этого способа администратор выделяет специальный диапазон IP-адресов. При первом подключении к сети устройство получает из этого диапазона первый свободный адрес и другие сетевые настройки. На сервере создаётся таблица соответствий IP- и MAC-адресов, и в дальнейшем все устройства в таблице получают те адреса, которые им были назначены при первом подключении. При этом время аренды не ограничивается.
От статического назначения этот способ отличается тем, что администратор не участвует в составлении этой таблицы — она создаётся на сервере автоматически по мере подключения новых устройств.
Отличие от динамического способа состоит в том, что время аренды не ограничено, и однажды получив адрес в сети, клиент больше не обращается за ним.
Процедура назначения IP-адреса
Подключение клиента к сети, или инициализация, состоит из четырёх основных этапов, начальные буквы названий которых составляют аббревиатуру DORA — таким сокращением эти четыре этапа обычно и называют.
Взаимодействие клиентского устройства с сервером продолжается на этапе продления аренды и завершается отключением от сети.
Последовательность обмена DHCP-сообщениями
1. DHCPDISCOVER — обнаружение
Новое устройство пытается подключиться к сети (например, по кабелю или Wi-Fi). У него пока нет IP-адреса, поэтому оно отправляет сообщения со своего МАС-адреса. Его первое широковещательное (адресованное всем MAC-адресам в локальной сети) сообщение — DHCPDISCOVER: «Мне нужен IP-адрес. Есть ли здесь DHCP-серверы?».
2. DHCPOFFER — предложение
Путём такой же широковещательной рассылки один или несколько серверов отправляют новому клиенту сообщение DHCPOFFER, предлагая в аренду один из IP-адресов этой сети: «Вот IP-адрес и другие параметры конфигурации».
3. DHCPREQUEST — запрос
Клиент выбирает предложение от одного из серверов (как правило, первое полученное) и отправляет всем серверам сообщение DHCPREQUEST о принятом адресе: «Я выбрал IP-адрес от этого DHCP-сервера».
4. DHCPACK — подтверждение
Выбранный сервер отправляет всем устройствам в сети сообщение DHCPACK: «Устройство с этим MAC-адресом получило такую сетевую конфигурацию». В этом сообщении указаны IP нового клиента, время аренды, адрес шлюза, с которого начинается обращение к внешним адресам, и адрес DNS-сервера для разрешения доменных имён в Интернете.
С полученным адресом новый клиент может обращаться как к устройствам в локальной сети, так и к ресурсам в Интернете.
5. DHCPREQUEST, DHCPACK и DHCPNAK — продление
Когда истекает половина срока аренды (T1), клиент отправляет серверу сообщение DHCPREQUEST — запрос на продление аренды.
Если сервер принимает запрос, он посылает клиенту в ответ сообщение DHCPACK, и отсчёт его времени аренды начинается заново.
Если ответ на запрос не получен, клиент отправляет запрос по истечении ещё 25% срока аренды. Если проходит 87,5% срока аренды (T2) и ответ от исходного сервера не получен, клиент начинает отправлять широковещательные запросы и с этого момента может получить адрес от любого DHCP-сервера.
Сервер может отклонить запрос о продлении сообщением DHCPNAK. После этого клиент заново рассылает широковещательное сообщение DHCPDISCOVER.
Когда время аренды заканчивается, клиент начинает процесс DORA заново.
6. DHCPRELEASE — завершение
Клиент завершает аренду, отправляя на сервер сообщение DHCPRELEASE. После этого IP-адрес отключённого клиента возвращается в пул.
Преимущества и недостатки протокола DHCP
Преимущества
Использование протокола DHCP имеет значительные преимущества перед ручным назначением IP-адресов.
- Cетевые подключения обрабатываются без участия администратора на одном устройстве — DHCP-сервере, что снижает трудозатраты по администрированию сети.
- Допускается гораздо меньше ошибок — например, опечаток или конфликтов адресов, — чем при ручной настройке:
- Переносные устройства, подключённые к сети Wi-Fi — например, ноутбуки студентов, переходящих из одной аудитории в другую, — при перемещении в другие сегменты сети мгновенно меняют адрес, и пользователи практически не замечают разрывов связи.
Недостатки
С использованием протокола DHCP связаны и некоторые сложности, которые нужно учитывать.
- Если в сети настроен только один DHCP-сервер, он может быть единой точкой отказа: новые клиенты не смогут получить IP-адреса. Клиенты, которые уже получили свои адреса, будут использовать их до окончания срока аренды.
- Если администрируемая сеть разделена на подсети, а сервер установлен только в одной из подсетей, то в остальных необходимо настроить агенты ретрансляции, так как DHCP-пакеты не проходят из одной подсети в другую.
- Для сети, где настроен DHCP-сервер, существуют угрозы безопасности. Злоумышленник может настроить в локальной сети свой DHCP-сервер с неверной сетевой конфигурацией, чтобы клиентские устройства потеряли доступ к сети, либо организовать поток поддельных сообщений DHCPREQUEST, чтобы быстро исчерпать пул адресов на сервере. Нужно учитывать возможность таких атак и принимать меры по защите локальной сети.
Взаимодействие протоколов DHCP и DNS
DNS (Domain Name System, система доменных имён) — это иерархическая децентрализованная система именования компьютеров, сервисов и других объектов в сети, подключённых к Интернету или частной сети. DNS работает как телефонный справочник: он позволяет соотносить доменные имена, которые удобно запоминать людям, и числовые IP-адреса, которые удобно использовать для управления при помощи компьютеров. Например, IP-адрес firstvds.ru — 37.230.118.233.
DNS состоит из тысяч серверов, работающих в единой системе. Если один сервер не может разрешить имя или IP, то есть преобразовать имя в адрес или наоборот, он обращается к другому, который в свою очередь обращается к следующему и т.д.
Для поиска нужных ресурсов по их доменным именам устройства обращаются к DNS-серверу. Его адрес входит в набор сетевых параметров, которые они получают от DHCP-сервера при подключении. DNS-сервер — это программа, как и DHCP-сервер, и может работать на одном с ним компьютере или маршрутизаторе.
Для обращения к внешним адресам DNS-сервер не обязательно должен располагаться внутри локальной сети, можно пользоваться и внешним сервисом. Часто в качестве внешнего DNS-сервера используют публичный бесплатный сервер — например, от Google или CloudFlare.
Что такое DNS-сервер и зачем он нужен
Протокол DHCP, без сомнения, упрощает управление сетью. У него есть и недостатки; особенного внимания требуют угрозы безопасности. При этом базовые принципы и архитектура DHCP не меняются, и современные сети редко обходятся без применения этого протокола.
Автор статьи: Клара Суботэ.