Ipv6 для google – Ready for the future of the Internet?

IPv6, не дожидаясь провайдера

Держу пари: немногие из читателей обратили внимание на то, что 8 июня 2011 г. прошел так называемый World IPv6 Day. В этот день многие сетевые операторы, интернет-провайдеры и владельцы сайтов перевели свои ресурсы в режим работы, предполагающий полноценную одновременную поддержку и привычного нам IPv4 (который мы до сих пор знали как просто IP), и нового IPv6. Отсутствие громких сообщений и широкого резонанса свидетельствует о том, что достаточно масштабный эксперимент завершился вполне удачно и в дальнейшем мы по-прежнему можем рассчитывать на гладкую работу Интернета. Отвлеченному человеку вышесказанное может показаться пустяком, но с World IPv6 Day действительно были связаны определенные переживания.

Прежде всего, давайте разберемся, что же именно в этот день произошло, и каким образом это касается (или нет) каждого из нас. Дело в том, что по сей день подавляющее большинство веб-сайтов доступны исключительно по протоколу IPv4, т. е. даже если их инфраструктура формально и поддерживает IPv6, то символьное имя разрешается DNS именно в IPv4. Для заведомого использования IPv6-ресурсов, как правило, нужно указывать специальные имена — к примеру, ipv6.google.com (хотя сама по себе комбинация символов «ipv6» ни о чем не говорит).

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

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

  • 4 секунды для Mac OS X;
  • 20 секунд для Windows;
  • 0—180 секунд для Linux.

Причем если конкретный сайт доступен по нескольким IPv6-адресам, то задержка вырастает в соответствующее число раз. Как при этом поведут себя различные программы, предсказать довольно сложно. Но в любом случае, эта проблема не должна была стать массовой, эксперты оценивали долю возможных «потерпевших» всего в 0,05% от общей Интернет-аудитории, хотя, конечно, любому было бы неприятно попасть в их число. Поэтому участники World IPv6 Day больше заботились не о нас, а о собственной репутации: ведь для непосвященного ситуация выглядела бы так, будто их ресурс «лежит». Это, кстати, и есть основная причина, по которой никто не торопится обеспечивать доступ по IPv6.

Впрочем, определенная забота о простых смертных все же имела место. Та же Google, к примеру, еще в Chrome 11.0.696.71 ограничила таймауты при работе по IPv6 величиной всего 300 мс. В свою очередь, Microsoft выпустила специальный FixIt-апплет для тех пользователей Windows, у кого все-таки возникли бы проблемы с доступом к популярным Интернет-ресурсам; он просто делает приоритетным протокол IPv4.

С подобными проблемами, конечно, можно будет столкнуться и в будущем — крупнейшие интернет-компании настолько вдохновились успехами World IPv6 Day, что оставили часть второстепенных ресурсов функционировать в «экспериментальном» режиме. В качестве примеров — www.xbox.com или developers.facebook.com, а в дальнейшем таких сайтов будет становиться все больше.

Рис. 2. Сайт www.xbox.com отзывается и по IPv4, и по IPv6 — чтобы убедиться в этом, достаточно использовать в команде ping ключи -4 и -6 соответственно. Без ключей ping использует приоритетный протокол, которым по умолчанию является IPv6 — если он, конечно, активен.

Также специалисты опасались, что World IPv6 Day привлечет внимание хакеров, которые могут поставить собственный эксперимент — к примеру, попытаться атаковать какие-то узлы сетевой инфраструктуры. Аргументом служило то, что поддержка IPv6, особенно его новых возможностей, еще недостаточно отлажена и вполне может оказаться легко уязвимой. Но ведь хакеры находятся в аналогичном положении, им тоже нужно адаптировать свои инструменты и методы. Кроме того, с их стороны это был бы чисто «научный» эксперимент, так как пользователи все еще предпочитают не задумываться о IPv6: хотя у некоторых крупных сетевых операторов 8 июня IPv6-трафик удваивался (причем львиная доля его приходится на P2P), в абсолютных цифрах он все равно не поднялся выше доли процента. Так или иначе, но ни о каких инцидентах информации не поступало, хотя, опять же, исключить их в будущем нельзя.

Почему IPv6?

В этом месте у многих наверняка возникнет закономерный вопрос: зачем вообще внедрять IPv6, если без него все прекрасно работает, а с ним могут быть связаны различные проблемы? Однако ответ на него не менее очевиден для тех, кто хоть немного в курсе дела: адресов IPv4 очень мало, свободных практически не осталось — занимающаяся их распределением организация IANA (Internet Assigned Numbers Authority) раздала последние блоки еще 3 февраля 2011 г. Естественно, в распоряжении региональных интернет-регистраторов (RIR) какое-то количество адресов еще имеется, но предположительно через год по крайней мере один из них тоже останется с пустыми руками. Также свободные адреса имеются у локальных провайдеров и крупных организаций (вроде Google и Microsoft), которые в свое время запрашивали их с большим запасом. Последние даже нашли юридические лазейки, чтобы выкупать остатки друг у друга (хотя в принципе это не было предусмотрено). Но так или иначе — ясно одно: 30 лет назад создатели IPv4 слишком самонадеянно посчитали 4 миллиарда (232) достаточно большим числом.

Западные журналисты склонны излишне драматизировать сложившуюся ситуацию, называя ее не иначе как IPcalypse или ARPAgeddon (от названия организации ARPA, или Advanced Research Projects Agency, чья сеть ARPAnet была прообразом Интернета). На самом деле все не так страшно, особенно в ближайшей перспективе. Во-первых, World IPv6 Day подтвердил состоятельность идеи так называемого «двойного стека», подразумевающей длительное сосуществование протоколов IPv4 и IPv6, которое позволит постепенно решить все возникающие технические проблемы. Во-вторых, в нашем распоряжении имеется технология NAT, позволяющая прекрасным образом пользоваться «фиктивными» адресами.

Однако долгосрочная перспектива, если не приложить достаточных усилий, выглядит не такой уж радужной. После реального исчерпания IPv4-адресов новые ресурсы будут работать уже только по IPv6, так что никакой «двойной стек» сам по себе не поможет добраться до них по IPv4. Далее, масштабное внедрение NAT провайдерами и сетевыми операторами таит в себе целый ряд неприятных моментов — и ограничения в работе с P2P-системами на самом деле еще мелочь. Массовая трансляция адресов существенно увеличит нагрузку на сетевую инфраструктуру, а кроме того может вызвать неадекватные реакции со стороны систем безопасности, которым, к примеру, будет сложно отличить наплыв пользователей из-за NAT от настоящей DDoS-атаки.

Справиться с этими и подобными явлениями как раз и призван протокол IPv6: давайте разберемся, за счет чего.

Что нового в IPv6

Главная новость для конечных пользователей состоит в том, что IPv6 оперирует 128-битными адресами против 32-битных в IPv4. Типичный IPv6-адреc записывается шестнадцатеричными цифрами таким образом:

2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d

В каждой группе, отделенной двоеточиями, ведущие нули могут опускаться, а двойное двоеточие (которое может встречаться только один раз) обозначает последовательность нулевых групп, обеспечивающую корректную длину всего адреса. Т. е. нулевой адрес может выглядеть просто как «::». Хотя в общем случае пытаться запоминать такие конструкции практически бесполезно, их все же можно использовать — к примеру, в адресной строке современных браузеров, заключая в квадратные скобки.

Даже если не вдаваться в математические подсчеты, понятно, что количество IPv6-адресов измеряется в полном смысле астрономическим числом. На самом деле, на текущий момент бо́льшая часть адресного пространства, порядка 85%, зарезервирована на будущее (к примеру, если нынешняя система распределения окажется не совсем удачной, будет возможность быстро ее скорректировать), но все равно ясно, что оперировать каждым конкретным адресом невозможно — слишком велики будут таблицы маршрутизации. Поэтому система задумана иерархической: в частности, адреса будут распределяться подсетями /48, т. е. первые 48 бит формируют так называемый глобальный идентификатор (префикс), следующие 16 бит будут определять подсеть, а следующие 64 — интерфейсы. С одной стороны, это обеспечит все разумные и неразумные потребности, с другой — существенно упростит маршрутизацию. Понятно, что префикс длиной в 64 бита позволяет зашить довольно много информации — так, если глобальные («обычные») IPv6-адреса выделяются в диапазоне 2000::/3, то, забегая несколько вперед, 2001::/32 обозначают Teredo-адреса, а 2002::/16 — 6to4. Соответственно, с корректным выявлением и обработкой двух последних не должно возникнуть никаких проблем.

Кроме того, в IPv6 имеются так называемые «уникальные локальные» адреса (диапазон fc00::/7) — по сути, аналоги зарезервированных в IPv4 для организации NAT. Они автоматически выделяются каждому интерфейсу, причем специальный алгоритм генерирует их на основе MAC-адреса таким образом, чтобы с высокой вероятностью действительно обеспечить их уникальность. В частности, это свойство означает априори готовность любой локальной сети к работе по IPv6 без дополнительной настройки и даже без DHCP, что, к примеру, очень удобно для организации так называемых спонтанных (ad-hoc) сетей.

Как видите, IPv6 — вовсе не «расширенный IPv4», тем более что обратной совместимости между ними нет. Разрабатывать IPv6 (первоначально его называли IPng, IP next generation) начали еще в 1992 г., первые спецификации появились в 1996 г., и только в 2004 г. началось, по сути, его реальное использование — с добавления соответствующих DNS-записей (обычно их условно обозначают AAAA, против A для IPv4) для японского и корейского национальных доменов. Кстати, нет никакой тайны и в том, почему за IPv4 следует сразу IPv6 — номер 5 успели задействовать для еще одного экспериментального протокола, предназначавшегося для передачи аудио и видео.

Соответственно, IPv6, как более прогрессивный и созданный с пониманием реальных ограничений своего предшественника, содержит немало и функциональных улучшений, прежде всего в области маршрутизации. Кроме уже упоминавшейся иерархической системы сюда же можно отнести освобождение маршрутизаторов от разбиения пакетов (теперь этим должна заниматься передающая сторона, что при определенных обстоятельствах как раз и может стать одним из источников уязвимостей) и подсчета контрольных сумм (на уровне IP они просто исчезли за ненадобностью). При этом максимальный размер пакетов может достигать 4 ГБ (так называемые «джамбограммы»), что, впрочем, найдет применение только в каких-то специальных случаях — к примеру, в суперкомпьютерах. Появились также многоадресное вещание, новые возможности QoS (к примеру, специальное поле срочности доставки, что особенно пригодится при потоковой передаче аудио и видео), IPSec стал обязательным и пр.

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

Откуда берутся проблемы с IPv6

Но раз все должно быть хорошо, то почему мы говорим о каких-то проблемах? Действительно, на сегодняшний день можно считать, что сам по себе Интернет (на уровне корневой инфраструктуры) к IPv6 вполне готов, и то же самое, скорее всего, можно сказать о крупных сетевых операторах. Гораздо хуже дело обстоит с провайдерами доступа — вот они совсем не торопятся: тех, что официально начали поддерживать IPv6 на просторах СНГ, можно пересчитать по пальцам. Хотя отчасти их можно понять — на самом деле мало кто из их абонентов может полноценно воспользоваться IPv6. Дело в том, что подавляющее большинство пользовательского оборудования (модемы, маршрутизаторы, беспроводные точки) IPv6 не поддерживают. Соответствующие устройства непросто найти даже среди новых моделей — что уж говорить о тех, что были выпущены несколько лет назад.

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

И все же, снова утешу читателей — не все плохо. Описанные выше проблемы ни для кого не тайна, и IPv6 содержит целый ряд стандартных механизмов для своего использования даже без поддержки со стороны провайдера. К тому же, все сравнительно современные ОС и значительная часть прикладного ПО прекрасно работают с IPv6.

