31.08.2022

Как я перестал бояться IPv6

На самом деле, использовать IPv6 я начал довольно давно. Ещё в 2015 году, а возможно и раньше. Использовал его я на своём VPS сервере. Но только сейчас, с появлением возможности использовать IPv6 дома без костылей, погрузился в особенности нового протокола с головой. И оказалось, что не всё так страшно. Протоколом можно пользоваться уже сейчас.

Ещё 8 июня 2011 года, с 00:00 по UTC ведущие интернет-провайдеры и компании, предоставляющие контент в интернете, в течение 24 часов предоставляли доступ как по IPv4, так и по IPv6. Спустя год, 6 июня 2012 года состоялся Всемирный запуск IPv6 — тестирование IPv6 признано успешным. В этот день крупные компании предоставили полноценный доступ к своим сайтам по IPv6, такие как Google, Facebook, Microsoft Bing, Yahoo.

Спустя 10 лет поддержка IPv6 появляется и у Российских провайдеров. Именно то, что я получил возможность нативно использовать этот протокол в сети Ростелеком и послужило толчком для знакомства с ним.

Перестаём бояться IPv6 адресов

Первое, что пугает в новом протоколе - размер IP адреса. Теперь вместо 32 бит для адресации используется 128! С первого взгляда кажется, что использовать такие длинные адреса будет намного сложнее, чем IPv4. Но на самом деле разработчики протокола учли, что человеку сложно оперировать большими объёмам данных и добавили возможность значительно сокращать запись адреса. Для записи адресов IPv4 его разбивали на блоки по 8 бит и записывали значение каждого блока в виде десятичного числа, между числами в качестве разделителя использовали точку. Для IPv6 используется аналогичный метод, но адрес разбивается на блоки по 16 бит, каждый блок записывается в шестнадцатеричной системе счисления, в качестве разделителя используется символ двоеточие, например 2001:0db8:00ac:000d:0000:0000:0000:0001. Выглядит это громоздко. Поэтому первое, что можно сделать - отбросить ведущие нули из каждого разряда, т.е. записать адрес так: 2001:db8:ac:d:0:0:0:1. Уже лучше, но в глаза бросается несколько идущих подряд нулей. Для сокращения записи необходимо самую длинную последовательность из 0 заменить на ::. Заменить можно только один раз, поскольку только в этом случае левая часть будет старшей частью адреса, а правая - младшей. Таким образом адрес сокращается до 2001:db8:ac:d::1. По сравнению с 212.220.200.60 выглядит, конечно, сложнее, но не на много.

С адресацией для локальных сетей всё ещё веселее. Для них выделен диапазон fc00::/7, т.е. вы вправе для своей локальной сети использовать адреса вида fc00::1 или fd12::1. По моему мнению они выглядят даже лучше, чем 192.168.1.1, 172.16.1.1 или 10.0.0.1, которые используются для тех же целей.

Но ведь адрес может быть 2001:db8:c11c:1600:ad76:5be7:6191:380c? Да! Может быть. Но в вашем распоряжении стандартно даётся сеть размером 64 бита. Т.е. вы вправе выбирать внутри сети последние 4 группы адреса, т.е. если вы хотите задать адрес вручную, то можете выбирать адрес первый адрес в своей сети - 2001:db8:c11c:600::1, например. Кроме этого, если вы получите в распоряжение стандартную сеть /48, то вы вправе для серверов выбрать нулевую сеть и тогда адрес можно сократить до 2001:db8:c11c::1. Любителям красивых адресов есть где разгуляться! Ну а если ваш компьютер не является сервером, то сложный адрес - это скорее преимущество. К тому же, обычно такие адреса, в большинстве случаев, не нужно вводить вручную.

Новинки в протоколе IPv6

В сети IPv4 для того, чтобы узел смог общаться с другими сетями был необходим DHCP сервер, или ручная настройка IP адресов. В сетях IPv6 сервер DHCP теперь не является обязательным. Любой маршрутизатор при подключению к сети рассылает узлам данные о сети с которой он работает и узлы сами могут выбрать себе адреса из доступных диапазонов. Также узел при подключении к сети может отправить запрос на поиск маршрутизатора и в ответ получить эту же информацию. Таким образом, чтобы начать пользоваться интернетом не хватает только адреса DNS сервера. Можно воспользоваться и DHCP. При необходимости, маршрутизатор может в своём ответе указать, что за дополнительными настройками необходимо обратиться к DHCP серверу (например, за адресами DNS-серверов), а также маршрутизатор может ответить, что, в том числе и IP адрес, клиент должен получить от DHCP сервера.

Иметь несколько адресов в IPv6 сети - это нормально. Первый адрес, который обычно получает сетевой интерфейс - это Link-local адрес из диапазона fe80::/10. Благодаря ему ваше устройство может общаться с соседями, которые работают с вами в одном канале (например, сети WiFi или сегменте Ethernet сети). Адреса этого диапазона не маршрутизируются.

Если вы хотите получить несколько сетей, но при этом чтобы они не имели доступа к интернет (по аналогии с сетями 192.168.0.0/16, 172.16.0.0/12, 100.64.0.0/10, 10.0.0.0/8), то можете использовать адреса из диапазона fc00::/7 (от fc00:... до fdff:...). Данные адреса называются Unique local. Они также, как и их аналоги из IPv4 не маршрутизируются в интернете, но при этом могут маршрутизироваться внутри вашей локальной сети. Да, говорят, что в сетях IPv6 нет NAT. Однако никто вам не мешает применить этот костыль для подобных адресов и сделать также, как было в сети IPv4. Но это не приветствуется, хотя и возможно.

Для полноценного доступа в интернет ваш узел должен получить Global unicast адрес. По сути, это аналог «белого» IP адреса в IPv4. Левую часть адреса выделяет провайдер, который предоставляет вам услуги доступа в интернет. Причём вам может быть выделена сеть длиной /48, что позволит создать в пределах своей сети 65536 подсетей стандартного размера /64. На практике, мне выдали сеть размером /56, что тоже не мало и позволяет создать мне 256 подсетей /64.

Никто не мешает нам одновременно иметь несколько адресов, в том числе по несколько Unique local и Global unicast адресов.

Ещё одной особенностью IPv6 является то, что благодаря наличию Link-local адресов наш маршрутизатор может вообще не иметь Global unicast адреса или Unique local. Связь внутри сети производится через Link-local адреса. Например, если посмотреть таблицу маршрутизации на моём компьютере, то можно увидеть, что маршрутом по умолчанию является адрес fe80::1 на интерфейсе wlp3s0:

fsa@local$ ip -6 route
...
default via fe80::1 dev wlp3s0 proto ra metric 600 pref medium

Есть значительные изменения в вещании на множество узлов. Однако не буду раскрывать эту тему ввиду того, что эта заметка предназначена для первого знакомства с IPv6.

Как перейти на IPv6

Даже не смотря на то, что свободные адреса IPv4 закончились, очень многие даже не задумываются о переходе на IPv6. А всё потому, что нельзя просто так взять и перейти на IPv6. Этот протокол обратно не совместим с IPv4. Но, с другой стороны, IPv6 поддерживает большинство современного программного обеспечения и операционные систем. У вас возникнут проблемы, если вы используете Windows XP (В 2022 году? С вами всё в порядке?) или какой-то специфическое ПО, разработчики которого не позаботились о поддержке IPv6. Браузеры, мессенджеры, торрент-клиенты - почти все поддерживают работу в IPv6 сетях. Я даже оказался в ситуации, что остался без работающей сети IPv4. Я даже не сразу заметил, что с ней что-то не так, потому что то, чем я пользовался, работало по IPv6. А всё потому, что на моём компьютере был настроен Dual-Stack, т.е. одновременно можно пользоваться как IPv4 протоколом, так и IPv6. Если сервис доступен по IPv6, то будет обращение к сервису именно по этому протоколу.

Что работает по IPv6:

Увы, на многих популярных Российских сайтах протокол IPv6 не поддерживается. Однако настройка его на веб-сервере вообще не вызывает никаких затруднений. Например, в сервере nginx для IPv6 требуется добавить 1 строку.

Вместо заключения

Если вы являетесь администратором какого-либо сервера, то стоит рассмотреть возможность подключения IPv6. Хостинг-провайдеры в большинстве своём выдают IPv6 сети в пользование без проблем, а зачастую даже бесплатно или за символическую плату. У меня на одном из серверов сеть /64 стоит 10 рублей в месяц, а на другом эта же сеть уже включена в тариф. Чем больше сервисов будет доступно по IPv6, тем более популярно это будет у провайдеров, предоставляющих услуги доступа в интернет. А ведь это их прямой интерес, поскольку адрес IPv4 закончились, а покупка старых блоков обходится довольно дорого. Кроме этого необходимо содержать ещё и железо, которое занимается NAT для тех клиентов, которые получают серые адреса при подключении, которые вынуждены выдавать провайдеры опять таки из-за нехватки IPv4 адресов.

Если вы просто хотите ознакомиться с IPv6 дома, то можете попробовать включить IPv6 на вашем маршрутизаторе. В августе 2022 года я обнаружил, что подобное работает на сети Ростелеком в Новосибирской и Свердловской областях, но есть некоторые незначительные ограничения. Если у вас есть статический IP адрес, то можно может работать туннель 6to4, который не нужно дополнительно настраивать.

Если же ваш провайдер не предоставляет доступ по IPv6 ни в каком виде, то можно воспользоваться туннельным брокером, например, https://route48.org или https://route64.org, которые позволяют использовать для получения адресации IPv6, в том числе, обычный Wireguard, который вам может быть знаком, если вы хоть раз самостоятельно настраивали VPN. Доступны и другие типы туннелей. Ещё один из популярных туннельным брокеров - https://he.net, но для настройки туннеля требуется статический IPv4 адрес, который не нужен при работе с брокером по Wireguard. Не рекомендую сильно нагружать канал через туннельного брокера, например, качать торренты. Используйте его только в ознакомительных целях!

Рекомендую ещё один полезный ресурс https://version6.ru где можно найти информацию о новом протоколе на русском языке.

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


Если данная заметка оказалась вам полезной, можете поблагодарить автора финансово на сервисе Boosty или любой суммой через сервис QIWI.