Duid клиента dhcpv6 что это

Duid клиента dhcpv6 что это

Мы в своем Alfa-inet ISP внедряем IPv6. Адреса v6 раздаются всем пользователям чуть ли не с момента основания. Но оказывается, не все так просто. Пока все в работе 🙂

FreeBSD RTADVD

Первым делом настроили родной rtadvd под FreBSD 7.2. На вид хорошо. Несколько клиентов получили адреса. Все довольны. Пошло довольно много времени и вдруг оказалось, что адреса это хорошо, но нужно бы еще v6 DNS, который RDNSS. Для тех, у кого резолвер по тем или иным причинам не может или не хочет работать по v4. Оказалось, что rtadvd этого не умеет. Возник патч:

FreeBSD 7.2 upgrade

Все заработало и тут сервер грохнулся. И еще раз. И еще раз. Оказалось, что 7.2-release не может роутить IPv6, она падает через несколько минут после включения ipv6 gateway. Пришлось делать cvsup до 7.2-curent. Помогло.

Multicast filtering

Спустя еще некоторое время оказалось, что в сети по-прежнему встречаются люди, которые не получают v6 адреса. Вскрытие показало, что дело в фильтрации multicast на некоторых свитчах. На D-Link’ах правильная настройка выглядит примерно так:

DHCPv6

DHCPv6 default gateway

Как оказалось, в текущей редакции протокола такой опции нет. Уже 5 лет спорят. Есть частное нестандартное решение в виде использования custom options, но это требует настроек и со стороны клиента.

MAC-based DHCPv6

DHCPv6-PD

Как оказалось, сложность не единственная. Не все роутеры используют тот адрес, который назначает DHCP. При этом сеть благополучно принимается и раздается клиентам. И конечно же, у них ничего не работает, т.к. маршрут со стороны сервера прописан на несуществующий IPv6. Как оказалось, роутеры могут продолжать использовать в качестве внешнего адрес полученный по RADVD или даже Link-local. Поэтому пришлось (очень не хотелось) добавить вызов внешнего скрипта, прописывающего маршрут к назначенной клиентской сети через тот IPv6 адрес, с которого пришел запрос (как правило Link-local). Патч автоматической маршрутизайии DHCPv6 PD доступен для ISC DHCPD v4.2.5.

Configs

Note: replace 2a01:d0:xxx with your real addresses 😉

Note 2: don’t forget to set static routes to your fixed-prefix6

Источник

DHCPv6

DHCPv6 was specified in RFC 3315, “Dynamic Host Configuration Protocol for IPv6 (DHCPv6)”, July 2003. This is still current. There have been several updates to this.

Unlike DNS, DHCPv4 could not support IPv6 with just a few minor changes, because DHCPv4 is very dependent on broadcast, which does not exist in IPv6. Also, most IPv6 nodes get their default gateway via SLAAC, so do not need to get it from DHCP. Soon, nodes will also get the IPv6 addresses of DNS via SLAAC (RFC 6106), so there will be even less need for DHCPv6. If you look at the protocols, you can see that DHCPv6 was based on DHCPv4, but using multicast instead of broadcast, and there is no way to configure or provide the default gateway. If DHCPv6 included the ability to provide the default gateway, it would be easier to do configuration without SLAAC.

Like DHCPv4, DHCPv6 is a link-local protocol (broadcast in DHCPv4 does not cross routers and the multicast address used in DHCPv6 is link-local). So, in both cases, each subnet must have either a server or a relay agent to send and receive the link-local connections to and from clients, while using higher scope unicast for the relay agent to communicate with the real server in another subnet.

Since DHCPv6 cannot provide the default gateway or prefix information, it is not possible for an IPv6 node to completely configure its networking using only DHCPv6. You must use SLAAC or manual configuration for these items. If you enable SLAAC the node will also configure one or more global addresses using SLAAC, assuming the Router Advertisement messages contain at least one Prefix Information option. If you manually configure the default gateway your node could obtain a single managed IPv6 global address and the IPv6 addresses of DNS. One option would be to provide a source of Router Advertisements, but to not include any Prefix Information options. That way a node could do Router Discovery, but would not configure any additional global unicast addresses. DHCPv6 was designed as an “addon” mechanism on top of SLAAC.

Normally, an IPv6 compliant node will not attempt to obtain information from DHCPv6 unless it first does SLAAC, and finds that the M and/or O flags are set in the Router Advertisement message. If the M flag is set, it can get stateless information (e.g. addresses of DNS) AND a global unicast address. If the M flag is clear, but the O flag is set, it can only get the stateless information. Windows 7 has an option to tell a node to use DHCPv6,

In Windows 7, you can enable or disable Router Discovery on a node (whether or not to process Router Advertisement messages), and Managed Addresses (whether or not to obtain addresses of DNS and a global address from DHCPv6):

netsh int ipv6 set int “Local Area Connection” routerdiscovery=enable|disable

If Router Discovery is enabled, the node will process Router Advertisement messages as usual: obtain the default gateway, and if there is at least one prefix information option, configure global addresses based on advertised prefixes.

If Router Discovery is disabled, the node will ignore Router Advertisement messages. It will not obtain the default gateway automatically (you must manually configure one), and it will not generate any global addresses during SLAAC, regardless of whether or not the router is sending Router Advertisement messages with Prefix Information options.

netsh int ipv6 set int “Local Area Connection” managedaddress=enable|disable

This setting has no effect if routerdiscovery is enabled (in that case, it is controlled by the M flag in Router Advertisement messages).

If Managed Address is enabled, the node will obtain stateless information (e.g. DNS address) and stateful information (a managed global unicast IPv6 address) from DHCPv6. It will access DHCPv6 using the “all DHCPv6 servers and relay agents in subnet” multicast address (ff02::1:2).

If Managed Address is disabled, the node will not use DHCPv6.

There is no configuration where the node will obtain the default gateway automatically via Router Discovery, but not also configure one or more global unicast addresses (unless you do not include any Prefix Information options in your Router Advertisement messages).

If there is no source of Router Advertisement messages, you must manually configure at least the default gateway, but you can obtain a managed global unicast address and the IPv6 addresses of DNS servers from DHCPv6 (by disabling Router Discovery, and enabling Managed Address option with netsh).

So, to configure a node using only DHCPv6 (and not obtain any global addresses from SLAAC) you would need to do the following:

Alternatively, you could do the following (if you want to allow other nodes to configure global unicast addresses with SLAAC, which would require including Prefix Information options in the Router Advertisement messages):

The GUI tools that come with Windows 7 will not allow you to specify a default gateway without also configuring at least one global IPv6 unicast address. You can specify a default gateway without specifying even a single global unicast address with netsh or NetConf. NetConf also allows you to easily enable or disable Router Discovery and Managed Address options with GUI controls.

In NetConf, go to the IPv6 Settings tab. Set the Router Discovery option to Disabled. Set the Managed Address option to Enabled. Right click in the Gateway Addresses ListView and select Add Address. Enter your subnet default gateway address (ideally link-local, but global unicast will work). You should now have a default gateway, an automatically generated link-local address, a managed global unicast address from DHCPv6 and the IPv6 addresses of DNS from DHCPv6. There should be no SLAAC generated global unicast addresses or manually configured IPv6 global addresses. If there are any manually assigned addresses, you can delete them with NetConf – go to the IPv6 Unicast tab, right click on each manually assigned address found and select Delete Address. If you do this and surf to v6address.com, it will always show you the managed IPv6 address from DHCPv6, because that is the only global unicast IPv6 address on your node.

Note that some simple IPv6 nodes (sensors, consumer electronics devices, etc) may only be able to obtain a global IPv6 address via SLAAC. In this case, providing Router Advertisement messages with no Prefix Information option would prevent these nodes from obtaining IPv6 global addresses (they would still generate link-local addresses). Some functionality may not work without a global IPv6 unicast address.

DHCPv6 Options

As with DHCPv4, there are a number of options that you can specify in DHCPv6. These will be sent to the node doing DHCPv6 configuration along with the IP address. These options can be specified at the Server, Scope or Reservation level. There are nowhere as many options as exist for DHCPv4, but perhaps someday more will be added. These options are:

Источник

Подключение сети к глобальному IPv6 пространству

Некоторое время назад в комментариях к статье «IPv6 шлюз для локальной сети» меня попросили рассказать о том, как я активировал IPv6 в одном из своих проектов. Начну с пары слов о самом проекте. CareNet — это результат кооперации двух крупных Шведских университетов: KTH Royal Institute of Technology и Karolinska Institutet. Вкратце, CareNet — это система, позволяющая наблюдать паллиативных пациентов вне больницы. У пациента дома устанавливается небольшое устройство, которое имеет доступ в Интернет и подключено посредством VPN к серверам CareNet. Устройство включает в себя HDVC-клиент, набор сенсоров для контроля состояния пациента и средства доступа к медицинскому порталу, содержащему всю информацию о пациенте. Медицинская информация доступна как самому пациенту, так и доктору.

Но статья об активации IPv6, поэтому нам более интересна не клиентская, а центральная часть инфраструктуры CareNet. Она включает в себя ряд маршрутизаторов и серверов, которые расположены на университетской площадке KTH в Стокгольме. Схема дает преставление о масштабах сети.

Duid клиента dhcpv6 что это. Смотреть фото Duid клиента dhcpv6 что это. Смотреть картинку Duid клиента dhcpv6 что это. Картинка про Duid клиента dhcpv6 что это. Фото Duid клиента dhcpv6 что это

На протяжении 20 недель моей задачей было поддерживать указанную инфраструктуру в рабочем состоянии и наращивать ее функционал. Одним из заданий я для себя определил активацию IPv6 в этой небольшой сетевой топологии. Более того, помимо развертывания IPv6 внутри сети, хотелось также подключить CareNet к глобальному IPv6 пространству.

Адресация

Начал я с того, что попросил администрацию университета выделить мне кусочек лабораторного диапазона IPv6 для своей небольшой песочницы. Мне был торжественно делегирован префикс 2001:6b0:32::/49. Поначалу я обижался и несколько раз хотел бежать и просить еще, но в итоге, прибросив схему адресации так и этак на бумаге, я решил что 6×10 23 адресов должно хватить.
Определившись с адресацией, я настроил интерфейсы на маршрутизаторах. Здесь необходимо сказать, что маршрутизаторы в CareNet необычные, построенные на базе высокопроизводительной аппаратно-программной Linux-платформы Bifrost. Это университетская разработка выходящая сейчас на коммерческий рынок. Интерфейсы между маршрутизаторами имеют пропускную способность 10 Гбит/с. За маршрутизацию (control plane) отвечает программный пакет Quagga.

Внутренняя маршрутизация, OSPFv3

Добавив IPv6 адреса на интерфейсы маршрутизаторов я запустил OSPFv3 в качестве динамического протокола маршрутизации. Настройки базовые, одна OSPF-зона 0.0.0.0. Технического объяснения почему выбран OSPF не будет. Лично я выбираю по названию. RIPng мне не нравится. Вот IS-IS с удовольствием, но Quagga его не поддерживает.
С пакетом Quagga работал впервые, но освоился моментально потому что командный интерфейс аналогичен Cisco CLI. Пример конфигурации демона ospf6d привожу для двух маршрутизаторов:

Динамическое выделение адресов, DHCPv6

Маршрутизация активирована и следующим возник вопрос о динамическом выделении IPv6-адресов серверам в ферме и клиентам в сетях доступа. Эту задачу решено было возложить на DHCPv6 сервер. Я развернул два DHCPv6-сервера: ISC DHCP и Dibbler. Был организован конкурс по условиям которого тот из серверов, кто первым обслужит клиента выделив ему IPv6 адрес, останется функционировать. Dibbler оказался расторопнее, поэтому ISC DHCP был уничтожен. Пример настройки диапазонов выделяемых адресов:

Внешняя маршрутизация, BGP

Внутренняя маршрутизация функционирует, клиенты получили адреса, дело за малым — открыть IPv6 доступ в интернет. Догадываясь о том, что мой непосредственный сосед — AS 2839 (KTH-LAN) уже является частью глобального IPv6 пространства, я осмелился просить его администраторов разрешить мне установить с KTH-LAN дополнительную сессию BGP для объявления моего префикса IPv6. После согласования всех технических деталей соседство IPv6 BGP было установлено. Пара дней ушла на то, чтобы убедить автономную систему следующую далее по цепочке (SUNET) обновить свои входящие BGP-фильтры и наконец выпустить мой префикс в свободное плавание. Конфигурация демона bgpd:

Помимо фильтрации объявляемых и принимаемых префиксов неплохо было бы активировать идентичные фильтры непосредственно для пересекающего границу автономной системы трафика, как механизм противодействия атакам “IP spoofing”. Простой список контроля доступа ACL вполне справится с этой задачей.

Настроив BGP и разобравшись с фильтрами, открыл шампанское и приготовился встречать первый ICMPv6 ответ, более известный как ping, от ipv6.google.com. Трассировка маршрута ниже:

DNS для IPv6

А вот с обратной зоной (reverse DNS lookup) пришлось повозиться. Был создан отдельный файл, названный в соответствии с канонами 2.3.0.0.0.b.6.0.1.0.0.2.ip6.arpa. Название образовано из префикса 2001:6b0:32::/49 записанного в обратном порядке и дополненного нулями. Далее в достаточно недружелюбном и трудном к восприятию формате добавлены обратные DNS-записи для всех IPv6-систем в сети. Часть конфигурации приведена ниже:

Источник

03. DHCPv6

Duid клиента dhcpv6 что это. Смотреть фото Duid клиента dhcpv6 что это. Смотреть картинку Duid клиента dhcpv6 что это. Картинка про Duid клиента dhcpv6 что это. Фото Duid клиента dhcpv6 что это

Когда DHCPv6 клиент пытается запросить IPv6 адрес и другую конфигурацию, сначала клиент должен найти DHCPv6-сервер, а только после этого запросить конфигурацию.

В момент обнаружения сервера, DHCP клиент пытается найти DHCPv6 сервер, рассылая SOLICIT сообщения, содержащее собственный идентификатор DUID, на мультикаст-адрес FF02::1:2;

Каждый DHCPv6-сервер, получивший SOLICIT, ответит клиенту сообщением ADVERTISE (предложение), которое содержит идентификатор DUID сервера и его приоритет;

Возможно, что клиент получить несколько сообщений ADVERTISE. В этом случае клиент должен выбрать один сервер и ответить ему сообщение REQUEST, чтобы запросить предложенный им адрес;

Выбранный DHCPv6-сервер подтверждает клиенту IPv6 адрес и другие параметры в сообщении REPLY.

Вышеуказанные четыре этапа завершают процесс динамического назначения параметров. Однако, если DHCPv6 сервер и DHCPv6 клиент не находятся в одной сети, сервер не сможет получить multicast-пакеты от клиента и ответить ему. Для пересылки таких пакетов используется DHCPv6-relay, функции которого реализованы на коммутаторе. Когда DHCPv6-relay получает сообщение от DHCPv6 клиента, он инкапсулирует его в пакет Relay-forward и доставляет следующему DHCPv6-relay или серверу.

Для делегирования IPv6 префиксов DHCPv6 сервер настраивается на маршрутизаторе провайдера (PE), а DHCPv6-клиент настраивается на маршрутизаторе клиента (CPE). Маршрутизатор клиента шлет маршрутизатору провайдера запрос на выделение префикса адресов и получает предварительно настроенный префикс. Затем CPE маршрутизатор делит выделенный префикс на /64 подсети. Эти префиксы будут анонсированы сообщениями объявления маршрутизатора (RA) хостам.

3.2. Настройка DHCPv6-сервера

Включить\выключить сервис DHCPv6;

Настроить адресный пул DHCPv6:

Создать\удалить адресный пул;

Настроить параметры адресного пула;

Включить функцию DHCPv6 сервера на порту;

Включить\выключить сервис DHCPv6;

Команда

Описание

! В режиме глобальной конфигурации

Включить сервисы DHCPv6 (server, relay)

Выключить сервисы DHCPv6 (по умолчанию)

2. Настроить адресный пул DHCPv6:

a. Создать\удалить адресный пул

Команда

Описание

! В режиме глобальной конфигурации

Создать адресный пул DHCPv6

Удалить адресный пул DHCPv6

b. Настроить параметры адресного пула;

Команда

Описание

Настройка Switch1 и Switch2 одинакова:

3.7. Решение проблем при конфигурации DHCPv6

Если DHCPv6-клиент не может получить IP адрес и другие сетевые параметры, после проверки кабеля и клиентского оборудования следует выполнить следующее:

Проверьте, запущен ли DHCPv6-сервер;

Если DHCPv6-клиент и DHCPv6-сервер находятся не в одной сети и не имеют прямой L2-связности, проверьте, настроена ли на коммутаторе, отвечающем за пересылку пакетов, функция DHCPv6-relay;

Проверьте, имеет ли DHCP-сервер адресный пул в том же сегменте, что и адрес interface vlan коммутатора, перенаправляющего DHCP-пакеты;

Источник

dhcpcd (Русский)

dhcpcd — DHCP- и DHCPv6-клиент. В настоящий момент является наиболее полнофункциональным DHCP-клиентом с открытым исходным кодом. Подробнее о возможностях см. домашнюю страницу проекта.

Contents

Установка

dhcpcd-ui AUR — GTK-интерфейс для dhcpcd; в качестве альтернативы можно использовать wpa_supplicant. Среди возможностей — диалог настройки и выбор кодовой фразы для беспроводной сети.

Запуск

Рекомендуется использовать юниты-шаблоны; подробнее см. #dhcpcd и сетевые интерфейсы systemd. В результате запуска любой из служб интерфейсу присваивается динамический IP-адрес. Привязка статического адреса рассмотрена в разделе #Статический профиль.

Настройка

Статические маршруты

В этом файле можно указать несколько машрутов одновременно.

Идентификатор DHCP-клиента

Сервер опознаёт DHCP-клиент по одному из следующих идентификаторов:

Более подробное описание можно найти в RFC 3315.

В зависимости от настроек DHCP-сервера те или иные параметры являются (не)обязательными в запросе на аренду адреса.

Если dhcpcd с настройками по умолчанию не получает IP-адрес, то можно использовать следующие опции в файле dhcpcd.conf :

Отдельно необходимо упомянуть о сетях с динамическим DNS — убедитесь, что все три идентификатора являются уникальными. Если DNS-сервер получит два одинаковых DUID (например, в виртуальной машине уникальны имя хоста и MAC, но DUID такой же, как и у основной системы), то второй запрос удалит предыдущий из соответствующей DNS-записи.

Статический профиль

Смысл параметров объясняется в статье Настройка сети. Чаще всего используются: название сетевого интерфейса, IP-адрес хоста, а также адреса сервера имён и маршрутизатора/шлюза.

Настройки статического профиля хранятся в файле /etc/dhcpcd.conf :

Резервный профиль

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

10-wpa_supplicant

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

Хук 10-wpa_supplicant автоматически запускает wpa_supplicant для беспроводного интерфейса, если:

Советы и рекомендации

Отключение ARP-зондирования для ускорения DHCP

В dhcpcd реализованы рекомендации из стандарта DHCP (RFC 2131) о проверке факта выдачи IP-адреса посредством ARP. В домашних сетях эта возможность по сути бесполезна, поэтому можно сэкономить 5 секунд для каждого соединения, добавив следующую строку в /etc/dhcpcd.conf :

Удаление DHCP-аренды

Разные IP-адреса на машине с несколькими ОС

Если на вашей машине помимо Arch установлена OS X или Windows и вы хотите, чтобы IP-адреса в этих операционных системах были разные, то необходимо в каждой ОС задать отдельный DUID.

В Windows (после XP) DUID хранится в ключе реестра

Если вы используете DHCP-сервер dnsmasq, разные DUID можно настроить правилами dhcp-host= в настройках.

/etc/resolv.conf

Например, DNS-сервера Google:

Решение проблем

Client ID

Если вы работаете в DHCPv4-сети с фильтрацией Client ID по MAC-адресам, возможно, придётся изменить строку

В противном случае вы не получите аренду, поскольку сервер не распознает DHCPv6-идентификатор. Подробнее см. RFC 4361.

Отказ от IP-адреса

В некоторых ситуациях, например, когда два маршрутизатора соединены через VPN, могут возникнуть проблемы при неправильном присвоении IP-адреса. В этом случае необходимо сначала отказаться от IP-адреса

после чего запросить новый:

Возможно, эти две команды придётся повторить несколько раз.

Проблемы с нестандартными маршрутизаторами

Некоторые (нестандартные) маршрутизаторы не смогут устанавливать соединения, если не закомментирована строка

dhcpcd и сетевые интерфейсы systemd

Удобство службы dhcpcd.service заключается в том, что она включается не для конкретного указанного интерфейса, а для всех интерфейсов сразу. С другой стороны, это может создать ситуацию гонок при загрузке, если systemd-udevd попытается присвоить предсказуемые имена интерфейсам:

Чтобы этого избежать, следует запускать dhcpcd для отдельных интерфейсов как описано в разделе #Запуск. Следует помнить, однако, что юнит-шаблон не поддерживает «горячее подключение» проводных соединений и завершится неудачно, если сетевой кабель не воткнут. Обходное решение описано в разделе #Отмена тайм-аута.

Отмена тайм-аута

Если dhcpcd был запущен для отдельного интерфейса и не получил аренду в течение 30 секунд после запуска (например, сервер не работает или кабель не воткнут), он завершится с ошибкой.

Чтобы dhcpcd ожидал бесконечно при каждом запуске, отредактируйте юнит, установив параметр timeout в значение 0 :

Чтобы dhcpcd ожидал аренду вообще всегда, настройте перезапуск юнита после завершения работы:

Известные проблемы

Медленная загрузка из-за dhcpcd@.service

Источник

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *