Клавиша / esc

Протокол IPv6

О протоколе IPv6 с разбором ситуаций для веб-разработчиков.

Время чтения: 5 мин

Кратко

Скопировано

IPv6 или Internet Protocol version 6 — сетевой протокол, который обеспечивает передачу данных между компьютерами и другими устройствами в интернете.

Основная идея заключается в том же, в чём идея интернета — прямой связности и построении одноранговой сети (P2P). По сравнению с IPv4 (актуальной, но устаревающей версией), в IPv6 исправили баги и добавили решения, связанные с адресацией, маршрутизацией и автоматизацией.

Основные преимущества протокола в вебе:

  • Прямые соединения: преимущество для голосовой связи (VoIP) и аудио-, видео- и конференц-связи (WebRTC), так как нет разделения на частные (серые) и публичные (белые) адреса.
  • Удобство в отладке: нет необходимости использовать программное обеспечение вроде ngrok.
  • Меньше проблем с блокировками: у каждого устройства свой уникальный IP-адрес. Меньше шансов, что вас заблокируют из-за соседа на хостинге.
  • Снижается вероятность столкнуться с капчей на анти-DDoS-сервисах при входе на сайт.
  • Косвенные SEO-преимущества: Google может учитывать доступность сайта по IPv6, политики Apple.
  • Актуальность в развивающихся странах: во многих регионах провайдеры используют только IPv6, что важно, если делаете международный продукт.

Как понять

Скопировано

IPv6-адрес состоит из 128 бит, которые записываются в виде восьми групп по четыре шестнадцатеричных символа (хекстета).

Посмотрим на адрес 2001:0db8:4ac7:fddd:8da3:981f:fbda:1e43. Выглядит страшно, но на практике всё просто. Адрес делится на две части:

  • 2001:0db8:4ac7:fddd — глобальный префикс, который определяет провайдер.
  • 8da3:981f:fbda:1e43 — уникальный идентификатор устройства в сети.

В отличие от IPv4, вы можете представить вторую половину как универсальный уникальный идентификатор устройства (UUID).

Возможные варианты адреса

Скопировано

IPv6 позволяет сокращать адреса до удобного для восприятия вида.

  1. Заменим нули на :: (двойное двоеточие можно использовать только один раз): 2001:0DB8:0000:0000:0000:0000:0000:00002001:0DB8::.
  2. Внутри каждого хекстета уберём первые нули: 2001:0DB8::2001:DB8::.
  3. Если хочется сохранить наглядность, можно оставить по одному нулю: 2001:DB8:0:0:0:0:0:0.

Кроме обычного адреса как выше, встречаются и короткие адреса, например:

  • ::1 — петля, аналог 127.0.0.1.
  • 2600:: — случайный адрес из интернета (да, можете запустить команду ping 2600:: и получить ответ).

Как указать

Скопировано

Поскольку символ : используется в адресе, его нужно экранировать квадратными скобками ([]) в строках с URL:

        
          
          https://[2001:0db8:4ac7:fddd:8da3:981f:fbda:1e43]:8080
          https://[2001:0db8:4ac7:fddd:8da3:981f:fbda:1e43]:8080

        
        
          
        
      

В некоторых командах, например в telnet, квадратные скобки вообще не нужны:

        
          
          telnet 2001:0db8:4ac7:fddd:8da3:981f:fbda:1e43 8080
          telnet 2001:0db8:4ac7:fddd:8da3:981f:fbda:1e43 8080

        
        
          
        
      

Некоторые префиксы и маски

Скопировано

В IPv6 вместо масок подсети используют префиксы, которые обозначаются как /число. Например, /64 в адресе 2001:0db8:4ac7:fddd::/64. Вот список некоторых префиксов:

Префикс Размер Назначение
/64 1 /64 подсеть Базовая подсеть, аналог /24 в IPv4 на ваших домашних роутерах.
/60 16 подсетей /64 Выдаётся интернет-провайдером.
/56 256 подсетей /64 Выдаётся интернет-провайдером.
/48 65 536 подсетей /64 Выдаётся интернет-провайдером на организацию или предприятие.
/32 65 536 подсетей /48 Подсети интернет-провайдеров.

Подробные расчёты можно сделать в специальном калькуляторе подсетей.

Известные зарезервированные подсети

Скопировано
Префикс Назначение
::1/128 Петля.
2001:0DB8::/32 и 3FFF::/20 Подсети, созданные для документов. Подразумевается, что люди, видя эти адреса, используют текущий абстрактный адрес или вставят свой.
FE80::/10 Link-local адреса.
::FFFF:0:0/96 Для конвертации из IPv4 в IPv6. Часто встречаются в системах управления базами данных.

Больше примеров найдёте на сайте IANA. Остальные примеры можно посмотреть в Википедии.

Приватность и популярность

Скопировано

Можно подумать, что сервисы могут точно вычислить человека и собрать о нём всю информацию (для выдачи рекламы или чего-то другого), раз у каждого устройства есть индивидуальный адрес. В реальности современные операционные системы имеют временные IP-адреса. Это позволяет изменять адрес, с которого устройство выходит в интернет. Так что, при работе с адресами, лучше работать с префиксом /64 и шире.

Есть миф, что IPv6 нигде не используется. Это не так. Если вы разрабатываете приложение или сайт под смартфоны и другие мобильные устройства, то получите до 80% IPv6-трафика.

Посмотреть на статистику по использованию IPv6 можете по этим ссылкам:

Как сделать у себя

Скопировано

Чтобы ваш сайт работал с IPv6, нужно:

  1. Убедиться, что у вас на сервере есть IP-адрес из подсети 2000::/3.
  2. Настроить веб-сервер на работу с IPv6.
  3. Сделать IP-адрес сервера статичным.
  4. Прописать в DNS соответствующую АААА-запись на IPv6-адрес.

DNS

Скопировано

Скорее всего, вы уже знаете, что такое DNS, но давайте освежим память.

DNS — система получения информации о домене. Проще говоря, заходя на сайт наша операционная система или браузер запрашивают список IP-адресов, которые соответствуют данному домену. К примеру, посылая запрос на example.com, мы получим несколько адресов. Среди адресов будут IPv6- и IPv4-адреса. Если IPv6 исправно работает на устройстве, операционная система или браузер отдадут только IPv6-адрес. Кстати, данная процедура называется Happy Eyeballs.

На стороне DNS-сервера IPv4- и IPv6-адреса различаются типами записи. Для IPv4 это будет A-запись, а для IPv6 — AAAA-запись.