Как приобщиться к IPv6

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

Все дальнейшее относится к Windows 7, в которой IPv6 по умолчанию включен. В Windows Vista отличий быть не должно, в Windows XP с последним сервис-пакетом IPv6 необходимо предварительно установить, к примеру, таким образом:

netsh interface ipv6 install

Эта и другие команды должны выполняться от имени администратора, в Windows 7 для этого проще всего запустить с административными полномочиями командную строку.

Вариант первый — 6to4. Использование возможно в том случае, если у компьютера статический «белый» IPv4-адрес. Это принципиально, так как именно на его основе должен быть сформирован уникальный глобальный IPv6-адрес. Для активации достаточно выполнить всего одну команду:

netsh int ipv6 6to4 set relay 192.88.99.1 enabled 1440

Здесь 192.88.99.1 представляет специальный широковещательный (anycast) адрес, посредством которого находятся шлюзы 6to4. Один из них, независимо от своего размещения (маловероятно, что у отечественного провайдера), и будет задействован в результате, и на него будет маршрутизироваться весь 6to4-трафик. Соответственно, возможны проблемы с производительностью, хотя, учитывая малую распространенность IPv6, ни о чем подобном пока не сообщалось.

На случай, если компьютер находится за NAT, имеется другой способ под названием Teredo (аналог в Linux и Mac OS X — Miredo). Он более универсален, но требует и дополнительной настройки. Прежде всего, в Windows 7 Teredo присутствует, но в основном предназначен для самостоятельного использования различными сетевыми приложениями. Поэтому, в частности, в отсутствие IPv6-трафика ОС его быстро деактивирует. Соответственно, вначале нужно изменить такое положение дел в редакторе групповых политик (gpedit.msc): найти в разделе Computer Configuration → Administrative Templates → Network → TCPIP Settings → IPv6 Transition Technologies параметр Teredo Default Qualified и установить его в значение Enabled.

Рис. 3. Во избежание недоразумений и дополнительных действий, Teredo лучше сразу сделать постоянно активным.

Затем нужно в сетевых настройках назначить явный IPv6-адрес, к примеру 2002:c0a8:102:: (это аналог 192.168.1.2; при желании другие можно вычислить здесь), и указать длину префикса подсети — 48.

Затем — выполнить команду

route print

и в разделе Interface List выяснить номер интерфейса Teredo. Допустим, он равен 21, тогда осталось выполнить последнюю команду

netsh interface ipv6 add route ::/0 interface=21

подождать несколько секунд и проверить работоспособность IPv6:

ping ipv6.google.com

В некоторых случаях, впрочем, и после этого Teredo остается неактивным, тогда его нужно активировать принудительно:

netsh int teredo set state type=client
netsh interface ipv6 delete route ::/0 interface=21
netsh interface ipv6 add route ::/0 interface=21

Если внешний IPv4 выделяется динамически, две последние команды придется повторять после каждого выключения/включения маршрутизатора/модема либо при каждой смене адреса (обычно раз в сутки), для чего лучше всего создать пакетный файл.

Также в зависимости от настроек вашего маршрутизатора в первой команде иногда нужно указать другой тип клиента:

netsh int teredo set state type=enterpriseclient

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

Teredo имеет ряд особенностей, о которых следует знать. Во-первых, его поддержку формируют два типа серверов: вспомогательные, которые нужны только на этапе конфигурирования (один из них развернут самой Microsoft), и шлюзы, обеспечивающие обращение к реальным IPv6-адресам путем расшифровки инкапсулированного трафика (взаимодействие между Teredo-адресами происходит напрямую). Соответственно, производительность может зависеть от загрузки последних. Во-вторых, надо иметь в виду, что Teredo позволяет принимать входящие соединения, что создает потенциальную брешь в защите. На текущий момент это вряд ли является большой угрозой, т. к. сканировать IPv6-адреса (а Teredo даже сложнее, чем реальные) бесперспективно, да и мало какие приложения «слушают» IPv6. Но в принципе стоит предусмотреть дополнительную защиту с помощью брандмауэра — Windows Firewall будет достаточно.

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

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

В общем случае второй вариант кажется более простым и потому предпочтительным. В случае сервиса gogo6 он реализуется следующим способом:

  1. Чтобы скачать клиентское ПО, придется зарегистрироваться. Хотя, забегая вперед, в дальнейшем регистрационные данные не являются обязательными. Более того, gogoCLIENT вроде бы распространяется с некоторыми дистрибутивами Linux.
  2. Установка клиентского ПО проходит достаточно традиционно, поэтому англоязычный интерфейс не является большим ограничением. Как обычно, придется согласиться с лицензией и при необходимости выбрать инсталляционную папку.

    Рис. 4. Инсталляционная процедура ориентирована на наиболее стандартное применение, так что вмешиваться в настройки нет необходимости

  3. По умолчанию для установки отмечены все необходимые компоненты, рекомендую так и оставить. Tunnel Driver необходим для «пробивания» NAT (а также для более экзотического и совершенно не актуального сегодня туннелирования IPv4 через IPv6).
  4. Драйвер подписан, но его установку все равно необходимо подтвердить.

    Рис. 5. Сетевой драйвер будет делать за вас всю техническую работу.

  5. Перезагрузка не потребуется, можно автоматически запустить gogoCLIENT с последнего инсталляционного экрана.

    Рис. 6. Как правило, нет необходимости вникать в настройки gogoCLIENT, не обязательно даже вводить свои регистрационные данные — достаточно нажать кнопку Connect

  6. Вкладки Basic достаточно в подавляющем большинстве случаев; она предполагает, что клиентское ПО самостоятельно выберет оптимальные параметры. Advanced и Log нужны разве что для экспериментов и решения проблем (с которыми мне столкнуться ни разу не довелось). Подключаться можно анонимно или со своими регистрационными данными. Во втором случае вы получите статический IPv6-адрес и возможность использования своего компьютера в качестве IPv6-маршрутизатора. Для обычного доступа к Интернету по IPv6 все это лишнее. Флажок «Launch the gogoCLIENT service at system startup» также следует оставить включенным, это обеспечит автоконфигурацию, необходимую, если IPv4-адрес вам назначается динамически.

    Рис. 7. При желании можно поэкспериментировать с настройками — к примеру, чтобы добиться лучшей производительности соединения.

  7. Через несколько секунд после нажатия кнопки Connect связь с сервером gogo6 будет установлена и IPv6 активизирован (напомним, теперь при обращении к Интернету приоритет будет отдаваться именно ему).

    Рис. 8. Вуаля! Все работает без малейших усилий с вашей стороны.

