SLAAC в IPv6
Немного теории:
Берем RFC2462, 25 страниц, датированы декабрем 1998г. — и читаем про IPv6 Stateless Address Autoconfiguration.
Много интересного: все начинается с генерации link-local адреса для интерфейса по простому правилу:
Link-local address := fe80::/64 плюс EUI-64.
Далее — он проверяется на уникальность. Если (что маловероятно) такой адрес уже есть — то автоконфигурирование заканчивается, нужно садиться за консоль.
Затем хост определяет, что ему нужно автоконфигурировать: адрес и дополнительные
параметры, или только дополнительные параметры (DNS и прочее), и нужен ли вообще DHCP-сервер. Для этого используются RA (router advertisments). Разумеется, это верно только в случае, если хоть один
роутер передает их в данный сетевой сегмент. В противном случае (при отсутствии сообщений от
роутеров) потребуется stateful autoconfiguration
. Это относится только к хостам, автоконфигурация роутеров не предусмотрена.
Небольшой эксперимент: берем компьютер под Windows7 (или 8, или 10), подключаем в сетевой сегмент, где нет DHCP-серверов, но есть роутер, настраиваем на автоматическое получение параметров и смотрим, что получится: (примечание: DNS-серверы прописаны вручную) На роутере сконфигурирован адрес из посети 2xxx:yyyy:0:a::/64
то есть адрес сгенерирован, Link-local адрес шлюза получен Смотрим таблицу роутинга:
и здесь все в порядке, вот только метрика немного удивляет.
(Аналогичный эксперимент с автоматическим назначением адреса для OpenBSD описан в разделе «Интерфейсы»).