Механизм перехода на IPv6
Механизм перехода на IPv6 — это технология, предназначенная для обеспечения перехода Интернета от существующей с 1983 года инфраструктуры IPv4 к новой адресации и маршрутизации Интернет-протокол версии 6 (IPv6). Так как сети IPv4 и IPv6 напрямую не совместимы, механизмы перехода разрабатываются для организации взаимодействия между хостами обеих типов сетей.
Для соответствия техническим требованиям IPv6 должен предусматривать чёткий план поэтапного перехода от IPv4[1]. IETF создает рабочие группы и обсуждает спецификации механизмов перехода через проекты Интернет-драфтов и процесс RFC. Некоторые базовые механизмы описаны в RFC 4213.
Бестрансляционный IP/ICMP-транслятор (SIIT)
Бестрансляционный IP/ICMP-транслятор осуществляет преобразование форматов заголовков пакетов между IPv6 и IPv4. Метод SIIT определяет специальный класс IPv6-адресов, называемых IPv4-транслированные адреса. Они имеют префикс и могут быть записаны как , где — это адрес IPv4 для узла с поддержкой IPv6. Такой формат был выбран для обеспечения нулевого контрольного значения, чтобы избежать изменений в контрольной сумме транспортного протокола[2].
Алгоритм применяется для организации взаимодействия между IPv6-хостами, не имеющими постоянного IPv4-адреса, и узлами только в IPv4. Назначение адресов и маршрутизация не регламентируются спецификацией. SIIT представляет собой частный случай stateless NAT.
Стандартизирован рабочей группой NGTRANS IETF; первоначальная редакция документа опубликована Эриком Нордмарком из Sun Microsystems в феврале 2000 года, ревизии 2011 года и 2016 года.
Механизм туннельного брокера
Туннельный брокер обеспечивает подключение по IPv6 за счет инкапсуляции трафика IPv6 во внутри-сетевые IPv4-соединения, обычно используя 6in4. Это устанавливает IPv6-туннели внутри IPv4-сети интернет. Управление туннелями может осуществляться по протоколам TSP или AYIYA.
6rd
6rd был разработан Реми Деспре[3].[4] Это механизм, позволяющий быстро развернуть сервис IPv6 в инфраструктуре провайдера поверх существующей сетевой архитектуры IPv4. 6rd использует бестрансляционные сопоставления между адресами IPv4 и IPv6, а пересылка пакетов IPv6 через автоматические туннели повторяет оптимальные маршруты между абонентскими устройствами так же, как и пакеты IPv4[5].
Технология была использована для раннего масштабного внедрения IPv6-сервиса с использованием нативных адресов в 2007 году (RFC 5569[6]). Окончательная протокольная спецификация приведена в RFC 5969[7].
Транспортный ретранслятор (TRT)
Транспортный ретранслятор (англ. Transport Relay Translation, TRT) выступает в роли промежуточного устройства между двумя хостами, осуществляя преобразование адресов IPv6 в адреса IPv4 и обратно. Для этого используется сопоставление IP-адресов и формирование специальных адресов.
Адрес, к примеру, если пакеты передаются с IPv6-адреса () на IPv4-адрес (), будет записан как . Прямое взаимодействие осуществляется через стек IPv6/TCP от источника до TRT, затем с помощью стека IPv4/TCP до IPv4-хоста[8].
TRT устроен аналогично работе DNS ALG, осуществляющему преобразование между AAAA- и A-записями DNS.
NAT64
NAT64 — механизм, позволяющий хостам с IPv6 общаться с серверами только на IPv4. Сервер NAT64 представлен с одной стороны хотя бы одним IPv4-адресом, а с другой — сегментом IPv6 длиной 32 бита, например, . Клиент IPv6 внедряет нужный IPv4-адрес в соответствующие разряды и направляет пакеты на полученный адрес. Сервер NAT64 создает NAT-сопоставление между адресами IPv6 и IPv4, обеспечивая двустороннее взаимодействие.
DNS64
DNS64 — технология, в которой DNS-сервер при запросе AAAA-запись обнаруживает только A-запись и синтезирует AAAA-запись из A-записи. Первая часть сгенерированного адреса указывает на IPv6/IPv4-транслятор, а вторая — внедряет сам IPv4-адрес из A-записи. Обычно таким транслятором выступает сервер NAT64. Описание стандарта — RFC 6147[9].
Существуют две характерные проблемы с этим механизмом:
- Он работает только при разрешении имени через DNS; если используются IPv4-литералы, сервер DNS64 не участвует.
- Поскольку сервер DNS64 возвращает записи, не указанные самим держателем домена, попытка проверки DNSSEC по цепочке до корневого домена приводит к сбою валидации, если сервер, осуществляющий трансляцию, принадлежит не держателю домена.
# Резольвер DNS 2606:4700:4700:64 синтезирует AAAA-записи для
# ipv6test.google.com в адрес NAT64: 64:ff9b::<original-ipv4>
$ nslookup ipv6test.google.com 2606:4700:4700::64
Неавторитетный ответ:
ipv6test.google.com canonical name = ipv6test.l.google.com.
Name: ipv6test.l.google.com
Address: 64:ff9b::8efa:c3e4
- Реализации
ISATAP
ISATAP — механизм перехода на IPv6, предназначенный для передачи IPv6-пакетов между узлами с двухстековой поддержкой поверх IPv4-сетей.
В отличие от 6over4 (более старого протокола, использующего многоадресную рассылку IPv4), ISATAP рассматривает IPv4 как виртуальный нешироковещательный канал уровня передачи данных, что избавляет от необходимости поддержки мульткаста в инфраструктуре IPv4.
464XLAT
464XLAT позволяет клиентам в сетях только IPv6 получать доступ к сервисам только IPv4[11].[12]
Клиент использует транслятор SIIT для преобразования пакетов IPv4 в IPv6. Эти пакеты затем передаются на транслятор NAT64, который обратно конвертирует их в IPv4 и направляет к серверу только на IPv4. Транслятор на стороне клиента может быть реализован на самом устройстве или на промежуточном узле; он называется CLAT (Customer-side transLATor). Транслятор NAT64, или PLAT (Provider-side transLATor), должен иметь доступ как к серверу, так и к клиенту (через CLAT). Использование NAT64 ограничивает взаимодействие схемой «клиент–сервер» по UDP, TCP и ICMP.
- Реализации
- T-Mobile US внедрила IPv6-only с использованием 464XLAT[13].
- Orange Polska с сентября 2013 года предоставила сервис только IPv6 (CLAT/NAT64/DNS), полностью перейдя с ADSL, VDSL и FTTH шлюзов к январю 2015 года[14].
- Telstra использует IPv6-only для мобильных сервисов с 464XLAT с февраля 2020 года[15].
- В Android CLAT доступен нативно с версии 4.3 (Jelly Bean), выпущенной в 2013 году[16].
- Windows 10 поддерживает 464XLAT для WWAN с обновления Creators Update (2017)[17].
- Windows 11 (24H2) реализует тот же функционал, в будущих версиях заявлена поддержка CLAT на иных сетевых устойствах (пока только WWAN), с применением RFC 7050 (запрос к ipv4only.arpa), RFC 8781 (PREF64) и RFC 8925 (DHCP Option 108)[18].
- macOS поддерживает CLAT с версии Ventura (2022 год)[19].
- iOS поддерживает CLAT с версии 12.0, выпущенной в 2018 году[20]. Кроме того, компания Apple требует, чтобы все приложения для App Store корректно работали в сетях только IPv6[21].
- clatd — реализация CLAT для Linux[22].
- Network Manager (на стадии разработки)[23].
- В OpenWRT (Linux для маршрутизаторов) возможно подключение clat через пакет 464xlat[24].
- FreeBSD реализует NAT64 CLAT с момента выпуска 12.1[25].
Dual-Stack Lite (DS-Lite)
Dual-Stack Lite (DS-Lite) не предусматривает выделения IPv4-адреса для оборудования абонента (CPE) при выходе в интернет. CPE раздает приватные IPv4-адреса для локальных клиентов, согласно требованиям локальной сети. Далее CPE инкапсулирует IPv4-пакеты в IPv6-пакеты, используя глобальное IPv6-соединение для передачи пакета к CGN (Carrier-grade NAT), где имеется публичный IPv4-адрес. Оригинальный IPv4-пакет восстанавливается, ему назначается NAT и он направляется в публичный IPv4-интернет. CGN однозначно идентифицирует потоки по публичному IPv6-адресу CPE, приватному IPv4-адресу и TCP/UDP-порту.
Лёгкий 4over6 расширяет DS-Lite, вынося NAT c ISP-уровня на CPE, устраняя необходимость внедрения CGN. Для этого каждому CPE выделяется диапазон портов публичного IPv4-адреса. Это позволяет снизить нагрузку на инфраструктуру NAT провайдера.
V4-в-через-V6-маршрутизация
V4-via-v6 маршрутизация[26] — метод, при котором IPv4-адреса назначаются конечным узлам, а промежуточные маршрутизаторы используют только адреса IPv6. Протоколы маршрутизации IPv4 распространяются стандартно, никакой трансляции или инкапсуляции не происходит, но указывается IPv6 как следующий хоп. Такой подход снижает нагрузку по управлению адресами, так как в магистральной сети используются только адреса IPv6, но всё равно требуется поддержка передачи IPv4-пакетов.
V4-via-v6 реализован для BGP[27] и протокола маршрутизации Babel[28]. Реализации доступны в Bird[29] и в babeld[30].
MAP
Сопоставление адреса и порта (MAP) — технология перехода на IPv6, предложенная Cisco, сочетающая преобразование адреса и порта (A+P) с туннелированием IPv4-пакетов через внутреннюю сеть провайдера на основе IPv6[31]. Стандартизованные версии: MAP-T и MAP-E, утверждены в июле 2015 года. Sky Italia применяет MAP-T в своей интернет-сети как минимум с 2021 года[32].
Устаревшие механизмы
Следующие механизмы официально признаны устаревшими IETF:
Network Address Translation/Protocol Translation (NAT-PT) описан в RFC 2766, но из-за многочисленных недостатков признан устаревшим (RFC 4966). Используется вместе с DNS приложенческим шлюзом (DNS-ALG).
Network Address Port Translation + Protocol Translation (NAPT-PT) — подобен NAT-PT, но добавляет трансляцию портов, чтобы исключить конфликт портов между разными хостами через механизм. Этот подход, призванный устранить проблемы безопасности и устойчивости, также признан устаревшим в RFC 4966.
Реализации
- stone (программное обеспечение), транслятор портов под Windows и Unix-системы.
- faithd, статическая реализация TRT для BSD (проект KAME)
- CLATD, реализация CLAT / SIIT-DC Edge Relay под Linux
- WrapSix, реализация NAT64 для Linux
- TAYGA, stateless NAT64 для Linux
- Jool, реализация SIIT и NAT64 (stateful) для Linux
- naptd, пользовательская реализация NAT-PT
- Ecdysis, NAT64-шлюз, включает DNS64
- Address Family Transition Router (AFTR), реализация DS-Lite
- niit — linux-модуль для передачи одноканального IPv4-трафика через IPv6-сеть
- IVI Архивировано 19 марта 2015 года. — конвертация пакетов IPv4/IPv6 через патч к ядру Linux (2.6)
- Microsoft Forefront Unified Access Gateway, обратный прокси и VPN-решение (реализует DNS64 и NAT64)
- BIND, DNS-сервер, поддерживает DNS64 с версии 9.8
- PF (фаервол), OpenBSD: поддержка трансляции IP-версий с 5.1, реализован NAT64
Примечания
Литература
- IPv6 in Practice, Бенедикт Штокебранд (2006), ISBN 3-540-24524-3
Ссылки
- D. J. Bernstein. The IPv6 mess
- Кристиан и Тина Штрауф. Transport Relay Translator How To
- Understanding Dual-Stack Lite Архивировано 20 октября 2011 года.
- Assuring Interoperability Between Heterogeneous (IPv4/IPv6) Networks Without using Protocol Translation
- KSII Transactions on Internet and Information Systems - Configuring Hosts to Auto-detect (IPv6, IPv6-in-IPv4, or IPv4) Network Connectivity