V6NET.RU

+ НАЧАЛО - НАЧАЛО

+ РАЗДАЧА АДРЕСОВ - РАЗДАЧА АДРЕСОВ

+ СБОР СТАТИСТИКИ - СБОР СТАТИСТИКИ

+ ДЕТАЛИ - ДЕТАЛИ

+ СПРАВОЧНАЯ - СПРАВОЧНАЯ

Конфигурируем DHCP сервер

SLAAC: немного теории: берем и читаем RFC2462, 25 страниц, датированы декабрем 1998г. — и читаем про IPv6 Stateless Address Autoconfiguration.

Много интересного: все начинается с генерации link-local адреса для интерфейса по простому правилу:

Link-local address := fe80::/64 плюс EUI-64.

Далее — он проверяется на уникальность. Если (что маловероятно) такой адрес уже есть — то автоконфигурирование заканчивается, нужно садиться за консоль.

Затем хост определяет, что ему нужно автоконфигурировать: адрес и дополнительные параметры, или только дополнительные параметры (DNS и прочее), и нужен ли вообще DHCP-сервер. Для этого используются RA (router advertisments). Разумеется, это верно только в случае, если хоть один роутер передает их в данный сетевой сегмент. В противном случае (при отсутствии сообщений от роутеров) потребуется stateful autoconfiguration. Это относится только к хостам, автоконфигурация роутеров не предусмотрена.

Кратко: получение IPv6-адреса возможно несколькими путями:

Вручную

  1. Тут все понятно. Нужно прописать адрес и маску (длину префикса), а также шлюз по умолчанию. Если в подсети имеются роутер, то возможно не придется конфигурировать шлюз, так как машина может получить его link-local адрес из RA. Адрес DNS-сервера придется сконфигурировать вручную.
  2. Если в подсети есть роутер (роутеры), которые анонсят префиксы /64 в эту подсеть, то машина может самостоятельно сформировать свой IPv6-адрес из 64-битного префикса из анонсов и мас-адреса, в соответствии с алгоритмом EUI-64. Адрес шлюза также может быть взят из аноносов от роутеров (RA). Увы, но адрес DNS-сервера придется сконфигурировать вручную.
  3. Адрес может быть назначен вручную или сформирован в соответствии с пунктом 2, а дополнительные параметры, такие как адрес DNS-сервера, можно запросить у DHCP-сервера. Такой вариант, судя по публикациям, существует пока только на бумаге. И — так же, как и в пункте 2, роутер должен анонсить префикс длиной 64 бит.
  4. Тут тоже понятно, все параметры назначаются автоматически. Но! Нужно, чтобы DHCP-сервер «понимал» IPv6. Достоверно известно, что ISC DHCP, который используется практически во всех *NIX/NUX ОС, пригоден для данной задачи. Также есть много публикаций о том, что Windows DHCP server самых последних модификций не совсем корректно работает с IPv6.

Остается как-то автоматизировать получение IPv6-адреса DNS-сервера. Впервые это было описано в RFC-5006 — «IPv6 Router Advertisement Option for DNS Configuration» (сентябрь 2007г). Технология несложная: одна из опций в ND, а именно опция 25 выбрана для хранения информации о рекурсивном DNS-сервере. Также в этом TLV-наборе передается и время действия информации о данном DNS-сервере. В одном сообщении может содержаться несколько 128-битных IPv6-адресов DNS-серверов, их число определяется по полю length, которое содержит число байтов, с учетом того, что 32 бита (то есть 4 байта) отведено под «время жизни». Для продления-обновления информации о DNS-серверах хосты могут использовать RS-запросы. В документе также приведены некоторые меры безопасности: хост должен контролировать поле «длина», и если оно меньше 3, то опция и данные в ней — игнорируются. Далее: время жизни этой записи не должно превышать время жизни RA, так как при истечении второго, вся информация из RA считается (логично) недействительной.

DHCPv6. (RFC 3315, июль 2003) Сетевые основы:

DHCPv6 использует мультикаст-адреса:

Серверы и релеи слушают запросы на UDP:547

Клиент слуашет ответы на UDP:546

Клиент всегда отправляет DHCP-запросы на адрес All_DHCP_Relay_Agents_and_Servers.

Обмен выглядит так:

Основные типы сообщений (в скобках указан код):

DHCP Unique Identifier (DUID)

У каждого сервера и клиента есть уникальный идентификатор, для того чтобы различать других клиентов и (или) серверы.

DHCP Relay, дополнительная информация из RFC 4649 — август 2006.

ИМХО самое интересное — это то, что relay может вставлять дополнительную информацию в запрос — Relay Agent Option ID

Структура простая:

2 байта: код опции = 31; 2 байта: длина опции Remote-ID плюс 4

4 байта: код производителя оборудования (зарегистрированный в IANA)

— и далее следует Remote-ID указанной длины, где может содержаться информация о интерфейсе (или номер порта).

То есть получается аналог Option-82 из IPv4 DHCP.

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