DHCP – протокол, позволяющий в автоматическом режиме получать клиентам IP-адреса. Его часто используют при построении современных сетей. Рассмотрим принцип работы DHCP, схему DORA, основные функции и другие особенности протокола.
Пользователям 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 от сервера. В этом сообщении также указывается и срок использования выбранного клиентом адреса.
При первом подключении клиент выберет самое первое предложение. Но если ранее устройство уже подключалось к этой ЛВС, при повторном подключении оно выберет предложение от сервера, с которым была установлена связь в первый раз.
При переходе клиента в новую подсеть возникает необходимость в смене 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:
Клиенту для работы в сети кроме IP требуются другие параметры DHCP: шлюз, адрес сервера, маска подсети и т. д. Опции кодируются определенными цифрами. В пакете они отображаются в порядке возрастания. К основным опциям относят:
Пакет обязательно завершается опцией 255 End. Она означает, что других опций уже не будет, и это конец пакета. Далее мы разберем другие опции, которые также часто используются системными администраторами для настройки DHCP.
Эта опция нужна для того, чтобы сообщить DHCP-серверу о том, через какой ретранслятор и порт отправляются запросы. Она позволяет серверу и клиенту обмениваться сообщениями даже при нахождении в разных подсетях. Альтернативное название опции – DHCP Relay.
По умолчанию широковещательные сообщения отправляются на DHCP порт и доставляются в пределах текущего домена. Но бывают ситуации, когда в сети нет DHCP-сервера. В этом случае на помощь приходит ретранслятор. Это может быть маршрутизатор или сервер. Он получает в своей подсети сообщения от клиентского устройства, а затем перенаправляет его в другой домен, где есть DHCP-сервер. Аналогичным способом он присылает ответ.
DNS – система доменных имен. Она нужна для того, чтобы одному IP-адресу соответствовало одно доменное имя. Доменное имя может присваиваться не только сайту, но и клиенту в ЛВС. Например, Buhgalter PC. DNS сопоставляет IP-адреса с доменами.
С проблемой взаимодействия DHCP и DNS сталкиваются пользователи Linux. В этой ОС отсутствует Active Directory, благодаря которой можно создать связь между доменом и IP. Но существуют альтернативные способы настройки этих двух сетевых сервисов в Linux. Использование пакета dnsmasq – один из них.
После установки пакета dnsmasq через терминал необходимо отредактировать файл конфигурации. В файле содержатся комментарии с объяснениями каждой настройки. После завершения редактирования конфигурации можно приступать к настройке фаервола. Удобнее всего это делать через Ubuntu Uncomplicated Firewall. Нужно будет открыть для DNS 53 порт с помощью следующих команд:
Заключительный этап – корректировка настроек роутера. В веб-интерфейсе устройства нужно отключить DHCP для ЛВС и изменить настройки DNS таким образом, чтобы все они указывали на настроенный DHCP-сервер. После этого необходимо перезапустить сеть на сервере.
У DHCP имеются определенные уязвимости. По схеме DORA первый откликнувшийся сервер имеет право предложить клиентскому устройству IP. Злоумышленник может использовать собственный сервер для дачи ответа клиенту. И если он успеет сделать это самым первым, то получит доступ к устройству и сможет контролировать его работу в сети.
Использование UDP-протокола – еще один недостаток DHCP. Проблема в том, что у UDP нет шифрования. Это значит передаваемые данные смогут в любой момент «считать» злоумышленники. К тому же протокол UDP не гарантирует доставку информации. При работе этого протокола могут возникать ошибки и потери в передачи пакетов данных. Это отрицательно сказывается на производительности DHCP и скорости загрузки PXE.
Протокол DHCP применяется для автоматического назначения статических и динамических IP-адресов и предоставления конфигурационной информации клиентам. Он работает в режиме запрос-ответ и базируется на клиент-серверной архитектуре. Несмотря на все недостатки DHCP, удобной альтернативы этому протоколу не существует. Большинство современных локально-вычислительных сетей проектируется с использованием этого протокола. Для выдачи IP-адреса сервер DHCP должен находиться с клиентом в одной подсети или быть соединенным с ним посредством маршрутизатора.