IPv6
| Полное название | Internet Protocol version 6 |
|---|---|
| Уровень OSI | сетевой (3) |
| Стандарт | RFC 8200 (2017), первоначально RFC 1883 (1995) |
| Длина адреса | 128 бит |
| Запись | восемь групп по 4 шестнадцатеричные цифры |
| Предшественник | IPv4 (32 бита) |
| Автонастройка | SLAAC, DHCPv6 |
| DNS-запись | AAAA |
IPv6 (Internet Protocol version 6) — версия сетевого протокола интернета, пришедшая на смену IPv4. Главное отличие — длина адреса: 128 бит вместо 32, то есть около 3,4×10³⁸ адресов против 4,3 миллиарда. Этого хватает, чтобы выдать каждому устройству глобально уникальный адрес и обходиться без NAT. Протокол также упрощает заголовок пакета, встраивает автонастройку адресов и заменяет широковещательные рассылки на групповые (multicast). Основы адресации и подсетей описаны в статье IP-адрес и подсети (CIDR).
История
Исчерпание адресов IPv4 предсказывали ещё в начале 1990-х. IETF выбрала проект нового протокола (рабочее название IPng) и в 1995 году опубликовала первую спецификацию IPv6 — RFC 1883; актуальная версия — RFC 8200 (2017).[1] Номер 5 был занят экспериментальным протоколом потоковой передачи ST. Внедрение шло медленно: NAT и CIDR продлили жизнь IPv4. Региональные регистраторы раздали последние свободные блоки IPv4 в 2011–2019 годах. По статистике Google, к середине 2020-х около 45–50% пользователей обращаются к его сервисам по IPv6; доля сильно различается по странам.[5]
Запись адресов
Адрес записывается восемью группами по 16 бит в шестнадцатеричном виде:
2001:0db8:0000:0000:0000:ff00:0042:8329
Правила сокращения (RFC 5952):[3] ведущие нули в группе опускаются, а одна самая длинная последовательность нулевых групп заменяется на ::. Получается 2001:db8::ff00:42:8329. Буквы пишутся строчными. В URL адрес заключают в квадратные скобки: http://[2001:db8::1]:8080/.
Префикс сети обозначается так же, как в IPv4: /64. Типичная схема — провайдер выдаёт клиенту /48 или /56, а каждая локальная сеть получает /64, где младшие 64 бита — идентификатор интерфейса.
Типы адресов
| Префикс | Тип | Назначение |
|---|---|---|
::1/128 |
loopback | аналог 127.0.0.1 |
::/128 |
неопределённый | «ещё нет адреса» |
fe80::/10 |
link-local | есть на каждом интерфейсе, не маршрутизируется |
fc00::/7 (на практике fd00::/8) |
ULA | частные адреса, аналог 10.0.0.0/8 |
2000::/3 |
global unicast | публичные адреса |
ff00::/8 |
multicast | групповая рассылка |
2001:db8::/32 |
документация | для примеров |
::ffff:0:0/96 |
IPv4-mapped | IPv4-адрес внутри IPv6-сокета |
В IPv6 нет широковещательных адресов: их роль выполняют multicast-группы, например ff02::1 — все узлы сегмента.[2]
Отличия от IPv4
- Заголовок фиксированной длины 40 байт; необязательные поля вынесены в цепочку дополнительных заголовков (extension headers). Нет контрольной суммы заголовка — её проверяют канальный и транспортный уровни.
- Фрагментацию выполняет только отправитель; маршрутизаторы не дробят пакеты, а сообщают ICMPv6 «Packet Too Big». Поэтому блокировать ICMPv6 на файрволе нельзя — сломается определение MTU.
- ARP заменён протоколом Neighbor Discovery (NDP) поверх ICMPv6: он же находит маршрутизаторы и обнаруживает конфликты адресов.
- Автонастройка SLAAC: узел получает от маршрутизатора объявление с префиксом (Router Advertisement) и сам формирует адрес.[4] Для приватности используются временные случайные адреса (RFC 8981), а не MAC-адрес. DHCPv6 применяется, когда нужен централизованный контроль.
Переход и сосуществование
Интернет ещё долго будет двухпротокольным. Основные механизмы:
- Dual stack — узел имеет и IPv4, и IPv6. Клиенты выбирают протокол по алгоритму Happy Eyeballs: пробуют IPv6 и через небольшую задержку IPv4, используя то соединение, что установилось первым.[6]
- NAT64/DNS64 — сеть только на IPv6 обращается к IPv4-ресурсам через транслятор; распространено в мобильных сетях.
- Туннели (6in4, 6rd, исторические Teredo и 6to4) передают IPv6 поверх IPv4.
В DNS адресу IPv6 соответствует запись AAAA (см. DNS-записи (A, AAAA, CNAME, MX, TXT)).
Практика
ip -6 addr show # адреса IPv6 на интерфейсах
ip -6 route # маршруты
ping -6 google.com # проверка связности
curl -6 https://ifconfig.co # свой публичный IPv6
dig AAAA example.com +short # AAAA-запись
Отсутствие NAT не означает отсутствия защиты: каждый узел доступен из интернета по глобальному адресу, поэтому входящий трафик фильтрует файрвол (stateful firewall на маршрутизаторе). Частая ошибка — настроить правила только для IPv4 и оставить сервис открытым по IPv6.