Разное

Dhcp client: что это такое и как он работает

02.03.1971

Содержание

Клиент DHCP не может получить IP-адрес, заданный DHCP — Windows Server

  • Чтение занимает 2 мин

В этой статье

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

Применяется к:   Windows Server 2012 R2
Исходный номер КБ:   167014

Симптомы

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

Решение

Чтобы решить эту проблему, сделайте один из следующих методов:

  • Не используйте схемы IP-адресов, которые перекрываются.

  • Запустите следующие команды после перемещения клиента в новый сегмент:

    Ipconfig /Release
    Ipconfig /Renew
    

Дополнительные сведения

Когда клиент DHCP, ранее имевший адрес, заданный DHCP, снова начинает работу, клиент переходит в состояние INIT-REBOOT. Клиент попытается убедиться, что он по-прежнему может использовать тот же адрес, отправив пакет DHCPRequest, заполнив поле DHCP Option «DHCP Requested Address» с ранее заданным IP-адресом.

Если сервер DHCP хранит молчание, клиент предполагает, что предыдущий адрес по-прежнему действителен и сохраняет его. Если сервер DHCP отправляет пакет NACK в ответ на DHCPRequest, клиент переходит в цикл Discover; он также запрашивает ранее заданный адрес в пакете DHCPDiscover.

Когда сервер DHCP получает DHCPRequest с заданным ранее адресом, он сначала проверяет, поступил ли он из локального сегмента, проверив поле GIADDR. Если он возник из локального сегмента, сервер DHCP сравнивает запрашиваемого адреса с IP-адресом и подсетевой маской, принадлежащей локальному интерфейсу, получившим запрос.

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

Если адрес не удается проверить подсети маска/IP-адрес, сервер DHCP проверяет, поступил ли он из Superscope, если он определен. Если нет, сервер отвечает на DHCPRequest пакетом NACK.

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

Например, предположим, что клиент DHCP получает адрес 172.17.3.x с подсетевой маской 255.255.255.0, и клиент перемещается в новый сегмент, где адрес сервера DHCP 172.17.1.x с подсетной маской 255.255.0.0. Когда сопоставление подсети с ip-адресом будет сделано на сервере DHCP, сервер DHCP будет молчать, предполагая, что другой сервер DHCP в назначенном сегменте адресе. Если маски подсети были отменены, клиент получит допустимый адрес.

Настройка маршрутизатора cisco как DHCP клиента

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

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

Настройка же эта очень простая:

R2#configure terminal
Enter configuration commands, one per line.  End with CNTL/Z.
R2(config)#interface fa0/0
R2(config-if)#ip address dhcp
R2(config-if)#no shutdown
R2(config-if)#exit
R2(config)#exit

Проверяем, какой адрес мы получили:

R2#show dhcp lease
Temp IP addr: 192.168.1.12 for peer on Interface: FastEthernet0/0
Temp sub net mask: 255.255.255.0
   DHCP Lease server: 192.168.1.1 , state: Bound
   DHCP Transaction id: 0A13A020
   Lease: 86400 secs,  Renewal: 43200 secs,  Rebind: 75600 secs
Temp default-gateway addr: 192.
168.1.1 Next timer fires after: 11:59:03 Retry count: 0 Client-ID:cisco-0006.2AA3.CA01-FastEthernet0/0 Hostname: R2

Такова базовая настройка. Дополнительно можно задать на интерфейсе такие параметры, как время выделения, имя нашего клиента class-id и другие:

R2(config)#interface fa0/0
R2(config-if)#ip dhcp client ?
  class-id        Specify Class-ID to use
  client-id       Specify Client-ID to use
  default-router  Set DHCP default router related information
  hostname        Specify hostname to use
  lease           Requested address lease time
  mobile          Mobile client configuration parameters
  request         Specify options (not) to request
  route           Options for routes installed by dhcp
  update          Dynamically update information

Dhcpcd — Gentoo Wiki

Демон клиента динамической конфигурации хоста (Dynamic Host Configuration Protocol Client Daemon) (net-misc/dhcpcd) — это популярный DHCP клиент. Он способен работать как с IPv4, так и с IPv6 конфигурациями.

Установка

USE-флаги

USE flags for net-misc/dhcpcd

A fully featured, yet light weight RFC2131 compliant DHCP client
debug Enable extra debug codepaths, like asserts and extra output. If you want to get meaningful backtraces see https://wiki.gentoo.org/wiki/Project:Quality_Assurance/Backtraces
embedded Embed the definitions of dhcp options in the dhcpcd executable
ipv6 Add support for IP version 6
privsep Enable support for privilege separation
udev Enable virtual/udev integration (device discovery, power and storage device support, etc)

Emerge

Используйте следующую команду для установки dhcpcd:

root #emerge --ask net-misc/dhcpcd

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

Файлы

Всю конфигурацию dhcpcd можно выполнить в файле /etc/dhcpcd. conf, но для большинства установок dhcpcd будет работать из коробки, если предположить что большинство современных компьютеров находятся за маршрутизатором или точкой доступа с работающим DHCP сервером. Хотя, будет полезно прочитать man 5 dhcpcd.conf[1], если требуется расширенная конфигурация.

Статический IP-адрес

В случае если сетевая карта должна быть сконфигурирована статическим IP-адресом, добавьте свои данные в /etc/dhcpcd.conf.[1] Ниже приведен пример ручного добавления статического адреса, маршрута и DNS путем редактирования файла конфигурации DHCPCD с помощью любимого редактора:

Файл /etc/dhcpcd.conf

static ip_address=192.168.0.10/24
static routers=192.168.0.1
static domain_name_servers=192.168.0.1

Использование

Введение

The information in this section is probably outdated. You can help the Gentoo community by verifying and updating this section.

root #dhcpcd --help

usage: dhcpcd   [-46ABbDdEGgHJKkLnpqTVw]                                                                             
                [-C, --nohook hook] [-c, --script script]                                                            
                [-e, --env value] [-F, --fqdn FQDN] [-f, --config file]                                              
                [-h, --hostname hostname] [-I, --clientid clientid]                                                  
                [-i, --vendorclassid vendorclassid] [-l, --leasetime seconds]                                        
                [-m, --metric metric] [-O, --nooption option]                                                        
                [-o, --option option] [-Q, --require option]                                                         
                [-r, --request address] [-S, --static value]                                                         
                [-s, --inform address[/cidr]] [-t, --timeout seconds]                                                
                [-u, --userclass class] [-v, --vendor code, value]                                                   
                [-W, --whitelist address[/cidr]] [-y, --reboot seconds]                                              
                [-X, --blacklist address[/cidr]] [-Z, --denyinterfaces pattern]                                      
                [-z, --allowinterfaces pattern] [interface] [.
..] dhcpcd -k, --release [interface] dhcpcd -U, --dumplease interface dhcpcd --version dhcpcd -x, --exit [interface]

Запуск как сервис

Смотрите статью управление сетью с помощью DHCPCD.

Одноразовый запуск DHCP

Для однократной конфигурации сетевого интерфейса с помощью DHCP, используйте следующую команду:

Убедитесь, что изменили eth0, в команде выше, на необходимый сетевой интерфейс.

Устранение проблем

Смотрите также

Внешние ресурсы

Ссылки

DHCP Option 61 или Client ID в Windows 10

Статья от одного из наших постоянных читателей — philzy :).

Я являюсь совладельцем сервиса cloud-desktop.net, и недавно у меня возникла проблема. Один из клиентов попросил восстановить виртуалку из бэкапа. Я восстановил ночную реплику за 2 мин., однако клиент сказал, что не может получить к ней доступ. Прошло 30 минут траблшутинга — виртуалка из реплики, оказывается, имеет другой MAC-адрес (да и IP), следовательно слетел доступ.

Я в курсе про то, что для таких случаев придуман DNS, но сервис работает именно через IP и этому есть простое объяснение – DNS разрешение имен не всегда корректно работает в haproxy [backend] server. Так как это ключевой элемент системы, то для снижения количества возможных проблем и было выбрано такое решение.

В общем, выдача IP-адреса через MAC-адрес — это не мой метод, и в качестве альтернативы я решил рассмотреть использование Client id или DHCP Option 61, использующий не привязанный к MAC-адресу метод выдачи IP-адресов через DHCP.

Я создал DHCP-пул на mikrotik и решил начать тестирование.  Казалось, что это будет просто и понятно.

Увы… Windows 10, как впрочем и все остальные десктопные представители этой ОС, не всегда используют эту DHCP Option 61 [для проверки уникальности]. И выдают в этом поле вот такое:

Т.е. ничего.

Прим.: серверные версии дают в этом поле текущее значение mac-адреса со значением индекса сетевой карты (0,1,2…)

Это меня не устраивало, и я решил выяснить, почему так происходит.

Гугление дало только пару мутных ссылок по этой теме:

Зато стало понятно, что в реестре есть некий ключ типа REG_DWORD:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\'X'\Parameters\Tcpip

который называется DhcpClientIdentifier.

Допустимый диапазон значений 0x0 — 0xFFFFFFFF. Размер изменяемого значения DhcpClientIdentifier — 4 байта, 8 шестнадцатеричных символов в группе по 2 шестнадцатеричных символа. Группы передаются в обратном порядке. Если размер изменяемого значения DhcpClientIdentifier менее 8 шестнадцатеричных символов, то в конец добавляется ноль.

Но далее у меня встал вопрос, а если параметры DWORD (8 цифр) меня не устраивают, и я хочу ЦифроБуквы, то что делать?

Тут я вспомнил, что есть замечательный тип REG_BINARY, которому все равно, что передавать.

Я еще разок перечитал RFC — www.ietf.org/rfc/rfc4361.txt и понял, что в моем случае RFC будет несколько нарушен, так как я хочу передавать в Client id имя виртуалки, а не уникальный идентификатор сетевого устройства.

Согласен, что это может привести к проблемам, если у клиента будет 2 и более сетевых карты, но для меня это не критично, так как у клиента всегда будет только одна сетевая карта.

Поставив простой эксперимент по записи данных в бинарном виде, я понял что тип REG_BINARY передает то, что я хочу и без всякой инверсии порядка следования. Таким образом стало ясно, что нужен простой и незатейливый Powershell скрипт:

$client_id="v12345678"
 $hexified=[System.Text.Encoding]::ASCII.GetBytes($client_id)
 $objWin32NAC = Get-WmiObject -Class Win32_NetworkAdapterConfiguration -namespace "root\CIMV2" -computername ". " -Filter "IPEnabled = 'True' AND DHCPEnabled ='True'"
 foreach ($objNACItem in $objWin32NAC)
 {
 $nic=($objNACItem.SettingID)
 New-ItemProperty -Path HKLM:\SYSTEM\CurrentControlSet\services\Tcpip\Parameters\Interfaces\$nic -Force -Name DhcpClientIdentifier -PropertyType Binary -Value ([byte[]]$hexified)
 }
 Write-Host $nic
 Write-Host $hexified

[System.Text.Encoding]::ASCII.GetBytes($client_id) – вот эту строку я стал передавать в Client id, когда понял что значения передаются ASCII-символами без всяких хитрых и сложных преобразований (и без всякого UNICODE).

В скрипте оставлена возможность, что сетевых карточек будет более чем одна, но это скорее «на всякий случай».

Ну что же выполняем скрипт:

и проверяем еще раз:

MAC-адрес сменился с 00:50:56:B4:F0:90 на 00:50:56:B4:F0:91, а IP-адрес остался тот же.

УРА!!!

Конечно, такое можно сделать и для нескольких карточек, используя индекс сетевой карты и имя компьютера (например), но в моем случае это не нужно.

что это, настройка на роутере простыми словами, включение и отключение

Антон Богданов

Инженер-проектировщик сетей связи

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

Что такое DHCP

Дословно эта аббревиатура (protocol DHCP) означает Dynamic Host Configuration Protocol, что в переводе на русский язык означает “протокол динамической настройки узла”. Благодаря этой технологии не требуется прописывать на каждом клиенте сетевые параметры, такие как:

  • IP-адрес;
  • Маска подсети;
  • Основной шлюз;
  • Адрес DNS-сервера.

В рамках этой статьи определим термины:

  • Клиент (Client) – устройство, с которого происходит выход в интернет;
  • Сервер (Server) – устройство, предоставляющее возможность выхода в интернет для клиента.

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

Виды

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

Определение адресов может быть двух типов:

  • Статическое (распределение вручную) – IP каждому клиенту присваивается вручную администратором сети;
  • Динамическое (DHCP) – IP присваиваются автоматически исходя из заданных условий.

Принцип действия

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

  • Discover (Поиск сервера). Клиент, которому нужно получить сетевой адрес, отправляет сообщение на все компьютеры в сети с запросом на присвоение ему IP. Для своей временной идентификации клиенту присваивается адрес 0.0.0.0;
  • Offer (Предложение сервера). Сервер получает запрос от клиента, анализирует его и, исходя из своих настроек, подбирает конфигурацию и отправляет её клиенту;
  • Request (Запрос). Получив предлагаемые настройки, клиент отправляет на адрес ответившего ему сервера запрос о предоставлении ему этих настроек;
  • Acknowledge (Подтверждение). Сервер получает запрос на уже конкретные настройки, предложенные ранее, создаёт привязку для клиента и отправляет ему их.

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

Весь этот обмен пакетами происходит в пределах одной подсети, если клиент и сервер находятся в разных подсетях, то нужно использовать DHCP Relay для связи между ними.

IP адресация

Для работы по сети любому устройству требуется IP-адрес. В протоколе IPv4 это числовой идентификатор, состоящий из 4 разрядов, каждый из которых отделяется точкой, без него устройство не может быть определено в сетевой инфраструктуре. Зачастую маршрутизатор имеет IP-адрес 192.168.1.1, а подключённое к нему устройство, например, 192.168.1.2.

Клиенту должна быть присвоена определённая маска подсети, например, 255.255.255.0. Она позволяет определить к какой сети относится данный клиент.

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

Проблемы с интернетом и сетью

При использовании DHCP могут возникать некоторые проблемы с доступом в интернет:

  • Дублирование IP. Когда в пределах одной сети у двух и более устройств прописан один и тот же адрес, то возникнет ошибка “Address Already in Use”, что означает, что данный адрес уже используется. В этом случае нужно проверить настройки IP на всех компьютерах и изменить совпадающие. Это может быть из-за того, что на роутере установлена раздача адресов по DHCP или присвоены статические адреса некоторым устройствам, и из-за того, что неправильно задан диапазон IP, раздаваемых динамически, DHCP сервер пытается присвоить уже используемый адрес. Для решения этой проблемы можно посмотреть список клиентов DHCP и передвинуть диапазон динамических адресов далее;
  • Исчерпание IP. Это означает, что пул адресов, доступных для динамической раздачи, исчерпан и его нужно расширить, чтобы новые устройства могли получать адреса.
  • Неправильная настройка DHCP и клиента. В случае, если изменить на самом клиенте присвоенные ему автоматические настройки, то доступа в сеть не будет. Присваивать адреса клиентам нужно на роутере, и уже после и на клиенте.

Включение в Windows

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

Для настройки DHCP сервера в операционной системе Windows нужно зайти в “Центр управления сетями и общим доступом” и выбрать пункт “Изменение параметров адаптера”. В открывшемся окне нужно найти сетевую карту и в контекстном меню выбрать пункт “Свойства”, в новом окне найти пункт “IP версии 4” и нажать на кнопку “Свойства”. В открывшемся окне можно увидеть, что активны настройки получения адреса автоматически.

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

Настройка на роутерах

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

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

Но это ещё не всё, ведь для каждого устройства, подключённого к сети, требуется собственный адрес, уникальный только в рамках данной сети, чтобы роутер мог “понимать”, как ему общаться с тем или иным устройством. Внешний адрес, уникальный в глобальной сети, у всех устройств будет точно такой же, как и у маршрутизатора, а вот с внутренними нужно будет разобраться непосредственно пользователю.

Сам роутер имеет статический внутренний IP, обычно это 192.168.1.1 или 192.168.0.1. На всех роутерах DHCP сервер активирован по умолчанию. Это сделано для того, чтобы можно было подключиться к маршрутизатору с любого устройства, роутер сам определит, какой ему присвоить адрес и даст доступ во внутреннюю сеть. Такой способ подключения клиентов очень удобен, ведь в этом случае не нужно проводить предварительную настройку каждого устройства и присваивать каждому уникальный внутренний адрес. Все новые устройства без проблем получат адреса и доступ в сеть.

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

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

Asus

Настройка роутера этой фирмы происходит следующим образом. В левом краю web-панели есть пункт “Локальная сеть”, нажав на него, нужно выбрать вкладку DHCP-сервер. На открывшейся странице нужно отметить пункт “Да” в графе “Включить DHCP-сервер”.

Здесь можно настроить пул выдаваемых автоматически адресов и время аренды.

D-Link

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

Здесь всё те же настройки, только выглядят несколько иначе.

TP-LINK

Параметры DHCP на устройствах TP-LINK доступны практически с главной страницы интерфейса.

В левом краю есть стэк “DHCP”. Развернув его, можно увидеть ещё три пункта, в которых можно настроить, посмотреть список клиентов и зарезервировать адреса для определённых клиентов. Для настройки нужно выбрать пункт “Настройка DHCP”. Далее нужно активировать сервер и произвести его настройку, задав интервал и время аренды.

Zyxel keenetic

Для настройки роутеров Zyxel нужно зайти в панель Администратора, затем в настройки домашней сети.

Там выбрать вкладку “Параметры IP” и поставить галочку “Включён” в пункте “Сервер DHCP”.

Netis

Настройки роутеров Netis несколько более скудные, здесь можно включить и отключить DHCP на маршрутизаторе и задать диапазон выдаваемых IP.

Попасть в эти настройки можно из стэка “Сеть”, пункт “LAN”.

Upvel

В левом стеке есть пункт “Основные настройки”, там “Интерфейс LAN”, в нём на выбор можно включить DHCP или DHCP Relay (ретранслятор в другие подсети).

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

Мне нравится3Не нравится

Протокол динамической конфигурации хоста (DHCP)

Добавить комментарий

Ваш адрес email не будет опубликован.