9.1 Зачем нужен протокол DHCP? Что такое DHCP опции (DHCP options) и зачем они нужны?
Привет, посетитель сайта ZametkiNaPolyah.ru! Продолжаем изучать основы работы компьютерных сетей. В девятой части мы с вами будем разбираться с тем, как работает протокол DHCP (Dynamic Host Configuration Protocol) и зачем он вообще нужен? Эта запись как раз будет про назначение и возможности протокола DHCP, а также мы с вами рассмотрим DHCP опции и их назначение в протоколе. Как всегда, торопиться никуда не будем, сперва рассмотрим DHCP в общих чертах, а затем будем разбираться с частностями.
Содержание статьи:
9.1.1 Введение
В курсах ICND1 и ICND2 протокол DHCP рассматривается очень поверхностно, да и в целом Cisco размазала информацию об этом протоколе на треки разных направлений и по разным уровням. Мы же рассмотрим DHCP довольно подробно и, пожалуй, рассмотренной информации хватит не только для того, чтобы ответить на вопросы по DHCP, которые могут встретиться на экзамене CCNA R&S, но и на вопросы, которые могут быть на экзамене CCNP R&S.
9.1.2 Зачем нужен протокол DHCP и как он связан с протоколом IP?
В теме Протокол IPv4 мы говорили о статических и динамических IP-адресах, мы затронули самые основные моменты, касающиеся DHCP и его назначения, сейчас мы кратко вспомним то, что было рассмотрено ранее. Думаю, все прекрасно знают, что такой инструмент, как молоток, в основном используется для забивания гвоздей, то есть нам всем ясно зачем нужен молоток. Так давайте сперва выясним – зачем нам нужен протокол DHCP.
Протокол DHCP (Dynamic Host Configuration Protocol) или протокол динамического конфигурирования хостов нужен для автоматизации процесса настройки сетевых интерфейсов в компьютерной сети. Протокол DHCP с тем или иным успехом решает две глобальные задачи:
- Избавляет инженера от однотипной и монотонной работы по настройке IP-адресов, шлюзов, масок подсетей, адресов DNS-серверов и других необходимых параметров для работы устройства в компьютерной сети. При выполнении такой работы еще и легко ошибиться, ведь устройств может быть сотни, а то и тысячи.
- Протокол DHCP в какой-то мере, но не на 100%, защищает вашу сеть от такого неприятного явления как дублирование IP-адресов. При ручной настройке узлов компьютерной сети у вас может быть два подхода: либо вы ведете учет выданных IP-адресов и куда-нибудь записываете конфигурации ваших узлов, либо вы пускаете это дело на самотек и выдаете IP-адреса своим узлам, руководствуясь желанием своей левой пятки. В маленьких и очень маленьких сетях второй подход применим, а вот в больших сетях возникнут проблемы даже в том случае, когда вы будете вести строгий учет, проблемы возникнут именно с учетом, каждый новый IP-адрес в вашей учетной системе будет делать учет всё более сложным. Протокол DHCP позволяет избавиться от этого ручного учета, ведь DHCP-сервер будет запоминать те IP-адреса, которые он выдал, возможно, он будет запоминать даже кому он выдал тот или иной IP-адрес, чтобы затем выдать его вновь.
В этой теме мы будем разбираться с протоколом DHCP в связке с протоколом IPv4, хотя стоит заметить, что рассматривать DHCP без протокола IP вообще нет никакого смысла, просто дело всё в том, что DHCPv6 имеет несколько другие задачи, но это совсем другая история. Вообще, протокол DHCP, как и многие другие протоколы (например, NAT), возник из-за недостатков IPv4, дело в том, что в IPv4 нет механизма по автоматическому назначению IP-адресов на интерфейсы, а вот в IPv6 такой механизм уже имеется. То есть DHCP расширяет возможности IPv4 и делает жизнь сетевого инженера более простой и приятной, правда этому инженеру придется изучать как этот DHCP работает.
Также не стоит воспринимать DHCP, как протокол для выдачи IP настроек узлам сети, выдавать можно не только IP-адреса и маски, но еще и огромное множество параметров, параметры, которые DHCP-сервер может сообщать клиенту, называются опции, ниже мы о них поговорим, но сразу замечу, что мы разберемся только с механизмом работы опций, все опции перечислить я не смогу и более того, я их все не знаю, да и не очень хочется мне их знать, если честно.
Протокол DHCP был стандартизован в 1993 году и является наследником протокола BOOTP, это мы увидим, когда познакомимся со структурой сообщений в DHCP, кстати говоря, по схожему принципу с DHCP работает протокол RARP, но он нам совсем неинтересен. DHCP описан в спецификации RFC 2131.
9.1.3 Режимы работы DHCP сервера
Куда важнее понимать режимы работы DHCP-сервера, чтобы он работал так, как вам хочется, а не так, как получается. Эта тема для нас не нова, поэтому здесь я буду краток.
- Ручное назначение статических IP-адресов.
- Автоматическое назначение статических адресов.
- Автоматическое распределение динамических адресов.
Третий режим работы DHCP-сервера в списке самый популярный. Во всех трех режимах работы администратор должен сообщить серверу диапазоны или пулы IP-адресов, которые тот будет выдавать клиентскому оборудованию, каждый диапазон IP-адресов должен быть из одной подсети, то есть в одном диапазоне не может быть адресов из разных подсетей. Давайте дадим описание каждому из этих режимов.
Ручной режим работы DHCP-сервера. Этот режим работы не очень сильно отличается от статической настройки клиентских устройств. Разница лишь в том, что администратор не бегает по всей сети и все настройки производит на DHCP-сервере. В таком режиме серверу нужно задать жесткое соответствие между IP-адресами и MAC-адресами. Устройство с одним конкретным мак-адресом всегда будет получать один и тот же IP-адрес, если в базе данных DHCP-сервера нет мак-адреса или для мак-адреса не задан IP-адрес, то клиент настройки не получит.
Автоматическое назначение статических адресов. Главной особенностью работы этого режима является то, что сервер выдает IP-адрес клиенту не на определенное время (в DHCP это время называется временем аренды или lease time), а навсегда. DHCP-сервер выдает клиенту IP-адрес без вмешательства администратора, при первом обращение клиента сервер его запоминает и затем постоянно выдает этому клиенту один и тот же IP-адрес.
Режим автоматического распределения динамических адресов. Это то, что нас больше всего интересует, самый гибкий и самый универсальный режим. В таком режиме сервер выдает IP-адрес клиенту не навсегда, а на строго определенное время, которое называется временем аренды, это время назначается администратором, когда время аренды будет истекать, клиент, если захочет, может его продлить, чтобы не менять IP-адрес. Тут стоит заметить, что в этом режиме адреса для клиентов тоже можно зафиксировать за конкретным клиентом, например, при помощи опции 82, но об этом позже.
У третьего режима есть один очень существенный плюс, этот плюс заключается в повторном использование IP-адресов, вот не нужен клиенту уже IP-адрес, он и сообщает об этом серверу, сервер его освобождает, а затем он может выдать этот адрес другому клиенту.
9.1.4 Опции DHCP протокола и зачем они нужны? Список стандартных DHCP опций
Вы уже, наверное, поняли, что протокол DHCP относится к группе протоколов, работающих по архитектуре клиент-север, DHCP относится к прикладному уровню моделей OSI 7 и TCP/IP, а сообщения DHCP инкапсулируются в UDP дейтаграммы, но сейчас речь не об этом. Сейчас нам нужно понять, что клиент делает запрос к серверу на получение параметров, необходимы для того, чтобы клиент мог получить полноценный доступ к ресурсам компьютерной сети, эти параметры называются DHCP опции. Если говорить грубо, то клиент просто сообщает серверу – какие опции ему необходимы, а сервер на основе каких-то своих критериев может принять решение – какие опции и с какими значениями нужно выдать клиенту, а может их вообще этому клиенту выдавать не нужно.
При этом стоит заметить, что опции DHCP могут быть стандартными, а могут быть и не стандартными и тут первый камень преткновения. Не все реализации DHCP-серверов, как и не все программные реализации DHCP-клиентов, поддерживают весь список стандартных опций, некоторые реализации DHCP имеют свои нестандартные опции, которые не поддерживаются другими реализациями и это всё может внести хаос в упорядоченный мир DHCP. Дело в том, что клиент может получить опцию, а сервер, соответственно, ее выдать, только в том, случае, если и клиент, и сервер понимают эту опцию и умеют с ней работать, что, собственно, логично.
Очевидная проблема, которая у вас может возникнуть: для подключения клиентского устройства к компьютерной сети нужна опция, с которой это устройство работать не умеет, ну вот не добавили поддержку этой опции производители и всё тут. Список стандартных DHCP опций описан в RFC 2132. Более того, для каждой стандартной опции есть свой RFC, который описывает – зачем эта опция нужна и как она должна работать.
Если говорить о самых часто используемых опциях DHCP, то вот вам небольшой список сейчас и в конце будет еще:
- IP-адрес шлюза по умолчанию;
- маска подсети;
- адреса DNS-серверов;
- имя домена DNS.
Для передачи опций между клиентом и сервером в DHCP пакете есть специальное поле переменной длинны, которое так и называется – options. Это поле имеет переменную длину, но при этом все остальные поля DHCP сообщения фиксированные. Если учесть, что и DHCP-клиент, и DHCP-сервер должны уметь обработать пакет размером 576 байт (576 байт взято не с потолка, а из ограничений некоторых старых протоколов), а также знать размер других полей в пакете, то нетрудно будет посчитать, что поле options имеет минимальную длину 340 байт. При этом самое поле options начинается с фиксированной последовательности Magic Cookie, которая выглядит так: 0×63825363. Можно сказать и по-другому, Magic Cookie – это четыре байта со значениями 99, 130, 83, 99. Как это не назови, но по этой последовательности устройство понимает, что фиксированная часть пакета закончилась и начались DHCP опции.
Кстати говоря, в DHCP пакете есть еще два необязательных поля, то есть в пакете есть пространство, вместо которого можно передавать опции – это поля file (64 байта) и snmae (128 байт). Что еще можно добавить про опции DHCP? Каждая стандартная опция имеет уникальный номер от 0 до 255, вернее правильнее будет говорить код, а не номер. У каждой опции есть размер, при этом у некоторых опций определен не строго фиксированный размер, а какие-то границы, в которых опция может плавать. Более подробную информацию о DHCP опциях вам придется смотреть в специальных RFC, дело всё в том, что некоторые опции должны начинаться, например, с нуля, некоторые опции нельзя использовать вместе, есть еще ряд других особенностей, в которые углубляться нам смысла сейчас нет.
Осталось лишь сказать, что поле опций в DHCP пакете всегда должно заканчиваться опцией с кодом 255, по этой опции устройства понимают, что это конец, больше опций не будет, да и сам DHCP пакет на этом закончился.
9.1.6 Список самых часто используемых DHCP опции
Ниже вы найдете таблицу, в которой перечислены самые часто используемые опции в DHCP, вероятность с ними столкнуться очень велика и я бы рекомендовал ознакомится с ними подробнее в соответствующих RFC.
Код | Название | Длина | Описание опции |
1 | Subnet Mask | 4 | Маска подсети |
3 | Router | x4 | Перечисление доступных маршрутизаторов. Или проще говоря, IP-адреса доступных шлюзов по умолчанию, в сети их может быть несколько. |
6 | Name Server | x4 | Перечисление доступных DNS серверов |
12 | Host Name | 1+ | Символьное имя узла |
23 | Default IP TTL | 1 | Позволяет задать TTL, которое обязан будет использовать клиент при отправке пакетов в сеть. При помощи этой опции можно ограничить доступ пользователям в сеть Интернет. |
26 | Interface MTU | 2 | Если вам нужно чтобы все узлы использовали одинаковый MTU, то вот опция. |
33 | Static IP Route | x8 | Вы же помните, что когда-то сети были классовыми, изначально это поле было для выдачи маршрутов узлам в классовых сетях, поэтому для маски здесь место не нашлось. Сейчас, в эпоху VLSM и CIDR, при помощи этой опции можно выдавать узлам статические маршруты к удаленным сетям с маской /32. |
35 | ARP Cache Timeout | 4 | У протокола ARP есть кэш, каждая операционная система хранит ARP кэш разное время, чтобы упорядочить этот хаос есть 35 опция DHCP, которая заставляет все узлы хранит ARP-записи одинаковое количество времени. |
50 | Requested IP Address | 4 | Эту опцию использует клиент для того, чтобы сообщить серверу о том, какой IP-адрес он хочет получить. |
55 | Parameter Request List | 1+ | При помощи этой опции DHCP-клиент сообщает серверу список опций, которые ему хочется получить. |
61 | Client Identifier | 2+ | DHCP-сервер ведет сопоставление IP и MAC-адресов, он запоминает какому мак-адресу какой IP был назначен. Но вместо мак-адресов можно использовать идентификатор клиента. |
66 | TFTP Server Name | 1+ | Название опции говорит само за себя. |
82 | Я не знаю, как эта опция называется, а в RFC смотреть лень. Все инженеры вокруг меня просто говорят восемьдесят вторая опция. | С этой опцией мы будем знакомиться отдельно, кратким описанием тут не отделаешься. | |
121 | Classless Route | 5+ | Этой опцией можно выдавать маршруты по умолчанию в бесклассовых сетях. |
150 | TFTP Server IP Address | 4 | Тут тоже всё ясно из названия. |
255 | End | 0 | Если опции в пакете есть, то эта опция является обязательной, она означает, что других опций уже не будет и это конец DHCP пакета. |
9.1.7 Выводы
Это было знакомство с протоколом DHCP и его основными особенностями, вы, наверное, заметили, что вся самая важная информация в DHCP передается в виде опций, поле опции является довольно гибким инструментом для динамической конфигурации хостов.
Выберете удобный для себя способ, чтобы оставить комментарий