Как узнать сколько ipv6 адресов присвоено компьютеру

Обновлено: 07.07.2024

Зачем он вообще понадобился?

В далёком 1981-ом, когда был описан протокол IPv4, число устройств в почти 4,3 миллиона единиц, наверное, не казалось таким уж легко достижимым. Но, уже меньше чем через десять лет после этого, проблема сохранения запаса адресов обрела свою актуальность. Были разработаны технологии, позволяющие замедлить темпы расходования уникальных адресов, типа NAT или CIDR, но, несмотря на это, недостаточность таких мер становилась всё более очевидной. Для того, чтобы предотвратить исчерпание пула адресов, нужны были более кардинальные изменения.

Как выглядит IPv6

В написании IP-адреса шестой версии существуют несколько общепринятых правил:

при применении данного правила будет выглядеть как

  • Во-вторых, двойным двоеточием ( :: ) принять заменять одну или несколько идущих подряд групп, содержащих одни нули. Например,

можно записать как

или, написание адреса

можно сократить до

Второе правило сокращения можно использовать в адресе только один раз, иначе возникнет неоднозначность в его написании.

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

В браузере при использовании IPv6 в URL необходимо помещать адрес в квадратные скобки, например:

А при необходимости указать номер порта, его ставят после квадратных скобок через двоеточие:

Пакет IPv6

Фиксированный заголовок пакета IPv6 - Что такое протокол IPv6 и как он работает

Фиксированный заголовок состоит из следующих полей:

Также, протокол IPv6 использует информацию, которая помещается между фиксированным заголовком и заголовком более высокого уровня в форме расширенных заголовков. Такая информация является дополнительной и используется не всегда. Расширенные заголовки обрабатываются конечным устройством, кроме заголовка Hop-By-Hop Options. Заголовок Hop-By-Hop Options обрабатывается каждым промежуточным узлом, в том числе отправителем и получателем пакета.

Наименование расширенного заголовкаТипОписание
Hop-by-Hop Options0Параметры, считываемые всеми устройствами при прохождении
Routing Header43Содержит список транзитных устройств для пакета
Fragment Header44Содержит данные по фрагментации пакета
Encapsulating Security Payload Header50Содержит информацию по шифрованию
Authentication Header51Содержит данные по аутентификации пакета
Destination Options60Содержит данные для считывания конечными устройствами

Типы адресов IPv6

Адреса IPv6 делятся на следующие типы:

  • Unicast-адреса: предназначены для идентификации интерфейса узла, работающего под управлением IP-протокола шестой версии.
  • Multicast-адреса: предназначены для отправки пакетов на несколько адресов (в шестой версии протокола является заменой широковещательного (broadcast) адреса).
  • Anycast-адреса: назначается сразу нескольким устройствам, при этом пакет, отправляемый на anycast-адрес, получает узел, являющийся ближайшим из имеющих данный адрес.

Unicast-адреса, в свою очередь, также делятся на типы:

Подсети

Разделение адресов IPv6 на подсети использует иной подход в отличие от того, как это происходит в сетях IPv4. Разделение на подсети в IPv6 не преследует своей целью экономию адресов в глобальном пространстве. В шестой версии протокола более важным является обеспечение иерархической структуры сети.

Структура адреса IPv4

Как правило, адреса IPv6 настраиваются автоматически, при этом маршрутизатор сообщает о том, какой префикс доступен в данной ситуации. Под префиксом маршрутизатор понимает префикс глобальной маршрутизации плюс идентификатор данной подсети. То есть, речь идёт о первых 64-х битах. Внутри же подсети интерфейсы устройств идентифицируются при помощи канальных (локальных) адресов. Настраиваемый узел может заполнить 64 бита идентификатора интерфейса самостоятельно, используя префикс канального адреса fe80 . Для этого устройство имеет несколько возможностей.

В большинстве случаев это происходит при помощи использования MAC-адреса интерфейса данного узла. Для генерации идентификатора интерфейса существует определённый алгоритм. Для устройства с MAC-адресом, например, f8:ac65:2b:ba:11 это выглядит следующим образом:

Таким образом, вместо того, чтобы получать адрес по DHCP, как это происходит в IPv4, сетевой адаптер самостоятельно назначает себе адрес IPv6, используя для этого свой же MAC-адрес.

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

IPv6 (англ. Internet Protocol version 6) — новая версия интернет-протокола (IP), призванная решить проблемы, с которыми столкнулась предыдущая версия (IPv4) при её использовании в Интернете, за счёт целого ряда принципиальных изменений. Протокол был разработан IETF.

На конец 2012 года доля IPv6 в сетевом трафике составляла около 1%. К концу 2013 года ожидался рост до 3%. Согласно статистике Google на октябрь 2018 года, доля IPv6 в сетевом трафике составляла около 25%. В России коммерческое использование операторами связи невелико (не более 1% трафика). DNS-серверы многих российских регистраторов доменов и провайдеров хостинга используют IPv6.

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

В конце 1980-х стала очевидна необходимость разработки способов сохранения адресного пространства Интернета. В начале 1990-х, несмотря на внедрение бесклассовой адресации, стало ясно, что этого недостаточно для предотвращения исчерпания адресов и необходимы дальнейшие изменения инфраструктуры Интернета. К началу 1992 года появилось несколько предложений, и к концу 1992 года IETF объявила конкурс для рабочих групп на создание интернет-протокола следующего поколения (англ. IP Next Generation — IPng). 25 июля 1994 года IETF утвердила модель IPng, с образованием нескольких рабочих групп IPng. К 1996 году была выпущена серия RFC, определяющих Интернет-протокол версии 6, начиная с RFC 1883.

IETF назначила новому протоколу версию 6, так как версия 5 была ранее назначена экспериментальному протоколу, предназначенному для передачи видео и аудио.

Оценки времени полного исчерпания IPv4-адресов различались в 2000-х. Так, в 2003 году директор APNIC Пол Уилсон (англ. Paul Wilson) заявил, что, основываясь на темпах развёртывания сети Интернет того времени, свободного адресного пространства хватит на одно—два десятилетия. В сентябре 2005 года Cisco Systems предположила, что пула доступных адресов хватит на 4—5 лет.

3 февраля 2011 агентство IANA распределило последние 5 блоков /8 IPv4 региональным интернет-регистраторам. На этот момент ожидалось, что общий запас свободных блоков адресов у региональных интернет-регистраторов (RIR) закончится в течение срока от полугода (APNIC) до пяти лет (AfriNIC).

По состоянию на сентябрь 2015 года, об исчерпании общего запаса свободных блоков IPv4-адресов и ограничениях на выдачу новых диапазонов адресов объявили все региональные регистраторы, кроме AfriNIC; ARIN объявил о полном исчерпании свободных IPv4-адресов, а для остальных регистраторов этот момент прогнозируется начиная с 2017 года. Выделение IPv4-адресов в Европе, Азии и Латинской Америке (регистраторы APNIC, RIPE NCC и LACNIC) продолжается блоками /22 (по 1024 адреса).

8 июня 2011 года состоялся Международный день IPv6 — мероприятие по тестированию готовности мирового интернет-сообщества к переходу с IPv4 на IPv6, в рамках которого участвующие в акции компании добавили к своим сайтам IPv6-записи на один день. Тестирование прошло успешно, накопленные данные будут проанализированы и учтены при последующем внедрении протокола и для составления рекомендаций.

Перевод на IPv6 начал осуществляться внутри Google с 2008 года. Тестирование IPv6 признано успешным. 6 июня 2012 года состоялся Всемирный запуск IPv6. Интернет-провайдеры включат IPv6 как минимум для 1% своих пользователей (уже подписались AT&T, Comcast, Free Telecom, Internode, KDDI, Time Warner Cable, XS4ALL). Производители сетевого оборудования активируют IPv6 в качестве настроек по умолчанию в маршрутизаторах (Cisco, D-Link). Веб-компании включат IPv6 на своих основных сайтах (Google, Facebook, Microsoft Bing, Yahoo), а некоторые переводят на IPv6 также корпоративные сети. В спецификации стандарта мобильных сетей LTE указана обязательная поддержка протокола IPv6.

Иногда утверждается, что новый протокол может обеспечить до 5·1028 адресов на каждого жителя Земли. Такое большое адресное пространство было введено ради иерархичности адресов (это упрощает маршрутизацию). Тем не менее, увеличенное пространство адресов сделает NAT необязательным. Классическое применение IPv6 (по сети /64 на абонента; используется только unicast-адресация) обеспечит возможность использования более 300 млн IP-адресов на каждого жителя Земли.

  • Маршрутизаторы больше не должны фрагментировать пакет, вместо этого пакет отбрасывается с ICMP-уведомлением о превышении MTU и указанием величины MTU следующего канала, в который этому пакету не удалось войти. В IPv4 размер MTU в ICMP-пакете не указывался, и отправителю требовалось осуществлять подбор MTU техникой Path MTU discovery. Для лучшей работы протоколов, требовательных к потерям, минимальный MTU поднят до 1280 байт. Фрагментация поддерживается как опция (информация о фрагментации пакетов вынесена из основного заголовка в расширенные) и возможна только по инициативе передающей стороны.
  • Из IP-заголовка исключена контрольная сумма. С учётом того, что канальные (Ethernet) и транспортные (TCP и UDP) протоколы имеют свои контрольные суммы, ещё одна контрольная сумма на уровне IP воспринимается как излишняя. Кроме того, модификация поля hop limit (или TTL в IPv4) на каждом маршрутизаторе в IPv4 приводила к необходимости её постоянного перерасчёта.

Несмотря на больший по сравнению с предыдущей версией протокола размер адреса IPv6 (16 байтов вместо 4), заголовок пакета удлинился всего лишь вдвое: с 20 до 40 байт.

  • В сверхскоростных сетях возможна поддержка огромных пакетов (джамбограмм) — до 4 гигабайт;
  • Time to Live переименовано в Hop Limit;
  • Появились метки потоков и классы трафика;
  • Появилось многоадресное вещание.

При инициализации сетевого интерфейса ему назначается локальный IPv6-адрес, состоящий из префикса fe80::/10 и идентификатора интерфейса, размещённого в младшей части адреса. В качестве идентификатора интерфейса часто используется 64-битный расширенный уникальный идентификатор EUI-64, часто ассоциируемый с MAC-адресом. Локальный адрес действителен только в пределах сетевого сегмента канального уровня и используется для обмена информационными ICMPv6-пакетами.

Для большего административного контроля может быть использован DHCPv6, позволяющий администратору маршрутизатора назначать узлу конкретный адрес.

Для провайдеров может использоваться функция делегирования префиксов клиенту, что позволяет клиенту просто переходить от провайдера к провайдеру, без изменения каких-либо настроек.

Введение в протоколе IPv6 поля «Метка потока» позволяет значительно упростить процедуру маршрутизации однородного потока пакетов. Поток — это последовательность пакетов, посылаемых отправителем определённому адресату. При этом предполагается, что все пакеты данного потока должны быть подвергнуты определённой обработке. Характер данной обработки задаётся дополнительными заголовками.

Допускается существование нескольких потоков между отправителем и получателем. Метка потока присваивается узлом-отправителем путём генерации псевдослучайного 20-битного числа. Все пакеты одного потока должны иметь одинаковые заголовки, обрабатываемые маршрутизатором.

При получении первого пакета с меткой потока маршрутизатор анализирует дополнительные заголовки, выполняет предписанные этими заголовками функции и запоминает результаты обработки (адрес следующего узла, опции заголовка переходов, перемещение адресов в заголовке маршрутизации и т.д.) в локальном кэше. Ключом для такой записи является комбинация адреса источника и метки потока. Последующие пакеты с той же комбинацией адреса источника и метки потока обрабатываются с учётом информации кэша без детального анализа всех полей заголовка.

Время жизни записи в кэше составляет не более 6 секунд, даже если пакеты этого потока продолжают поступать. При обнулении записи в кэше и получении следующего пакета потока пакет обрабатывается в обычном режиме, и для него происходит новое формирование записи в кэше. Следует отметить, что указанное время жизни потока может быть явно определено узлом отправителем с помощью протокола управления или опций заголовка переходов и может превышать 6 секунд.

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

Приоритет пакетов маршрутизаторы определяют на основе первых шести бит поля Traffic Class. Первые три бита определяют класс трафика, оставшиеся биты определяют приоритет удаления. Чем больше значение приоритета, тем выше приоритет пакета.

В отличие от SSL и TLS, протокол IPsec позволит шифровать любые данные (в том числе UDP) без необходимости какой-либо поддержки со стороны прикладного ПО.

Существуют различные типы адресов IPv6: одноадресные (Unicast), групповые (Anycast) и многоадресные (Multicast).

Адреса типа Unicast хорошо всем известны. Пакет, посланный на такой адрес, достигает в точности интерфейса, который этому адресу соответствует.

Адреса типа Anycast синтаксически неотличимы от адресов Unicast, но они адресуют группу интерфейсов. Пакет, направленный такому адресу, попадёт в ближайший (согласно метрике маршрутизатора) интерфейс. Адреса Anycast могут использоваться только маршрутизаторами.

Адреса типа Multicast идентифицируют группу интерфейсов. Пакет, посланный на такой адрес, достигнет всех интерфейсов, привязанных к группе многоадресного вещания.

Широковещательные адреса IPv4 (обычно xxx.xxx.xxx.255) выражаются адресами многоадресного вещания IPv6. Крайние адреса подсети IPv6 (например, xxxx:xxxx:xxxx:xxxx:0:0:0:0 и xxxx:xxxx:xxxx:xxxx:ffff:ffff:ffff:ffff для подсети /64) являются полноправными адресами и могут использоваться наравне с остальными.

Группы цифр в адресе разделяются двоеточиями (например, fe80:0:0:0:200:f8ff:fe21:67cf). Незначащие старшие нули в группах могут быть опущены. Большое количество нулевых групп может быть пропущено с помощью двойного двоеточия (fe80::200:f8ff:fe21:67cf). Такой пропуск должен быть единственным в адресе.

RFC 4193, соответствуют внутренним IP-адресам, которыми в версии IPv4 являлись 10.0.0.0/8, 172.16.0.0/12 и 192.168.0.0/16. Начинаются с цифр FCxx: и FDxx:.

  • Назначенные (Assigned multicast) — специальные адреса, назначение которых предопределено. Это зарезервированные для определённых групп устройств мультикастовые адреса. Отправляемый на такой адрес пакет будет получен всеми устройствами, входящими в группу.
  • Запрошенные (Solicited multicast) — остальные адреса, которые устройства могут использовать для прикладных задач. Адрес этого типа автоматически появляется, когда на некотором интерфейсе появляется юникастовый адрес. Адрес формируется из сети ff02:0:0:0:0:1:ff00::/104, оставшиеся 24 бита — такие же, как у настроенного юникастового адреса.

Пакеты состоят из управляющей информации, необходимой для доставки пакета адресату, и полезных данных, которые требуется переслать. Управляющая информация делится на содержащуюся в основном фиксированном заголовке, и содержащуюся в одном из необязательных дополнительных заголовков. Полезные данные, как правило, это дейтаграмма или фрагмент протокола более высокого транспортного уровня, но могут быть и данные сетевого уровня (например ICMPv6, OSPF).

IPv6-пакеты обычно передаются с помощью протоколов канального уровня, таких как Ethernet, который инкапсулирует каждый пакет в кадр. Но IPv6-пакет может быть передан с помощью туннельного протокола более высокого уровня, например в 6to4 или Teredo.

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

Если две и более групп подряд равны 0000, то они могут быть опущены и заменены на двойное двоеточие (::). Незначащие старшие нули в группах могут быть опущены. Например, 2001:0db8:0000:0000:0000:0000:ae21:ad12 может быть сокращён до 2001:db8::ae21:ad12, или 0000:0000:0000:0000:0000:0000:ae21:ad12 может быть сокращён до ::ae21:ad12. Сокращению не могут быть подвергнуты 2 разделённые нулевые группы из-за возникновения неоднозначности.

Также есть специальная нотация для записи встроенного и отображённого IPv4 на IPv6. В ней последние 2 группы знаков заменены на IPv4-адрес в его формате. Пример:

При использовании IPv6-адреса в URL необходимо заключать адрес в квадратные скобки:

Этичный хакинг и тестирование на проникновение, информационная безопасность

Оглавление: Компьютерные сети

6. Канальный уровень передачи данных

7. Маршрутизация данных

8. Служебный протокол ICMP

10. Настройка сетевых подключений в командной строке Linux

11. Определение проблем работы сети

12. Туннелизация

Могут ли роутеры и компьютеры одновременно работать с IP и IPv6

IPv6 — это новая версия протокола IP. IPv6 сети, оборудование и программное обеспечение с поддержкой IPv6 распространены уже довольно широко — по крайней мере, в некоторых странах.

Сейчас, когда IP и IPv6 протоколы работают вместе, это приводит к существованию фактически двух параллельных сетей. Например, роутер моего Интернет-провайдера поддерживает IPv6 и IP. Если я обращаюсь к сайту, у которого есть IPv6 адрес (большинство сайтов), то мой запрос и ответ идёт по сетям (узлам) с поддержкой IPv6. Если я обращусь к сайту, у которого только IP адрес, то мой запрос и ответ на него может пойти по другому маршруту.

При анализе сети, допустим, с помощью Wireshark или tcpdump можно пропустить половину или даже больше трафика, если забыть про IPv6! То есть в качестве фильтра отображения пакетов в Wireshark вы введёте (обычный фильтр для показа трафика IP протокола):

ip

То вы увидите примерно такое:


Но если ввести такой фильтр

То картина изменится кардинально (обращаю внимание, что это тот же самый трафик), окажется, что компьютер подключается ещё и к совершенно другим хостам:


При анализе сети, при настройке фильтров отображения по IP, при выполнении атак (например, ARP и DNS спуфинг в локальной сети), нужно помнить про IPv6!

IPv6 адреса могут пригодиться при исследовании локальных сетей Интернет-провайдеров, стоит попробовать использовать IPv6 для обхода Captive Portal (перехватывающих порталов) и других ограничений сети, про IPv6 нужно помнить при анализе трафика на своём компьютере и в локальных сетях, либо наоборот для увеличения скрытности своего пребывания (в надежде, что в настройках логирования трафика не упомянут IPv6 или что геолокация по IPv6 сейчас в зачаточном состоянии (по крайней мере, в публичных базах данных)).

Кстати про блокировки, насколько я понимаю (поправьте, если ошибаюсь), в реестре РКН ведь IPv6 отсутствуют вовсе.

Эта статья поможет вам сделать первые шаги по использованию IPv6 адресов с популярными программами.

Структура IPv6 адреса

Ниже приведены примеры правильных IPv6 адресов:

Они, мягко говоря, разные. Давайте разберёмся, как такое возможно.

Адреса IPv6 в полной форме отображаются как восемь четырёхзначных шестнадцатеричных чисел (то есть восемь групп по четыре символа), разделённых двоеточием. Пример адреса:

Шестнадцатеричные числа записываются с помощью цифр от 0 до 9 и с помощью букв от a до f.

Полная запись может быть сокращена используя несколько методов нотации, к примеру, адрес 2001:0db8:0000:0000:0000:8a2e:0370:7334 равнозначен адресу 2001:db8::8a2e:370:7334.

Кстати, ведь IP адреса тоже поддерживают сокращённую запись, к примеру, следующая команда прекрасно будет работать:

В результате будет выполнен пинг адреса 127.0.0.1, который в сокращённом виде представляет собой 127.1.

Для IP адресов группы цифр называют октетами (что на каком-то языке означает «восемь») поскольку каждая цифра в адресе содержит восемь бит информации, всего в IP четыре октета, то есть для адреса используется 32 бита. Кстати, именно поэтому число в каждом октете ограничено 255 — это соответствует количеству информации, которое могут хранить 8 бит, это 2 8 , то есть числа от 0 до 255.

У IPv6 адресов в каждом сегменте 16 бит информации, на английском языке эти сегменты называют hextet или hexadectet. Всего 8 сегментов по 16 бит информации, получается, что для записи IPv6 адресов используется 8*16=128 бит.

Как уже было сказано выше, в IPv6 адресах числа в группах записываются в виде шестнадцатеричных чисел, а не в виде десятеричных, как в IP. Кстати, если запись была бы в виде десятичных чисел, то в каждом сегменте были бы числа от 0 до 65535 (это 2 16 ). Что касается шестнадцатеричных чисел, то для записи 16 бит информации нужно число длиной до четырёх символов, поэтому получается, то размер раздела составляет 4 символа, но может быть меньше, поскольку нули в начале числа писать необязательно. То есть если там должно быть число 00a1, то можно записать просто a1 — это первый способ сокращения записи IPv6 адресов.

Если в группе число равно 0 (то есть четыре нуля), то записывается один ноль.

Если групп с нулями несколько подряд, то независимо от количества нулей вся эта группа записывается как идущие два подряд двоеточия (::). Последнее сокращение можно использовать в одном IPv6 адресе только один раз, даже если имеется несколько групп с нулями. Если групп с нулями несколько, то заменяется только самая продолжительная из них. Если имеется две группы с нулями одинаковой длины, то заменяется та, которая идёт первой, то есть более левая.

Пример использования этих правил:

Начальный адрес: 2001:0db8:0000:0000:0000:ff00:0042:8329

После удаления всех начальных нулей в каждой группе: 2001:db8:0:0:0:ff00:42:8329

После пропуска последовательных сегментов с нулями: 2001:db8::ff00:42:8329

Петлевой адрес 0000:0000:0000:0000:0000:0000:0000:0001 используя правила сокращения можно сократить до ::1

Вернёмся к адресам из примеров выше:

Как мы уже выяснили, это петлевой адрес 0000:0000:0000:0000:0000:0000:0000:0001.

2a02:6b8:a::a

Здесь пропущено несколько секций с последовательными нулями. Сколько именно? Это можно узнать исходя из следующего правила: всего должно быть 8 секций, а имеется только 4, значит, пропущено 4 секции, то есть в полном виде число должно выглядеть так:

2a02:f680:1:1100::3d60

В этом адресе 5 сегментов, а должно быть 8, значит пропущено 3, запись адреса в полном виде:

Или вместе со всеми нулями:

2604:a880:800:c1::2ae:d001

В этом адресе 6 сегментов, а должно быть 8, следовательно, полная запись этого адреса:

2001:db8:11a3:9d7:1f34:8a2e:7a0:765d

В этом адресе 8 сегментов и нет двух двоеточий подряд — следовательно, это и есть полная запись адреса, разве что, опущены начальные нули:

Надеюсь, эти простые упражнения помогли вам «наметать глаз» и научиться узнавать IPv6 адреса.

Как узнать, у меня IPv6 адрес или нет? Как узнать свой IPv6 адрес

Узнать свой внешний IP адрес без сторонних сервисов иногда просто невозможно, поскольку довольно часто клиенты Интернет-провайдеров выходят в Глобальную сеть через несколько NAT. Поэтому приходится заходить на сайты и сервисы «Узнать свой IP» - эти сервисы смотрят, с какого IP адреса пришёл запрос и показывают его вам. Но скорее всего, это не совсем «ваш» IP адрес, поскольку у компьютеров и телефонов в вашей локальной сети есть только локальные IP адреса, у вашего роутера тоже какой-то локальный IP принадлежащий сети Интернет-провайдера, а тот IP, который показывают вам сайты, на самом деле, присвоен какому-то сетевому устройству у провайдера, через который вы выходите во внешнюю сеть одновременно со многими другими пользователями.

С IPv6 адресами в этом смысле проще — их настолько много, что потребность в NAT отпадает — можно каждому клиенту раздать по персональному IPv6 адресу.

Но тут возникает другое затруднение. Давайте посмотрим вместе. В Windows для вывода своих IP и IPv6 адресов в командной строке выполните команду:


В Linux для просмотра своих IP и IPv6 адресов поможет команда:


Здесь IPv6 адреса вместе с масками подсети перечислены в строках:

Мы рассмотрим зарезервированные диапазоны IPv6 адресов чуть позже, забегая вперёд скажу, что глобальные адреса в настоящее время могут начинаться только на 2 или на 3 (другие пока просто не раздаются). Но даже при таком критерии, в примерах выше в каждой операционной системе есть по два адреса, которые начинаются с двоек — какой именно из них ваш внешний IPv6?


Если у вас есть IPv6, то он будет показан. Если поддержка IPv6 отсутствует, то будет показан только ваш IP.

Зарезервированные IPv6 адреса

В этом разделе рассмотрим диапазоны IPv6 адресов для целевого назначения, чтобы мы могли сразу отфильтровывать их из многочисленных IPv6 адресов сетевых интерфейсов.

У IP также есть зарезервированные диапазоны адресов: 10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16, 127.0.0.0/8, 100.64.0.0/10 и ещё несколько, полный список найдёте здесь.

Специальные диапазоны IPv6 адресов также имеются. Рассмотрим таблицу «Специальные блоки адресов IPv6»:

Блок адресов (CIDR) Первый адрес Последний адрес Количество адресов Использование Цель
::/0 :: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff 2 128 Маршрутизация Маршрут по умолчанию. Смотрите 0.0.0.0 в IPv4.
::/128 :: 1 Программное обеспечение Неопределённый адрес.
::1/128 ::1 1 Хост Петлевой (Loopback) адрес на локальный хост. Смотрите 127.0.0.0/8 в IPv4
::ffff:0:0/96 ::ffff:0.0.0.0 ::ffff:255.255.255.255 2 128−96 = 2 32 = 4294967296 Программное обеспечение IPv4 mapped addresses.встроенный IPv4. Нижние 32 бита это адрес IPv4. Также называется IPv4-совместимым IPv6 адресом. Устарел и больше не используется.
::ffff:0:0:0/96 ::ffff:0:0.0.0.0 ::ffff:0:255.255.255.255 2 32 Программное обеспечение IPv4 translated addresses.Адрес IPv4, отображённый на IPv6. Нижние 32 бита — это адрес IPv4 для хостов, не поддерживающих IPv6.
64:ff9b::/96 64:ff9b::0.0.0.0 64:ff9b::255.255.255.255 2 32 Глобальный Интернет IPv4/IPv6 translation. Зарезервирован для доступа из подсети IPv6 к публичной сети IPv4 через механизм трансляции NAT64[13][14]
100::/64 100:: 100::ffff:ffff:ffff:ffff 2 64 Маршрутизация Discard prefix.
2001::/32 2001:: 2001::ffff:ffff:ffff:ffff:ffff:ffff 2 96 Глобальный Интернет Зарезервирован для туннелей Teredo в RFC 4380
2001:20::/28 2001:20:: 2001:2f:ffff:ffff:ffff:ffff:ffff:ffff 2 100 Программное обеспечение ORCHIDv2.
2001:db8::/32 2001:db8:: 2001:db8:ffff:ffff:ffff:ffff:ffff:ffff 2 96 Документация Адреса для использования в документации и примерах исходного кода.
2002::/16 2002:: 2002:ffff:ffff:ffff:ffff:ffff:ffff:ffff 2 112 Глобальный Интернет Зарезервирован для туннелей 6to4 в RFC 3056 (устарело).
fec0:/10 feff:: fec0:ffff:ffff:ffff:ffff:ffff:ffff:ffff 2 118 Site-local (Частные сети)) Помечен как устаревший в RFC 3879 (Аналог внутренних сетей 10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16)
fc00::/7 fc00:: fdff:ffff:ffff:ffff:ffff:ffff:ffff:ffff 2 121 Частные сети Уникальные локальные адреса. Диапазон пришёл на смену Site-Local
fe80::/10 fe80:: febf:ffff:ffff:ffff:ffff:ffff:ffff:ffff 2 118 Link Link-local address. Аналог 169.254.0.0/16 в IPv4
ff00::/8 ff00:: ffff:ffff:ffff:ffff:ffff:ffff:ffff:ffff 2 120 Глобальный Интернет Многоадресные адреса

Как видно из таблицы, адреса, которые начинаются на нули или на f — являются локальными, либо предназначены для конкретных целей.

Глобальные IPv6

Соответствуют публичным IPv4-адресам. Могут находиться в любом не занятом диапазоне. В настоящее время региональные интернет-регистраторы распределяют блок адресов 2000::/3 (с 2000:: по 3FFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF).

Это означает, что глобальными сейчас являются только IPv6 адреса, которые начинаются на «2» или на «3».

Как видно на скриншотах выше, сетевым интерфейсам присвоено более чем один IPv6 адрес. Для IPv6 это является нормой, хотя, к примеру, у меня на VPS сервере у сетевого интерфейса только один IPv6 адрес и этого хватает для подключения и функционирования сайта.

У одного сетевого интерфейса может быть много IPv6 адресов, по умолчанию, у меня в Linux это максимум 16:

Зачем так много IPv6 одному интерфейсу? Каждый интерфейс IPv6 имеет локальный IP-адрес. Если интерфейс также может обмениваться данными с более крупной сетью (например, через Интернет), он также имеет глобальный адрес. Это как минимум два адреса. И если хост находится за многосетевым подключением к Интернету, он, вероятно, имеет ещё больше адресов.

В общем, IPv6 у одного компьютера может быть много — и это норма. Глобальными являются адреса, которые начинаются на двойку или на тройку.

Как узнать IPv6 адрес сайта

IP адрес сайта храниться в A записях, а IPv6 адрес сайта хранятся в записях AAAA (смотрите Введение в DNS терминологию, компоненты и концепции).

В Windows IPv6 адрес сайта можно узнать командой nslookup:


Если у сайта есть IPv6 адрес, то он будет выведен вместе с IP адресами.

В Linux также можно использовать команду nslookup:


Можно использовать команду host:

Команда dig также умеет показывать IPv6 адреса, но по умолчанию выводит данные только для A записи, поэтому нужно указать вид записи явно:

Либо настроить вывод всех DNS записей данного домена:


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

Сервис проверки, использую ли я IPv6 адреса

Сервис «Есть ли у меня IPv6» поможет вам определить, можете ли вы открывать сайты используя IPv6 или вам доступна только старая версия.


Этой статьёй я хочу начать цикл, посвященный IPv6. Я являюсь инструктором академии Cisco, поэтому, если вы в совершенстве знаете материал нового CCNA Routing & Switching, то скорее всего, не найдёте в цикле ничего нового. Речь пойдёт о структуре и особенностях протокола IPv6, а также, применении его на маршрутизаторах Cisco (маршрутизация RIP, OSPF, EIGRP, списки контроля доступа, и др. – как пойдёт). В первой статье мы поговорим о структуре IPv6 пакета, записи адресов, префиксе. Вторая статья цикла доступна здесь. Информация подойдёт для новичков, имеющих, тем не менее, некоторые знания по IPv4 и модели OSI.
Цикл статей основан на материалах моего блога, которые, в свою очередь, основаны на опыте преподавания, работы с оборудованием и вольном переводе и обдумывании официального курса CCNA Routing & Switching.
Итак, начнём. Не буду останавливаться на стандартных рассуждениях о том, что IPv4 адресов мало, о том, что NAT и прокси – это костыли, о том, что костыли пока работают, и никто не хочет переходить на IPv6, вместо этого – сразу к сути.

Адреса IPv6


Адрес протокола IPv6 состоит из 128 бит, то есть, он в 4 раза длиннее 32-битного IPv4 адреса. Подобно IPv4, в этом адресе можно выделить две части: сеть и хост. То есть, не все биты в адресе имеют одинаковое значение. Часть битов слева (сколько именно зависит от префикса) обозначают сеть, остальные биты справа – идентифицируют устройство внутри сети. Часть, ответственная за хранение информации о хосте называется идентификатор интерфейса (interface id). В отличие от предыдущей версии протокола, в IPv6 не применяются маски подсети, так как они получились бы очень длинными, вместо этого используется префикс. который записывается так же через слеш после адреса. Например, префикс /64 означает, что из 128 бит, первые 64 – это сеть, а оставшаяся часть (в данном случае вторые 64) – это хост. Префикс описывает, сколько бит в адресе используется под хранение информации о сети.
Сам адрес записывают не в десятичном, а в шестнадцатеричном виде – так короче. Адрес разбивается на группы по 16 бит (хекстеты) и каждая группа представляется четырьмя шестнадцатеричными цифрами. Хекстеты отделяются друг от друга знаком двоеточия. Таким образом, адрес состоит из 8 хекстетов ([8 хекстетов]*[16 бит в хекстете]=[128 бит] – общая длина адреса).

Сокращение IPv6


Пример адреса: 2001:0DB8:AA10:0001:0000:0000:0000:00FB. С таким длинным адресом работать достаточно неудобно, поэтому применяют сокращённую запись.
Для того чтобы сократить данный адрес надо последовательно применить два правила.

Правило 1


В каждом хекстете (группе из 4-х цифр) ведущие нули удаляются. Например, во втором хекстете 0DB0 заменяется на DB0. То есть ноль слева удаляется, ноль справа мы не трогаем. Если хекстет состоит из одних нулей, то он заменяется на один нуль. Таким образом адрес 2001:0DB0:0000:123A:0000:0000:0000:0030 преобразуется в 2001:DB0:0:123A:0:0:0:30. А, например, адрес loopback 0000:0000:0000:0000:0000:0000:0000:0001 заменяется на 0:0:0:0:0:0:0:1.

Правило 2


Это правило применяется только после первого. В адрес выбирается одна самая длинная группа, состоящая из полностью нулевых хекстетов, то есть самая длинная последовательность «:0:0:0:» и заменяется на два двоеточия «::». Эту замену можно произвести только один раз и только с самой длинной последовательностью, так как, если бы мы, например, сделали такую замену в двух местах адреса, то потом нельзя было бы восстановить, сколько именно хекстетов мы заменили в первом и во втором случае. Важный момент: нельзя заменять одну группу из :0: на . правило два применимо только если есть более одной нулевой группы.
Для примера возьмём адрес из предыдущей замены 2001:DB0:0:123A:0:0:0:30. Самая длинная последовательность из полностью пустых хекстетов – это «:0:0:0:», она начинается сразу после хекстета «123A». Есть ещё последовательность из одного пустого хекстета (между «DB0» и «123A»), но эта – длиннее, так что заменять будем её. Адрес станет совсем небольшим: 2001:DB0:0:123A::30 конечно, длиннее IPv4 адреса, но гораздо короче исходного.

Получение исходного адреса по сокращённой записи


Эта процедура достаточно тривиальна, если мы уже умеем сокращать адреса.
Сначала надо посчитать, сколько хекстетов в адресе осталось. В нашем случае, в адресе 2001:DB0:0:123A::30 осталось 5 хекстетов. Мы знаем, что адрес должен состоять из восьми хекстетов – значит вместо «::» возвращаем три недостающих нулевых, получаем 2001:DB0:0:123A:0:0:0:30. Теперь в каждой группе, где меньше четырёх цифр дописываем слева такое количество нулей, чтобы в группе стало четыре цифры. В результате получим исходный адрес 2001:0DB0:0000:123A:0000:0000:0000:0030.


В последнее время все чаще и чаще приходится сталкиваться с протоколом IPv6. Здесь я собрал основную информацию про IPv6 и постарался максимально кратко изложить ее с практической точки зрения. То, что описано в этой статье - это все очень поверхностно и дает лишь общее представление об IPv6.

Адресация в IPv6

Размер IPv6 адресов – 128 бит. То есть если указана маска /64 – то это ровно половина от адреса. Есть правило, по которому можно укоротить IPv6 адрес: если в адресе есть последовательные группы с нулями, то их можно заменить на :: . Старшие нули в группе можно не писать.

То есть адрес выше можно записать так:

IPv6 адрес

Как и в IPv4, в IPv6 есть anycast, multicast и unicast адреса. Broadcast-а больше нет, вместо него есть мультикаст группа “вообще все” ff02::1

В реальной жизни чаще всего приходится сталкиваться с anycast адресами, но и они бывают разных типов.

Global anycast, например – 2a03:b0c0:0:1010::424:8001/64 . Грубо говоря – это “белый” IP-адрес, он маршрутизируется в интернете и выдается провайдером по DHCPv6 или RA (об этом ниже)

Link local адреса из сети – fe80::/10 . Пример такого адреса – fe80::601:4eff:fe9b:4e01/64 . Это подобие 169.254.0.0-ipv4 адресов – для адресации внутри канала, когда нам никто не дал никакого глобального адреса, ОС сама выберет и присвоит интерфейсу такой адрес. В ipv6 на одном интерфейсе может висеть множество адресов, и это – норма. Такие адреса обычно создаются на основе MAC-адреса интерфейса. В приведенном примере MAC-адрес машинки такой – 04:01:4e:9b:4e:01 . Видно что взяли MAC, посередине вставили ff:fe и получили link-local адрес.

Unique local unicast адреса из сети fc00::/7 . Это адреса на подобии 192.168.0.0/16, 10.0.0.0/8, 172.16.0.0/16. В жизни практически нигде не используются.

Получение IPv6 адресов

Получение IPv6 адресов немного отличается от IPv4, но в целом все осталось как прежде – запрос/ответ. В IPv6 расширили протокол ICMP и теперь, процедура получения адреса начинается с того, что клиент на multicast-адрес “все роутеры” со своего link-local адреса отправляет ICMPv6-пакет типа Router solicitation (RS), типа – “эй, есть тут кто? дайте адрес”. Если в сети есть роутер – он отвечает ICMPv6-пакетом типа Router advertisement (RA). В этом пакете содержится минимально необходимая информация, с помощью которой клиент сможет настроить свой интерфейс – префикс сети и DNS сервер.

IPv6 Router advertisement

Пакет RA в wireshark:

И тут могут быть два варианта:

Если в пакете RA есть флаг managed, то клиент сам назначает себе IP-адрес из той сети которая указана в RA. В этом случае клиент также будет использовать Duplicate Address Detection (DAD), чтобы удостовериться, что назначенный адрес ни с кем не пересекается.

Если флага нет, то клиент должен пойти на DHCP-сервер и арендовать себе адрес там. В этом случае процедура аналогична IPv4. DHCPv4-request=DHCPv6-solicit, DHCPv4-response=DHCPv6 advertise.

Существует еще вариант быстрого получения адреса, когда клиент в сеть посылает RS, а в ответ уже получает адрес от DHCP-сервера. Такой механизм называется Rapid Commit

ARP в IPv6

В IPv4, чтобы узнать канальный адрес соседа использовался протокол ARP, в IPv6 его нет, вместо него есть Neighbor Discovery Protocol (NDP). Когда мы хотим узнать MAC-адрес какого-то IP-адреса, то с нашего link-local адреса посылаем ICMPv6 пакет типа Neighbor Solicitation (NS) на специальную multicast-группу SNMA, адрес этой группы связан с искомым IP-адресом, в итоге этот пакет получит только хост с искомым адресом. На NS искомый хост отвечает пакетом Neighbor Advertisement (NA) на наш link-local адрес – “это я, вот мой MAC”. Вот так это выглядит в wireshark:

Neighbor Solicitation и Neighbor Advertisement в Wireshark

Посмотреть список MAC-адресов в linux можно командой:

Это аналог команды arp -n – он показывает кэш MAC-адресов в локальной сети. У них есть несколько состояний, вот граф возможных переходов с сайта technet:

Сбросить этот кэш можно так:

После этого все записи переходят в состояние FAILED и через несколько секунд удаляются:

Как я писал в самом начале – здесь приведена лишь минимально необходимая для понимания работы IPv6 информация. Тема эта огромная, и полное описание займет не одну книгу.

Читайте также: