Открыть сервис

SLAAC

SLAAC (аббревиатура от англ. Stateless Address Autoconfiguration — «безсостоятельная автоматическая конфигурация адресов») — это механизм автоматического получения узлом (клиентом) глобального IPv6-адреса, не требующий постоянного сервера для хранения информации о назначенных адресах (состояния). SLAAC является одним из двух основных методов автоматической настройки адресов в протоколе IPv6, наряду с DHCPv6. Он позволяет устройству самостоятельно сгенерировать свой IP-адрес на основе префикса сети, объявленного маршрутизатором, и собственного идентификатора интерфейса (обычно на основе MAC-адреса или случайного числа).

История и предпосылки появления

SLAAC был разработан как часть спецификации для нового поколения протокола IP — IPv6. Одной из главных задач при проектировании IPv6 было упрощение и автоматизация процесса настройки сети, чтобы исключить необходимость ручного ввода адресов для каждого нового устройства. Оригинальное описание механизма содержится в документах RFC 2462 (1998 год), который позже был заменён и дополнен RFC 4862 (2007 год) и RFC 7217 (2014 год). В отличие от «состоятельного» (stateful) подхода, используемого в DHCPv6, SLAAC является «безсостоятельным» (stateless), то есть маршрутизаторам не нужно запоминать, какой адрес был выдан каждому устройству — вся ответственность за уникальность адреса лежит на клиенте.

Принцип работы

SLAAC основан на протоколе Neighbor Discovery Protocol (NDP), который является частью стека протоколов IPv6. Процесс автоматической настройки можно разбить на несколько этапов.

1. Запрос информации от маршрутизатора

Когда устройство подключается к сети (например, включается или меняет точку доступа), оно отправляет многоадресный запрос Router Solicitation (RS). Этот запрос адресован всем маршрутизаторам в данной широковещательной области (обычно по адресу ff02::2). Маршрутизаторы, получив RS, отвечают многоадресным объявлением Router Advertisement (RA).

2. Получение и анализ Router Advertisement

Маршрутизатор периодически (по умолчанию каждые несколько секунд) отправляет пакеты RA на адрес ff02::1 (все узлы локальной сети). Кроме того, он отправляет RA в ответ на RS. Пакет RA содержит важнейшую информацию для автоконфигурации:

3. Формирование собственного адреса

Если в RA флаг M=0 (не использовать DHCPv6 для адреса), устройство приступает к генерации адреса. Оно берёт префикс из объявления (обычно длиной 64 бита) и комбинирует его с идентификатором интерфейса (Interface ID), который также имеет длину 64 бита. Идентификатор может быть сформирован одним из двух способов:

Таким образом формируется полный IPv6-адрес (например, 2001:db8::ab11:cd22:ef33:4455).

4. Проверка уникальности (DAD)

Перед использованием сгенерированного адреса устройство обязано проверить, что он не конфликтует с адресами других устройств в той же подсети. Это делается с помощью механизма Duplicate Address Detection (DAD). Устройство отправляет многоадресный Neighbor Solicitation (NS) с предполагаемым адресом в качестве цели. Если от другого узла приходит ответ (Neighbor Advertisement, NA), это означает, что адрес занят, и устройство должно сгенерировать новый. DAD выполняется на локальном адресе (link-local) в первую очередь, а затем на глобальном.

Виды и сценарии автоконфигурации

SLAAC является лишь частью более общей картины. В реальных сетях IPv6 возможны несколько моделей настройки, которые определяются комбинацией флагов M и O в Router Advertisement.

Таблица режимов конфигурации IPv6

M-флагO-флагРежим настройкиОписание
00Stateless (SLAAC)Устройство получает адрес только через SLAAC. Другие параметры (DNS) берутся из RA (если они там есть) или не настраиваются. Самый простой и распространённый сценарий.
01Stateless DHCPv6Адрес получается через SLAAC, а дополнительные параметры (DNS-сервер, домен поиска) — через DHCPv6-сервер. DHCPv6 используется в безсостоятельном режиме (без отслеживания выданных адресов).
10 или 1Stateful DHCPv6Адрес и все параметры получаются от DHCPv6-сервера, который ведёт учёт выданных адресов. SLAAC при этом не используется для глобального адреса.

На практике в интернет-провайдерах и домашних сетях чаще всего встречается режим SLAAC (M=0, O=0) или Stateless DHCPv6 (M=0, O=1) — второй даёт возможность передать клиенту адреса DNS-серверов.

Преимущества и недостатки SLAAC

Преимущества

Недостатки

Связь с другими протоколами

SLAAC тесно связан с протоколом ICMPv6, на котором базируется NDP. NDP также отвечает за обнаружение соседей, разрешение адресов (аналог ARP для IPv4), отслеживание недоступности маршрутизаторов и редирект пакетов. В отличие от IPv4, где ARP используется для определения MAC-адреса по IP, в IPv6 эту функцию выполняет Neighbor Discovery.

Также SLAAC может использоваться совместно с DHCPv6. В режиме Stateless DHCPv6 адрес берётся из SLAAC, а DNS и другие опции — из DHCPv6. Это даёт преимущества обоих методов.

Безопасность

При использовании SLAAC без каких-либо дополнений есть уязвимость: злоумышленник, подключённый к той же сети, может отправлять ложные RA-пакеты, навязывая устройствам свой префикс или вынуждая их использовать его в качестве шлюза. Для защиты используются:

Интересные факты

Источники

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →