IPv6

Материал из llmdocs — справочник разработчика
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.

См. также

Источники

  1. RFC 8200 — Internet Protocol, Version 6 (IPv6) Specification
  2. RFC 4291 — IP Version 6 Addressing Architecture
  3. RFC 5952 — A Recommendation for IPv6 Address Text Representation
  4. RFC 4862 — IPv6 Stateless Address Autoconfiguration
  5. Google — IPv6 Statistics
  6. RFC 8305 — Happy Eyeballs Version 2