IPv6

Содержание
Введение
Структура
Unicast Address
Multicast Address
Anycast Address
SLAAC
Похожие статьи

Введение

Эта страница про IPv6. Про IPv4 читайте здесь

Термин Перевод Кол-во бит Кол-во байт Пример (0b) Пример (0x)
Bit Бит 1 - 0 или 1 -
Nibble Ниббл 4 - 1010 0xA
Byte Байт 8 1 11001001 0xС9
Hextet Хекстет 16 2 10101010 01010101 0xAF09

IPv4 Адрес имеет длину 32 бита = 4 байта.

192.168.10.10

11000000 10101000 00001010 00001010

IPv6 Адрес в четыре раза больше 128 бит = 32 ниббла = 16 байт = 8 хекстетов

2001:0DB8:0002:0002:008D:0000:0000:00A5:52F5 0010000000000001:0000110110111000:0000000000000010:0000000000000010:0000000010001101:0000000000000000:0000000000000000:0000000010100101:0101001011110101

Так как половину адреса занимает сетевой адрес, можно сделать вывод, что в обычной сети может бы 2 ** 64 адресов, то есть 18446744073709551616

Компьютерная сеть изображение с сайта www.devhops.ru
Компьютерная сеть
Изображение: rudalle.ru

Структура

Сетевой адрес (Network Portion) имеет размер 64 бита

2001:0DB8:0002:008D

Адрес хоста (Host Portion или Interfacte Identifier) также имеет размер 64 бита

0000:0000:00A5:52F5

Полный адрес выглядит следующим образом

2001:0DB8:0002:008D:0000:0000:00A5:52F5

Удаление ведущих нулей

Если полный адрес выглядит слеюдущим образом

2001:0DB8:0002:008D:0000:0000:00A5:52F5

Его можно сократить удалив нули, которые не несут смысловую нагрузку

2001:DB8:2:8D:0:0:A5:52F5

Если в адресе хоста первые хекстеты это нули, их можно заменить на :

2001:DB8:2:8D::A5:52F5

:: разделят адрес на сетевую часть слева и адрес хоста справа.

В адресе может быть только одно ::

РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе

Конец рекламы. Если там пусто считайте это рекламой моей телеги

Unicast Address

Unicast адреса идентифицируют только один сетевой интерфейс. Протокол IPv6 доставляет пакеты, отправленные на такой адрес, на конкретный интерфейс.

Существуют следующие типы Unicast адресов:

Global Unicast

Публичный адрес который доступен через глобальный интернет

Link-Local

fe80::/10

Адрес только для локальных сетей. Не доступен через глобальный интернет.

Аналог APIPA адресов в IPv4

Разберем подробнее, что означает

fe80::/10

FE80 это

1111 1110 1000 0000

/10 означает, что первые 10 бит должны оставаться неизменными

Первые 10 бит это

1111 1110 10

Оставшиеся 118 бит это адрес интерфейса.

Первый IPv6 адрес типа Link-Local это

1111 1110 1000 0000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000

FE80::

Последний IPv6 адрес типа Link-Local это

1111 1110 1011 1111 1111111111111111 1111111111111111 1111111111111111 1111111111111111 1111111111111111 1111111111111111 1111111111111111

FEBF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF

Таким образом диапазон Link-Local адресов начинается с FE80:: и заканчивается на FEBF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF

Не все Link-Local адреса начинаются с FE80. Возможны варианты FE8*, FE9*, FEA*, FEB*. Где * это любой Hex от 0 до F

Unique Local Address (ULA)

Адрес только для локальных сетей. Не доступен через глобальный интернет.

Аналог частных адресов в IPv4 но не поддерживает NAT.

FC00::/7

FC00 это

1111 1100 0000 0000

/7 означает, что первые 7 бит должны оставаться неизменными

Первые 7 бит это

1111 110

Оставшиеся 121 бит это адрес интерфейса.

Первый IPv6 адрес типа ULA это

1111 1100 0000 0000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000 0000000000000000

FC00::

Последний IPv6 адрес типа ULA это

1111 1101 1111 1111 1111111111111111 1111111111111111 1111111111111111 1111111111111111 1111111111111111 1111111111111111 1111111111111111

FDFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF

Loopback

Адрес для трафик на самого себя. Не доступен через глобальный интернет.

Аналог looback адреса 127.0.0.1 в IPv4

::1/128

Multicast Address

Многоадресный адрес идентифицирует группу интерфейсов.

Пакеты, отправленные на многоадресный адрес, доставляются всем членам группы.

Anycast Address

Anycast-адрес назначается нескольким интерфейсам, обычно на разных устройствах.

Трафик, отправленный на Anycast-адрес, доставляется на ближайший интерфейс (с точки зрения маршрутизации).

SLAAC

Stateless Address Auto-configuration.

При запуске системы узел автоматически создает локальный адрес на каждом интерфейсе с поддержкой IPv6, даже если глобально маршрутизируемые адреса настроены вручную или получены с помощью протоколов конфигурации.

Он делает это независимо и без какой-либо предварительной конфигурации с помощью автоконфигурации адресов без сохранения состояния (SLAAC), используя компонент протокола обнаружения соседей. Этот адрес выбирается с префиксом fe80::/64.

В IPv4 типичными протоколами конфигурации являются DHCP или PPP. Хотя существует DHCPv6, хосты IPv6 обычно используют протокол обнаружения соседей для создания глобально маршрутизируемого одноадресного адреса: хост отправляет запросы на запрос маршрутизатора, а маршрутизатор IPv6 отвечает назначением префикса.

В Windows Interface Identifier создается как случайное 64-х битное число

В Linux и Unix Interface Identifier ранее создавался на основе MAC адреса

SLAAC в Linux

SLAAC в Linux работает путем прослушивания объявлений маршрутизатора IPv6 (RA), изучения префикса /64 сети и автоматической генерации собственного IPv6-адреса — обычно с использованием случайного идентификатора интерфейса (randomized interface identifier).

Linux использует для этого протокол обнаружения соседей IPv6 (NDP - Neighbor Discovery Protocol), и эта функция включена по умолчанию во всех современных дистрибутивах.

Как работает SLAAC в Linux - пошаговый разбор

1. Linux активирует интерфейс

Когда сетевой интерфейс становится активным, ядро автоматически включает автоконфигурацию IPv6, если она не специально не была отключена.

Типичные названия сетевых интерфесов в Linux: eth0, eth1, enp0s3, enp0s8, wlan0

Инициализация интерфейса запускает создание локального адреса IPv6

FE80::/10

Обнаружение дубликатов адресов (DAD - Duplicate Address Detection) проверяет уникальность локального адреса.

2. Linux ожидает уведомлений маршрутизатора (RA)

RA - Router Advertisements

Маршрутизаторы периодически отправляют уведомления маршрутизатора ICMPv6, содержащие:

Префикс сети (обычно /64)

Флаги, указывающие на доступность SLAAC (флаг A)

Информация DNS (RDNSS), если предоставлена

Время жизни маршрутизатора и MTU

Linux также активно запрашивает эту информацию, отправляя запрос маршрутизатора (Router Solicitation), когда интерфейс становится активным.

3. Linux формирует свой IPv6-адрес

После получения уведомления маршрутизатора (RA) Linux генерирует идентификатор интерфейса (IID) и добавляет его к префиксу.

Linux может генерировать IID несколькими способами:

4. Linux выполняет обнаружение дубликатов адресов (DAD)

Перед использованием нового глобального IPv6-адреса Linux отправляет запрос соседа (Neighbor Solicitation), чтобы убедиться, что ни одно другое устройство его не использует.

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

5. Linux настраивает маршруты по умолчанию и DNS

Если данные, полученные от роутера (RA), включают в себя

Это завершает SLAAC.

EUI-64

Чтобы из MAC адреса вида

aa:bb:cc:dd:ee:ff

Создать новый IPv6 адрес хоста после 3-го байта добавляется ещё два байта FF:FE

aa:bb:cc:FF:FE:dd:ee:ff

В первом байте инвертируется 7-й бит

aa (1010 1010) превращается в

a8 (1010 1000)

a8:bb:cc:FF:FE:dd:ee:ff

Полезные команды Linux для SLAAC Назначение команды ip -6 addr Показать IPv6-адреса ip -6 route Показать маршруты IPv6 rdisc6 eth0 Просмотреть объявления маршрутизатора sysctl net.ipv6.conf.all.autoconf Проверить статус SLAAC journalctl -u NetworkManager Просмотреть сетевые журналы

Флаги конфигурации SLAAC в Linux net.ipv6.conf...autoconf* → Включает SLAAC net.ipv6.conf...accept_ra* → Принимать объявления маршрутизатора net.ipv6.conf...use_tempaddr* → Включить адреса конфиденциальности

DHCP

Подсети

В IPv4 мы могли выбирать CIDR маску разного размера. В IPv6 в LAN рекомендуется использовать только /64

В особых случаев используются и другие длины префиксов:

Случаи, отличные от /64
/48, /56, /60 делегируются клиентам интернет-провайдерами (для дальнейшего разделения на подсети).
/127 каналы связи точка-точка между маршрутизаторами (предотвращает атаки исчерпания ND).
/128 один адрес хоста (петля обратной связи, идентификатор маршрутизатора).
/96 IPv4-отображенные IPv6-адреса.
/112 иногда используется для подсетей с высокой плотностью устройств (например, IoT), хотя не рекомендуется для обычных локальных сетей.

Адреса вида

2001:DB8::/32

Используются для документации и в лабораториях

Автор статьи: Андрей Олегович

Похожие статьи
Сети
Примеры масок
Пример протокола
Порты
SSH
DNS
PuTTY
Telnet
PSTools
Firefox
FreeSSHD
IPv4
IPv4 практика
Как создать туннель
Как сделать проброс портов

РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе

Конец рекламы. Если там пусто считайте это рекламой моей телеги

Поиск по сайту

Подпишитесь на Telegram канал @aofeed чтобы следить за выходом новых статей и обновлением старых

Перейти на канал

@aofeed

Задать вопрос в Телеграм-группе

@aofeedchat

Контакты и сотрудничество:
Рекомендую наш хостинг beget.ru
Пишите на info@urn.su если Вы:
1. Хотите написать статью для нашего сайта или перевести статью на свой родной язык.
2. Хотите разместить на сайте рекламу, подходящую по тематике.
3. Реклама на моём сайте имеет максимальный уровень цензуры. Если Вы увидели рекламный блок недопустимый для просмотра детьми школьного возраста, вызывающий шок или вводящий в заблуждение - пожалуйста свяжитесь с нами по электронной почте
4. Нашли на сайте ошибку, неточности, баг и т.д. ... .......
5. Статьи можно расшарить в соцсетях, нажав на иконку сети: