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. Уже лучше! Но в глаза бросается несколько идущих подряд нулей. Для сокращения записи необходимо самую длинную последовательность из нулей заменить на ::. Таким образом мы разделим наш адрес на две части и мы точно будем знать правую часть адреса и левую. А недостающие нули мы дополним, поскольку знаем сколько должно быть групп из 16 бит. Таким образом адрес сокращается до 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 бита. Т.е. вы вправе выбирать внутри сети половину адреса, т.е. если вы хотите задать адрес вручную, то можете выбирать красивый и легко запоминающийся адрес для своего сервера, например, первый адрес в своей сети 2001:db8:c11c:600::1 или какую-нибудь фразу 2001:db8:c11c:600::dead:beef (набор символов, конечно ограничен, но простор для творчества есть). Кроме этого, если вы получите в распоряжение стандартную сеть /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:

[email protected]$ 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 в механизмом трансляции NAT64 (из IPv6 в IPv4). Это позволит построить сеть полностью только на IPv6, но при этом получать доступ к ресурсам, которые доступны только по IPv4. Подробнее об этом я писал в заметке. Из достоинств - упрощается настройка сети, потому что не нужно настраивать IPv4 сеть. Из недостатков - не всё может корректно работать. В некоторых случаях может потребоваться дополнительное ПО на клиентах, которое обеспечит возможность работы некоторых приложений, которые не готовы к переходу на IPv6.

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

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

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

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

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

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

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

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


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