Компьютерные сети
IPv6: будущее уже здесь
В 2011 году закончились IPv4-адреса. Сегодня их покупают на вторичном рынке по 50+ за штуку. Между тем, каждому смартфону можно выдать столько IPv6-адресов, сколько атомов во Вселенной - и останется ещё.
- **Мобильные сети:** LTE/5G операторы массово переходят на IPv6-only с NAT64. iPhone и Android давно поддерживают
- **Cloud-провайдеры:** AWS, GCP выдают IPv6 бесплатно, за IPv4 начинают брать деньги (~4/месяц за адрес)
- **Home IoT:** Умные устройства получают глобальные адреса - можно подключаться напрямую без сложных настроек NAT
Предварительные знания
Формат адреса IPv6
**IPv6** решает главную проблему IPv4 - исчерпание адресов. 32 бита IPv4 дают 4.3 млрд адресов. 128 бит IPv6 дают **340 ундециллионов** (3.4×10³⁸) - это больше, чем атомов в теле человека.
**Масштаб:** Если раздавать IPv6-адреса со скоростью 1 млрд в секунду, запас кончится через 10⁷ ТРИЛЛИОНОВ лет. Вселенной ~14 млрд лет.
IPv6-адрес можно **сокращать** по двум правилам:
Какое сокращение адреса 2001:0db8:0000:0000:0001:0000:0000:0001 корректно?
Типы адресов IPv6
В IPv6 три типа адресов: **Unicast** (один получатель), **Multicast** (группа получателей), **Anycast** (ближайший из группы). **Broadcast отсутствует** - заменён на multicast.
**Интересный факт:** В IPv6 каждый интерфейс имеет **несколько адресов** одновременно: link-local (обязательно), global (обычно), temporary (для приватности).
Ключевые диапазоны IPv6:
Компании выдали /48 от провайдера. Сколько подсетей /64 она может создать?
Link-Local адреса
**Link-Local** (fe80::/10) - адреса, работающие только в пределах одного сегмента сети. Они **автоматически** создаются на каждом IPv6-интерфейсе без какой-либо настройки.
**Приватность:** EUI-64 позволяет отслеживать устройство по MAC. Современные ОС используют **Privacy Extensions** - случайный Interface ID, меняющийся периодически.
Link-Local используется для служебных протоколов:
При указании link-local в командах нужен **zone ID** (индекс интерфейса), потому что один и тот же адрес может быть на разных интерфейсах:
Почему при пинге link-local адреса нужно указывать интерфейс (zone ID)?
Global Unicast и получение адреса
**Global Unicast Address (GUA)** - маршрутизируемые адреса интернета (2000::/3). В IPv6 есть три способа получить GUA: **SLAAC**, **DHCPv6**, и **ручная настройка**.
**SLAAC vs DHCP:** SLAAC не даёт DNS и другие опции. Флаг O (Other) в RA указывает использовать DHCPv6 для DNS. Флаг M (Managed) - получить адрес через DHCPv6.
Перед использованием адреса хост проверяет его уникальность:
Adoption IPv6: Google видит ~45% трафика через IPv6, в некоторых странах (Индия, Германия) - более 60%. Мобильные сети (LTE/5G) часто IPv6-only с NAT64.
IPv6 слишком сложный, проще остаться на IPv4 с NAT
IPv6 убирает сложности NAT: сквозная связность, нет проблем с VoIP/WebRTC/P2P
NAT - костыль из-за нехватки адресов. С IPv6 каждое устройство имеет публичный адрес. Нет проблем с проброской портов, STUN/TURN для WebRTC, сложных ALG для SIP. Firewall на хосте решает вопросы безопасности лучше, чем 'скрытие за NAT'.
В SLAAC хост получает от роутера:
Итоги
- **128 бит** против 32 бит IPv4. Адрес записывается в hex, 8 групп по 4 символа. Сокращается через :: и опускание ведущих нулей
- **Link-local (fe80::/10)** создаётся автоматически на каждом интерфейсе. Используется для NDP, Router Discovery, как default gateway
- **SLAAC** - получение адреса без DHCP-сервера. Роутер анонсирует префикс, хост генерирует Interface ID сам
- **Dual-stack** и **Happy Eyeballs** обеспечивают плавный переход. IPv6 предпочитается, IPv4 как fallback
Связанные темы
IPv6 меняет привычные концепции:
- IP-адресация — IPv6 расширяет концепции IPv4: больше адресов, но те же принципы подсетей
- NAT — IPv6 делает NAT ненужным - каждое устройство получает глобальный адрес
Вопросы для размышления
- Почему переход на IPv6 занимает десятилетия, хотя протокол существует с 1998 года?
- Как изменится архитектура приложений, когда NAT уйдёт в прошлое?
- Почему некоторые считают EUI-64 угрозой приватности?