Проверка

На сегодня существуют множество ресурсов, позволяющих проверить корректность функционирования IPv6. Самое простое — зайти в любом современном браузере на сайт, заведомо доступный только по IPv6 — к примеру, на ipv6.google.com. Также несложно убедиться в приоритетности нового протокола:

ping www.xbox.com

При этом адрес должен разрешаться именно по IPv6.

На сайте www.kame.net вы должны увидеть «пляшущую» черепашку (в случае использования Teredo она обычно остается неподвижной).

Более подробную диагностику соединения можно выполнить на сайте test-ipv6.com:

Рис. 9. Полная готовность к использованию обоих протоколов.

Наконец, уже имеются и специальные ресурсы для проверки производительности IPv6-соединения, хотя туннелирование вносит слабо предсказуемые флуктуации. Speedtest на ipv6.wcclan.net слишком нестабилен и дает чересчур большой разброс результатов, но среднее значение скорости загрузки в моем случае составляет около 10 Мбит/с:

Рис. 10. К сожалению, адекватно провести тест в Интернете крайне сложно. К примеру, ipv6.wcclan.net как правило показывает для IPv6 пропускную способность, вдвое меньшую, чем она есть в реальности для IPv4.

Примерно такие же результаты и на другом ресурсе — ipv6-test.com/speedtest (скорость по IPv4 соответствует действительности):

Рис. 11. На ipv6-test.com картина похожая, лучший результат, которого удалось добиться в одном из повторов — потеря 25% пропускной способности по сравнению с IPv4. Вероятно, несколько улучшить ситуацию можно, поэкспериментировав с выбором сервера в gogoCLIENT.

Понятно, что потери производительности будут всегда — как минимум, они обусловлены накладными расходами на туннелирование пакетов. Однако значительную роль играют расположение и загрузка туннельного сервера, который можно явно выбирать на вкладке Advanced утилиты gogoCLIENT.

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

www.ixbt.com

IPv6 — он рядом. Часть 1 / Habr

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

Про нужность протокола IPv6, про нехватку адресов IPv4 писалось сотни раз. Я не буду сто первым, почитайте сами.

Дайте мне новые интернеты!
А кто их даст? — спросите вы? Но не все так плохо, так как существуют компании, которые предоставляют доступ к IPv6 совершенно бесплатно, через туннель поверх IPv4 соединения. То есть вы получаете «завернутый» трафик IPv6 по вашему существующему IPv4 соединению.
Вот неполный список таких добрых компаний:
  • Hurricane Electric (у нее много сервисов, нас в первую очередь tunnelbroker.net)
  • Freenet6 (удобно для тех, кто хочет «в один клик», также полезно для пользователей за NAT-ом)
  • SixXS (тоже популярная сеть, но про нее ничего не знаю)
Не сочтите за пиар, но в дальнейшем будет рассматриваться Hurricane Electric, так как я работал именно с ним и он помимо туннелей предоставляет много чего еще полезного.
Прежде чем начать
Пусть у вас есть:
1) Доступ в IPv4 интернет и статический белый IP адрес
2) Домашний сервер с установленным Linux (показано на примере Debian)
3) Клиентские машины (Windows, Linux, Mac — не важно)
Позже этот список будет расширен, но для минимальной конфигурации достаточен.

Регистрируетесь на TunnelBroker.net ничего заумного тут нет, но не кидайтесь сразу создавать туннель, успеете.

Выберите сервер, для этого в помощь Looking Glass, он вам попингует ваш сервер с серверов, предоставляющих туннели. Чем короче пинг — тем лучше, можно еще traceroute посмотреть и выбрать вариант с меньшим числом маршрутизаторов по пути.

Начнем
Теперь время настроить туннель и получить доступ к IPv6 на вашем домашнем сервере.

Зарегистрируйте туннель. Для этого выберите Create Regular Tunnel в личном кабинете TunnelBroker, введите IPv4 адрес вашего сервера, укажите сервер, который вы выбрали.
Ваш конец будет сразу протестирован на получение пакетов с протоколом номер 41, доступность которого необходима для работы туннеля.

Обратите внимание, что для быстрого старта уже готовы примеры настроек для разных операционных систем (1 на скриншоте), ваш клиентский IPv6 адрес отличается (2 от 3) по префиксу от подсети Routed /64 одной цифрой, часто это не замечают. А также можете сразу заполнить rDNS (4) как на скриншоте, пока будет обновляться вы успеете настроить все остальное.

Проверьте работу туннеля. Для этого скопируйте конфигурацию для Linux-route2 и выполните в терминале из под root. Попробуйте ping6 ipv6.google.com, если заработало, поздравляю, туннель работает. Можно для достоверности попинговать ваш Client IPv6 address из Looking Glass (который использовали при выборе сервера).

Сделайте его статическим. В мире IPv6 навсегда отпала потребность в динамических адресах, поэтому значения, которые вы видели никогда не поменяются (если конечно у вас статический IPv4 адрес, да даже если сменится, то поменяется только Client IPv4 address).
Откройте в текстовом редакторе (например nano) файл /etc/network/interfaces (может быть другим, зависит от дистрибутива, но это так на Debian, Ubuntu и многих других)

Добавьте в конец файла описание нового интерфейса примерно так:

auto  he-ipv6
iface he-ipv6 inet6 v4tunnel
  address 2001:470:abcd:abcd::2
  netmask 64
  gateway 2001:470:abcd:abcd::1

  endpoint 216.11.22.33
  local 11.22.33.44
  ttl 255

Назначение полей:
1) address — ваш Client IPv6 address
2) gateway — ваш Server IPv6 address
3) endpoint — ваш Server IPv4 address
4) local — ваш Client IPv6 address

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

MTU-related butthurt prevention
Но не спешите перезагружать сервер, так как туннель у вас запущен (когда вы его проверяли). Теперь нужно проверить такую вещь как MTU. MTU — это максимальный размер пакета, передаваемого над канальным уровнем модели OSI. В случае нашего туннеля этот размер совпадает с максимальным размером пакета IPv6 поверх туннеля. В силу того, что происходит инкапсуляция пакетов IPv6 в пакеты IPv4, к нему добавляются заголовки пакетов IPv4, следовательно MTU туннеля (максимум 1480) как минимум на 20 меньше MTU интерфейса, по которому вы выходите в интернет по IPv4 (как правило это 1500, но может быть меньше). Если у вас работает
ping6 ipv6.google.com
Но вылетает с ошибкой
wget -6 -O /dev/null http://he.net
Тогда 99% — проблема именно с MTU.

Вычисляем MTU. Так как IPv4 пакеты можно фрагментировать, то есть если он слишком большой для передачи по какому-нибудь каналу, то он может быть порезан на кусочки. Однако к каждому такому куску добавляются заголовки и эффективность сильно снижается. А если пакет не влезает в интерфейс на сервере — то и вовсе работать не будет. Для вычисления MTU с учетом промежуточных узлов будем пинговать сервер нашего туннеля пакетами, которые фрагментировать нельзя.
Делается это так (где в конце должен стоять ваш Server IPv4 address):

ping -M do -s 1472 216.66.84.46
Если пингуется нормально, то ничего менять не надо, пакеты до 1500 байт (1472 + 28 байт) включительно проходят нормально. Если же ответ вида:
From 11.22.33.44 icmp_seq=1 Frag needed and DF set (mtu = 1488)
Тогда пытайтесь уменьшить размер пакета до достижения успеха. Потом увеличивать его до тех пор, пока будет пинговаться.

Исправляем MTU. Пусть у вас максимум при ping -M do -s 1464 … Тогда берем 1472 — 1464 = 8 потом 1480 — 8 = 1472 И так мы получили, что в этом случае ваш MTU туннеля должен быть равен 1472. Теперь идем обратно в Tunnel Details, вкладку Advanced и выбираем MTU не больший вашего, но ближайший к вашему. Перезапускаем туннель (либо опускаем, поднимаем интерфейс, либо перезагружаем систему). Проверяем снова:

wget -6 -O /dev/null http://he.net
Если не успела смениться фаза луны, то у вас больше нет проблем с MTU туннеля.
Раздача интернетов
Да, на сервере уже есть работающий IPv6, но мы же хотим предоставить его всем компьютерам в доме. Считается, что сервер находится в той же локальной домашней (офисной) сети, что и клиенты и в том же широковещательном домене Ethernet.

Разрешаем IPv6 forwarding. В случае Debian за это отвечает служба sysctl, у которой очень много настроек, в основном сетевых параметров уровня ядра.
Редактируем файл /etc/sysctl.conf

net.ipv6.conf.all.forwarding=1
net.ipv6.conf.default.forwarding=1
Применяем изменения (в консоли):
sysctl -p
После этого ваш сервер больше не сможет назначать себе IPv6 адрес автоматически, но нам это и не нужно.

Устанавливаем демон анонсирования подсети. Для этих целей (stateless autoconfiguration отличается от DHCPv6 тем, что адреса назначаются машинами самостоятельно в соответствии с MAC адресом, что хорошо в борьбе с ARP спуффингом) предназначен демон radvd (с DVD дисками не имеет ничего общего).
Установим его:

apt-get install radvd
И сразу остановим:
/etc/init.d/radvd stop

Настраиваем radvd

. Тут все просто. Сначала найдите в Tunnel Details ваш префикс Routed /64.
Редактируем файл /etc/radvd.conf

interface eth0
{
   AdvSendAdvert on;
   AdvLinkMTU 1480;
   prefix 2001:470:abcd:abcd::/64
   {
       AdvOnLink on;
       AdvAutonomous on;
   };
};
Где interface — сетевой интерфейс, смотрящий в вашу локальную сеть, prefix — это ваш Routed /64, а AdvLinkMTU — это MTU вашего туннеля.
Автоматическая настройка DNS не рассматривается, так как требуются дополнительные действия на всех клиентских машинах под Linux, а Windows вообще не поддерживает получение DNS через Router Advertisement, только через DHCPv6 (который весьма неудобен). Поэтому проще прописать на всех клиентских машинах DNS сервера Hurricane Electric (ваш Anycasted IPv6/IPv4 Caching Nameserver). В Windows это делается в параметрах сетевого подключения, в Linux редактируется файл /etc/resolv.conf

Настраиваем сетевой интерфейс

. Если вы прямо сейчас запустите radvd (не надо пока), то клиенты получат свои заветные адреса, но ничего работать не будет. Дело в том, что пакеты от клиентов в интернет уходить будут, а обратно нет, так как, попав на ваш сервер, они не найдут вас в сети в силу отсутствия маршрута к клиентам вашей подсети (Routed /64). Можно, конечно, прописать только маршрут, но лучше добавить интерфейсу на сервере первый адрес из этой подсети, так принято делать, к тому маршрутизация будет срабатывать чуть-чуть быстрее.
Находим в файле /etc/network/interfaces настройки интерфейса (смотрящего в локальную сеть), в моем случае eth0, которые выглядят примерно так:

allow-hotplug eth0
iface eth0 inet static
  address 192.168.6.6
  netmask 255.255.255.0
  broadcast 192.168.6.255
И в конце секции дописываем настройки IPv6, в итоге получается (все вместе):
allow-hotplug eth0
iface eth0 inet static
  address 192.168.6.6
  netmask 255.255.255.0
  broadcast 192.168.6.255

iface eth0 inet6 static
  address 2001:470:abcd:abcd::1
  netmask 64
Где часть адреса до двойного двоеточия (привет C++) соответствует вашему Routed /64. Будьте аккуратны при редактировании этого файла. Так я однажды случайно поломал настройки сети и не мог зайти на сервер по SSH, пришлось искать монитор.
Для сиюминутного назначения адреса выполняем:
ip -6 addr add 2001:470:abcd:abcd::1/64 dev eth0
Обратите внимание, что у адреса в этой команде указывается длина префикса (/64) на конце, это важно. Ну и имя интерфейса поменять в случае чего нужно не забыть.

Проверяем работу. Пришло время проверить свеженастроенную IPv6 сеть.
Запускаем radvd

/etc/init.d/radvd start
И сразу все машины в сети получили IPv6 адреса в вашей Routed /64 подсети на основе своего MAC адреса (во всяком случае машины на Windows не потребовали переподключения).
На клиентских машинах (мы же не забыли прописать DNS) открываем test-ipv6.com

Если у вас тоже все зеленькое — поздравляю! Вы приобщили свою сеть к миру IPv6.
Google, YouTube тоже должны работать через IPv6.
PROFIT !!!
Маленький бонус. Моя, например, подсеть размешена в Амстердаме, с пингами все хорошо. Но более высокая подсеть Hurricane Electric (2001:470::/32) зарегистрирована в США и все ее подсети распознаются как США вне зависимости от географии. Поэтому вы можете все сервисы Google, которые доступны только на территории США, не используя американский прокси и не жертвуя длиной пинга. Поэтому вместо абстрактной пользы мы имеет совершенно конкретные преимущества:
  1. Глобальная доступность всех клиентов — прощай NAT
  2. Все думают, что вы американец
  3. Быстрее работают торренты, в основном за счет пиров с включенным Teredo
  4. Настраивая IPv6 сегодня, вы будете готовы к его наступлению завтра, а возможно сможете заработать на его настройке во время ажиотажа
  5. Выделенная подсеть — необъятный простор для извращений, причем бесплатный. Вам доступен rDNS, DNS неймсервер от того же Hurricane Electric, с поддержкой динамического DNS и с очень милым интерфейсом.
В следующих сериях. Это первая часть цикла статей об IPv6, но я могу сразу сказать, что будет в следующих частях:
  • Часть 2. Настройка фаервола. Борьба с NAT. Настройка конфигурации с несколькими серверами, объединение офисов. Настройка OpenVPN + IPv6, создание подсетей, Routed /48, Dualstack.
  • Часть 3. Работа с DNS, rDNS. Размещение своих сервисов в IPv6, Native IPv6. Чем хорош и плох Native IPv6, предоставляемый хостерами. Собственный Native IPv6, как зарегистрировать сеть для своей фирмы, к чему подключить.
  • Часть 4. Онлайн сертификация на навыки в области IPv6 от Hurricane Electric. Теория, необходимая для прохождения сертификации (step-by-step инструкции для читеров не ждите, хотя уже есть в интернетах). Будущее IPv6.
Я не обещаю быстрый выход последующих частей, но часть 2 ожидается через недели 2-3. К сожалению, в следующих частях уровень доступности изложения сохранить не удастся, так уровень навыков целевой аудитории тоже будет выше.

Будьте готовы к IPv6, его приход неизбежен.

habr.com

Скоро все сервисы Google будут доступны через IPv6 / Habr

Еще в январе, мы присоединились к Интернет Обществу и нескольким ведущим интернет-компаниям, чтобы объявить о Всемирном дне IPv6. Объявление станет призывом для принятия нового интернет-протокола. Менее чем через шесть месяцев, мы выросли до 400 организаций. Мы считаем, что IPv6 является единственным долгосрочным решением проблемы адресного истощения IPv4, и его развертывание имеет решающее значение для дальнейшего роста открытого интернета.

Начиная с этого момента, на протяжении 24 часов, в полночь 8 июня (вторник днем ​​в США, в среду утром в Азии), все участники общества включат поддержку IPv6 на своих сайтах. Для нас это будет означать практически все наши сервисы, включая Поиск, Gmail, YouTube и многое другое.

Вы даже не заметите перехода. У большинства (99,95%) людей будет доступ к сервисам без всяких проблем: либо они будут подключаться по протоколу IPv6, либо их системы будут успешно возвращены к IPv4. Однако, как и любая технология следующего поколения, может быть довольно болезненна при переходе. По нашим оценкам, 0.05% систем могут не вернуться к IPv4, так что для некоторых людей сайты Google, Facebook, Yahoo, Bing и другие могут открываться медленно или быть недоступными. Это может быть вызвано некорректно настроенным или неправильным сетевым оборудованием.

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

Мы также думали о том, как лучше предупредить тех, у кого могут возникнуть проблемы. Поэтому мы сделали уведомления в поиске Google, направляя к тестовой страничке и справочной статье. Если вам интересно, вы можете проверить своё соединение на ipv6test.google.com.

habr.com

Настройка публичных DNS-серверов Google в Windows / PROXY6.net

Причина, по которой пользователи чаще всего используют публичные DNS сервера — это обход примитивных блокировок сайтов провайдерами.
DNS-сервера 8.8.8.8 и 8.8.4.4 — это публичные сервера DNS от Google (Google Public DNS) — альтернативные DNS-сервера с закрытым исходным кодом, которые разработаны и поддерживаются корпорацией Google. Помимо IP-адресов TCP/IPv4, публичные DNS-сервера Google имеют ещё и IPv6 адреса, которые в скором времени станут очень актуальными:

2001:4860:4860::8888
2001:4860:4860::8844

Давайте приступим к настройки:

1. Нажать «Пуск», выбрать пункт «Панель управления»:


2. В панели управления слева в разделе «Сеть и Интернет» кликнуть по ссылке «Просмотр состояния сети и задач»:
3. В открывшейся странице перейти по ссылке «Изменение параметров адаптера»:
4. На подключении, для которого вы хотите задать DNS, нажать правой кнопкой мыши. Выбрать пункт «Свойства»:
5. В списке компонентов найти пункт «Протокол Интернета версии 4 (TCP/IPv4)», кликнуть по нему один раз, а потом нажать на кнопку «Свойства», или кликнуть двойным кликом:
6. В открывшемся окне выбрать «Использовать следующие адреса DNS-серверов» и ввести в поля адреса 8.8.8.8 и 8.8.4.4 Нажать «OK» в этом окне и предыдущем:
После этого сразу начнут использоваться новые адреса DNS-серверов.

proxy6.net

Cвой собственный IPv6 сервер брокер (6in4) / Habr

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

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

Для начала вам потребуется сервер который обладает IPv6 подключением, я буду использовать сервер от DigitalOcean за 5$ c OS Ubuntu последней версии.


Настраиваем сервер


Обратите внимание! часть ПО можно не устанавливать, оно отмечено как опциональное, его стоит установить, только если у вас динамический IP и вы хотите автоматически настраивать доступ при обновлении IP

После получения сервера вам надо обновить доступные пакеты на нем:

sudo apt-get update -y
sudo apt-get upgrade -y

Установить git, sipcalc, apache и php (2 последних — опционально)
sudo apt-get -y git sipcalc

Если вы не планируете авто-настройку при смене IP адреса, данную команду можно пропустить.
sudo apt-get -y apache2 php libapache2-mod-php php-mcrypt

Теперь настала время скачать скрипт который поможет настроить туннель github.com/sskaje/6in4
git clone https://github.com/sskaje/6in4.git
cd 6in4

Копируем скрипт в /bin для привычного нам вызова
sudo cp ./bin/6to4 /bin/6to4

Выдаём права за на запуск
sudo chmod +x /bin/6to4

Копируем файл настроек
sudo cp ./etc/config.ini /etc/config.ini

Редактируем файл с настройками
ifconfig | grep 'inet6 addr:'

$ ifconfig | grep 'inet6 addr:'
          inet6 addr: fe80::000:000:000:000/64 Scope:Link
          inet6 addr: 2a03:000:0:000::00:0000/64 Scope:Global

Нам нужен тот который с препиской Global:

inet6 addr: 2a03:000:0:000::00:0000/64 Scope:Global

Открываем файл с настройками для редактирования:

sudo nano /etc/config.ini

Убираем «;» у строчек:
IPV6_NETWORK=
IPV6_CIDR=
и указываем:

IPV6_NETWORK=2a03:000:0:000::
IPV6_CIDR=48

Нажимаем CNTRL+x, сохраняемся и переходим к добавлению сети:
sudo 6to4 add 1 8.8.8.8

где 8.8.8.8 — ваш внешний IP, узнать его можно, например тут.
В ответ вы получите примерно это:
Please set up tunnel on your machine with following parameters:
    Server IPv4 Address:        99.99.9.9
    Server IPv6 Address:        2a03:000:0:000::1/64
    Client IPv4 Address:        88.8.88.8
    Client IPv6 Address:        2a03:000:0:000::2/64
    Routed /64:                 2a03:g0e0:00g0:3402::/64

Теперь осталось прописать данные настройки в вашем роутере

Пример ниже — настройка Apple Airport:

Другие роутеры настраиваются аналогично.

Настройка маршрутизации на сервере


Теперь вернемся к серверу и настроим маршрутизацию из виртуального интерфейса IPv6 — в основной:
sudo ip6tables -t nat -A POSTROUTING -s 22a03:g0e0:00g0:3402::/64 -o eth0 -j MASQUERADE

2a03:g0e0:00g0:3402::/64 — это ваш Routed /64 или же любой IP который придет на любое ваше устройство с роутера после сохранения настроек

Разрешаем форвар трафика:

sudo sysctl -w net.ipv6.conf.all.forwarding=1

Можно проверять


После этого, сохраните настройки на роутере, перезагрузите роутер. У вас должен был заработать IPv6. На подключенные устройства придут IPv6 адреса.

Проверить работу IPv6 можно тут — ipv6.google.com или ipv6-test.com

Обратите внимание — при смене IP адреса (внешнего), IPv6 у вас пропадет, обновления доступа после смены адреса будет рассмотрено в следующей статье (или же вы можете использовть инструкцию из репозитория github.com/sskaje/6in4)

После настройки IPv6 надо быть бдительным — все ваши устройства внутри вашей домашней сети получат публичный IPv6 адрес! если вы не уверены в защищенности устройств — включите блокировку входящих ipv6 подключений на вашем роутере.

PS Telegram/Youtube/Google сервера работают через IPv6 как и многие другие. Проверить это вы можете выполнив ping6 google.com

habr.com

Как за пару минут настроить на компьютере IPv6 для обхода блокировок

Роскомнадзор может успешно блокировать сервисы, использующие IPv4, поэтому они переходят на параллельное использование стандарта IPv6, адреса в котором заблокировать нереально. Эффективный обход блокировок возможен по протоколу IPv4, который был разработан ещё в 80-х годах. Это связано с крайне ограниченным числом доступных IP-адресов. Протокол IPv6 предоставляет гораздо больше адресов и поддерживается многими провайдерами, но его необходимо настраивать вручную.  Проблема заключается в том, что он не активирован на большинстве устройств.  К счастью, в настройке IPv6 на компьютере нет ничего сложного.
  • Нажмите правой кнопкой мыши на значок интернет-соединения в области уведомлений на панели задач, откройте «Параметры сети и Интернет».
  • Выберите «Настройка параметров адаптера», нажмите правой кнопкой мыши на значок используемого адаптера и тыкните «Свойства».
  • Поставьте галочку у «IP версии 6 (TCP/IPv6)».

