IPv6

Предпосылки: IP и маршрутизация (IP-адрес, маска, маршрутизация), NAT (частные адреса, CGNAT, исчерпание IPv4), DHCP (автоматическая конфигурация).

NAT | UDP

NAT и CGNAT — костыли, позволяющие IPv4 работать при нехватке адресов. Но у них есть цена: если сервер в интернете хочет связаться с вашим телефоном напрямую, это уже не вопрос адресации, а вопрос обхода NAT. P2P-приложения, звонки и игры вынуждены использовать дополнительные механизмы согласования. IPv6 решает именно корневую проблему: адресов становится достаточно, чтобы NAT перестал быть обязательным способом экономить публичные адреса.

Адресное пространство

IPv4: 32 бита = ~4.3 млрд адресов. IPv6: 128 бит = ~3.4 × 10³⁸ адресов. Для сравнения: на каждый квадратный метр поверхности Земли приходится ~6.7 × 10²³ IPv6-адресов.

Формат IPv6-адреса: восемь групп по четыре шестнадцатеричных символа, разделённых двоеточиями:

2001:0db8:85a3:0000:0000:8a2e:0370:7334

Правила сокращения: ведущие нули в группе опускаются (0db8db8), одна последовательность нулевых групп заменяется на :: (однократно):

2001:db8:85a3::8a2e:370:7334

Типы адресов

Global unicast — аналог публичного IPv4-адреса. Уникальный, маршрутизируемый в интернете. Начинается с 2000::/3.

Link-local (fe80::/10) — автоматически назначается каждому интерфейсу, работает только в пределах одного сегмента сети (как MAC-адрес по области видимости). Используется для служебного обмена между соседними устройствами — NDP, автоконфигурация.

Loopback (::1) — аналог 127.0.0.1 в IPv4.

SLAAC: автоконфигурация без отдельного сервера

В IPv4 адрес часто выдаёт DHCP-сервер. В IPv6 есть встроенный механизм — SLAAC (Stateless Address Autoconfiguration):

  1. Интерфейс поднимает link-local адрес в диапазоне fe80::/10 и проверяет его уникальность через NDP (Neighbor Discovery Protocol).
  2. Узел отправляет Router Solicitation или просто ждёт Router Advertisement от роутера.
  3. Роутер сообщает префикс сети и флаги автоконфигурации, например 2001:db8:1::/64.
  4. Узел сам строит один или несколько адресов внутри этого префикса. Идентификатор интерфейса может быть стабильным или временным/случайным — это уже зависит от реализации и настроек приватности.

Результат: узел может получить рабочий IPv6-адрес вообще без отдельного сервера выдачи адресов. Но это не значит, что DHCPv6 “не нужен”. DHCPv6 используется там, где сеть хочет централизованно раздавать адреса, DNS-параметры или даже делегировать префиксы дальше.

Dual-stack: сосуществование с IPv4

Полный переход на IPv6 невозможен одномоментно — слишком много инфраструктуры работает на IPv4. Стратегия перехода — dual-stack: устройства и сети поддерживают оба протокола одновременно.

В dual-stack каждый интерфейс имеет и IPv4, и IPv6 адрес. DNS возвращает оба типа записей: A (IPv4-адрес) и AAAA (IPv6-адрес). Приложение выбирает протокол: современные реализации используют Happy Eyeballs — параллельно пробуют IPv6 и IPv4, выбирая тот, который отвечает быстрее.

Альтернативы dual-stack (туннелирование IPv6 через IPv4, трансляция 6to4) существуют, но dual-stack остаётся доминирующим подходом.

Текущее состояние перехода

Переход идёт неравномерно. По статистике Google, IPv6 уже занимает заметную долю пользовательского трафика, но картина сильно зависит от региона и типа сети. Мобильные сети и крупные провайдеры продвинулись дальше; корпоративные сети, часть дата-центров и старые устройства часто по-прежнему живут в IPv4-мире.

Практический вывод для разработчика: приложения должны нормально работать в dual-stack среде. Библиотеки и фреймворки часто скрывают разницу, но при работе с сокетами, DNS, правилами доступа и сетевой конфигурацией нужно помнить, что у хоста может быть несколько IPv4- и IPv6-адресов одновременно.

Sources


NAT | UDP