Берем RFC2462, 25 страниц, датированы декабрем 1998г. — и читаем про IPv6 Stateless Address Autoconfiguration.
Много интересного: все начинается с генерации link-local адреса для интерфейса по простому правилу:
Link-local address := fe80::/64 плюс EUI-64.
Далее — он проверяется на уникальность. Если (что маловероятно) такой адрес уже есть — то автоконфигурирование заканчивается, нужно садиться за консоль.
Затем хост определяет, что ему нужно автоконфигурировать: адрес и дополнительные параметры, или только дополнительные параметры (DNS и прочее), и нужен ли вообще DHCP-сервер. Для этого используются RA (router advertisments). Разумеется, это верно только в случае, если хоть один роутер передает их в данный сетевой сегмент. В противном случае (при отсутствии сообщений от роутеров) потребуется stateful autoconfiguration, то есть использование DHCP-сервера (или статические настройки при его отсутствии). Это относится только к хостам, автоконфигурация роутеров не предусмотрена.
Небольшой эксперимент: берем компьютер под Windows7 (или 8, или 10), подключаем в сетевой сегмент, где нет DHCP-серверов, но есть роутер, настраиваем на автоматическое получение параметров и смотрим, что получится: (примечание: DNS-серверы прописаны вручную) На роутере сконфигурирован адрес из подсети 2xxx:yyyy:0:a::/64
Microsoft Windows [Version 6.1.7600]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.
C:\Users\thech>ipconfig /all
Настройка протокола IP для Windows (...)
Ethernet adapter LAN:
DNS-суффикс подключения . . . . . :
Описание. . . . . . . . . . . . . :
Realtek PCIe FE Family Controller
Физический адрес. . . . . . . . . : 60-EB-69-62-D5-94
DHCP включен. . . . . . . . . . . : Нет
Автонастройка включена. . . . . . : Да
IPv6-адрес. . . . . . . . . . . . : 2xxx:yyyy:0:a:74c5:96cb:ac0c:c065(Основной)
Временный IPv6-адрес. . . . . . . : 2xxx:yyyy:0:a:8946:c389:b40e:fbef(Основной)
Локальный IPv6-адрес канала . . . : fe80::74c5:96cb:ac0c:c065%11(Основной)
Основной шлюз. . . . . . . . . : fe80::222:91ff:fe99:54%11
DNS-серверы. . . . . . . . . . . : 2xxx:yyyy:0:a::144:1 (...)
C:\Users\tech>
то есть адрес сгенерирован, Link-local адрес шлюза получен Смотрим таблицу роутинга:
C:\Users\thech>route print
(...)
IPv6 таблица маршрута
Активные маршруты:
Метрика Сетевой адрес Шлюз
11 276 ::/0 fe80::222:91ff:fe99:54 1 306 ::1/128 On-link 11 28 2xxx:yyyy:0:a::/64 On-link
11 276 2xxx:yyyy:0:a:74c5:96cb:ac0c:c065/128 On-link
11 276 2xxx:yyyy:0:a:8946:c389:b40e:fbef/128 On-link
11 276 fe80::/64 On-link
11 276 fe80::74c5:96cb:ac0c:c065/128 On-link 1 306 ff00::/8 On-link
11 276 ff00::/8 On-link C:\Users\tech>
и здесь все в порядке, вот только метрика немного удивляет.
(Аналогичный эксперимент с автоматическим назначением адреса для OpenBSD описан в разделе «Интерфейсы»).