Теперь нужно получить настройки IPv6 для роутера и настроить роутер.

  • Перейдите на сайт ipv6.ip4market.ru, укажите своей адрес электронной почты (туда будут отправлены настройки IPv6) и номер телефона (можно левый, но лучше реальный).

  • Откройте в браузере настройки роутера (у разных роутеров разные адреса панели управления) и установите компонент, отвечающий за работу IPv6, если он не установлен.
  • В меню панели управления появится раздел IPv6. Нажмите «Добавить соединение» (или что-то подобное) и внесите настройки, которые были отправлены вам по электронной почте. Сохраните их.

Имейте в виду, что для работы IPv6 требуется, чтобы этот протокол поддерживался вашим провайдером (уточнить это можно в техподдержке), а также роутером и сетевым адаптером. Проверить, настроен ли компьютер на использование IPv6, можно на сайте test-ipv6.com или ipv6-test.com.



Канал iG в Telegram — t.me/iguides_ru

www.iguides.ru

IPv6 — Википедия

Информация в этой статье или некоторых её разделах устарела.

Вы можете помочь проекту, обновив её и убрав после этого данный шаблон.
Возможное официальное изображение
IPv6
Название Internet Protocol version 6
Уровень (по модели OSI) Сетевой
Семейство TCP/IP
Создан в 1996
Назначение протокола Адресация
Спецификация RFC 8200
Основные реализации (клиенты) реализации стека TCP/IP в Microsoft Windows, Linux и BSD
Основные реализации (серверы) реализации стека TCP/IP в Windows, Linux и BSD

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

На конец 2012 года доля IPv6 в сетевом трафике составляла около 1 %[1]. К концу 2013 года ожидался рост до 3 %[2]. Согласно статистике Google на октябрь 2018 года, доля IPv6 в сетевом трафике составляла около 25 %.[3] В России коммерческое использование операторами связи невелико (не более 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-адресов[править | править код]

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

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

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

Тестирование протокола[править | править код]

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

Внедрение протокола[править | править код]

Перевод на IPv6 начал осуществляться внутри Google с 2008 года. Тестирование IPv6 признано успешным[7]. 6 июня 2012 года состоялся Всемирный запуск IPv6[8]. Интернет-провайдеры включат 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-адресов на каждого жителя Земли.

Из IPv6 убраны функции, усложняющие работу маршрутизаторов:

  • Маршрутизаторы больше не должны фрагментировать пакет, вместо этого пакет отбрасывается с 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 байт.

Улучшения IPv6 по сравнению с IPv4:

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

Автоконфигурация (Stateless Address Autoconfiguration — SLAAC)[править | править код]

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

Для настройки других адресов узел может запросить информацию о настройках сети у маршрутизаторов, отправив ICMPv6-сообщение «Router Solicitation» на групповой адрес маршрутизаторов. Маршрутизаторы, получившие это сообщение, отвечают ICMPv6-сообщением «Router Advertisement», в котором может содержаться информация о сетевом префиксе, адресе шлюза, адресах рекурсивных DNS серверов[9], MTU и множестве других параметров. Объединяя сетевой префикс и идентификатор интерфейса, узел получает новый адрес. Для защиты персональных данных идентификатор интерфейса может быть заменён на псевдослучайное число.

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

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

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

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

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

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

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

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

Разработчики IPv6 рекомендуют использовать для определённых категорий приложений следующие коды класса трафика:

Класс трафикаНазначение
0Нехарактеризованный трафик
1Заполняющий трафик (сетевые новости)
2Несущественный информационный трафик (электронная почта)
3Резерв
4Существенный трафик (FTP, HTTP, NFS)
5Резерв
6Интерактивный трафик (Telnet, X-terminal, SSH)
7Управляющий трафик (Маршрутная информация, SNMP)

В отличие от 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). Такой пропуск должен быть единственным в адресе.

Типы Unicast-адресов[править | править код]

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

Соответствуют автосконфигурированным с помощью протокола APIPA IPv4 адресам. Начинаются с FE80:.

Используется:

  1. В качестве исходного адреса для Router Solicitation(RS) и Router Advertisement(RA) сообщений, для обнаружения маршрутизаторов.
  2. Для обнаружения соседей (эквивалент ARP для IPv4).
  3. Как next-hop-адрес для маршрутов.

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

Типы Multicast-адресов[править | править код]

Адреса мультикаст бывают двух типов:

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

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

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

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

2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d

Если две и более групп подряд равны 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-адрес в его формате. Пример:

::ffff:192.0.2.1

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

http://[2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d]/

Если необходимо указать порт, то он пишется после скобок:

http://[2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d]:8080/
IPv6 адресДлина префикса (биты)ОписаниеЗаметки
::128см. 0.0.0.0 в IPv4
::1128loopback адрессм. 127.0.0.0/8 в IPv4
::xx.xx.xx.xx96встроенный IPv4Нижние 32 бита это адрес IPv4. Также называется IPv4-совместимым IPv6 адресом. Устарел и больше не используется.
::ffff:​xx.xx.xx.xx96Адрес IPv4, отображённый на IPv6Нижние 32 бита — это адрес IPv4 для хостов, не поддерживающих IPv6.
64:ff9b::96NAT64 (англ.)Зарезервирован для доступа из подсети IPv6 к публичной сети IPv4 через механизм трансляции NAT64[13][14]
2001::32TeredoЗарезервирован для туннелей Teredo в RFC 4380
2001:db8::32ДокументированиеЗарезервирован для примеров в документации в RFC 3849
2002::166to4Зарезервирован для туннелей 6to4 в RFC 3056
fe80:: — febf::10link-local[15][16]Аналог 169.254.0.0/16 в IPv4
fec0:: — feff::10site-localПомечен как устаревший в RFC 3879 (Аналог внутренних сетей 10.0.0.0/8; 172.16.0.0/12; 192.168.0.0/16)
fc00::7Unique Local UnicastПришёл на смену Site-Local RFC 4193
ff00::8multicast

ru.wikipedia.org

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *