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
Изображение: 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 несколькими способами:
-
Постоянные адреса конфиденциальности (по умолчанию в современных дистрибутивах)
Это псевдослучайное 64-х битное число на основе сетевого префикса, имени интерфейса, секретного ключа (хранящегося в ядре), счётчика для каждого интерфейса RFC 7217
- Временные адреса конфиденциальности для исходящих соединений
- Адреса EUI-64 (более старый метод с использованием MAC-адреса)
4. Linux выполняет обнаружение дубликатов адресов (DAD)
Перед использованием нового глобального IPv6-адреса Linux отправляет запрос соседа (Neighbor Solicitation), чтобы убедиться, что ни одно другое устройство его не использует.
Если конфликта не обнаружено, адрес становится предпочтительным и готовым к использованию.
5. Linux настраивает маршруты по умолчанию и DNS
Если данные, полученные от роутера (RA), включают в себя
- Срок службы маршрутизатора → Тогда Linux устанавливает маршрут IPv6 по умолчанию.
- Параметры RDNSS → Тогда Linux настраивает DNS-серверы без DHCPv6.
Это завершает 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
В особых случаев используются и другие длины префиксов:
| /48, /56, /60 | делегируются клиентам интернет-провайдерами (для дальнейшего разделения на подсети). |
| /127 | каналы связи точка-точка между маршрутизаторами (предотвращает атаки исчерпания ND). |
| /128 | один адрес хоста (петля обратной связи, идентификатор маршрутизатора). |
| /96 | IPv4-отображенные IPv6-адреса. |
| /112 | иногда используется для подсетей с высокой плотностью устройств (например, IoT), хотя не рекомендуется для обычных локальных сетей. |
Адреса вида
2001:DB8::/32
Используются для документации и в лабораториях
Автор статьи: Андрей Олегович
| Сети | |
| Примеры масок | |
| Пример протокола | |
| Порты | |
| SSH | |
| DNS | |
| PuTTY | |
| Telnet | |
| PSTools | |
| Firefox | |
| FreeSSHD | |
| IPv4 | |
| IPv4 практика | |
| Как создать туннель | |
| Как сделать проброс портов |
РЕКЛАМА от Яндекса. Может быть недоступна в вашем регионе
Конец рекламы. Если там пусто считайте это рекламой моей телеги