Обзоры

Мой адрес не дом и не улица…

А – IPv4. Вернее, так: все подвластные мне компьютеры сегодня имеют сетевые адреса типа IPv4, т.е. встроены в соответствующую инфраструктуру. IPv4 – тот самый привычный протокол, на который сегодня обычно ссылаются просто как на IP и с помощью которого наши сетевые устройства нумеруются хоть и несколько замысловатым, но, в принципе, легко запоминаемым способом, к примеру так: 192.168.0.1. Исходя из сказанного легко понять, что фактически все современные сети, как локальные так и публичные, базируются именно на IPv4 и при этом вполне неплохо функционируют. Возникает закономерный вопрос, почему же в последнее время поднимается шумиха вокруг грядущего перехода на новый (сравнительно) протокол IPv6? Нужен ли он нам и если да, то отчего и зачем?

Что нужно знать о IPv6?

Обычному пользователю ­– практически ничего. Главное отличие нового протокола от IPv4 заключается в большей длине адреса, 128 бит против прежних 32. Таким образом, всего возможно 2128 адресов, хотя, как обычно, некоторые зарезервированы для специальных целей. Чтобы понять, насколько велико это число, достаточно вспомнить притчу об изобретателе шахмат, предложившем магарадже положить на каждую следующую клеточку доски вдвое больше семян, чем на предыдущую. А в данном случае доска еще вдвое больше. Соответственно, невозможно даже представить, что маршрутизаторы смогут хранить полную таблицу маршрутизации, на текущий момент адреса выделяются только из сравнительно небольшого подмножества всего адресного пространства.

Типичный IPv6-адреc записывается шестнадцатеричными цифрами таким образом: 2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d. В каждой группе, разделенной двоеточиями, ведущие нули могут опускаться. Двойное двоеточие обозначает последовательность нулевых групп соответствующей длины. В любом случае понятно, что пытаться запоминать такие конструкции практически бесполезно. Тем не менее их можно использовать в адресной строке современных браузеров, заключая в квадратные скобки.

Естественно, IPv6 претерпел и некоторые функциональные изменения по сравнению с IPv4. Для повышения производительности сетей ряд нововведений был направлен на то, чтобы разгрузить маршрутизаторы. Теперь они не будут разбивать пакеты (эта задача возлагается на передающую сторону) и считать контрольные суммы (на уровне IP они просто исчезли за ненадобностью), а размер пакетов может достигать 4 ГБ (так называемые джамбограммы), хотя и понятно, что это пригодится только в каких-то специальных случаях, к примеру в суперкомпьютерах. Появились также возможности автоконфигурации, многоадресное вещание и пр.

И, пожалуй, последний момент: почему после IPv4 идет именно IPv6? Да просто номер 5 был использован для экспериментального протокола, предназначавшегося для передачи аудио и видео.

Дело в том, что 30 лет назад, а именно тогда появилась спецификация IPv4, мало кто мог себе представить, что примерно 4 миллиардов IP-адресов нам может не хватить. Ведь кроме всего прочего в системе адресации изначально были задуманы специальные диапазоны «для внутреннего пользования», которые могут совершенно свободно (т.е. одновременно) применяться в любых локальных сетях, доступ которых к Интернету обеспечивается технологией NAT (Network Address Translation). И тем не менее сегодня мы действительно стоим на грани исчерпания этого невероятного на первый взгляд количества.

Если вкратце, то способ распределения IP-адресов выглядит следующим образом: уполномоченная организация IANA (Internet Assigned Numbers Authority) выделяет довольно крупные блоки пятерым региональным регистраторам (RIR) – AfriNIC (African Network Information Centre), APNIC (Asia-Pacific Network Information Centre), ARIN (American Registry for Internet Numbers), LACNIC (Latin American and Caribbean Internet Addresses Registry), RIPE NCC (фр. Réseaux IP Européens + англ. Network Coordination Centre), которые, в свою очередь, раздают их более малыми порциями Интернет-провайдерам и некоторым другим организациям, а уже те – своим непосредственным клиентам. Так вот, 3 февраля 2011 г. IANA рассталась с последними IPv4-блоками, и, по некоторым прогнозам, по крайней мере один из RIR раздаст все имеющиеся у него IPv4-адреса в течение года или чуть большего промежутка времени. После этого определенные запасы еще будут сохраняться у крупных локальных Интернет-провайдеров, но вскоре, очевидно, иссякнут и они.

Итак, прикидочно, на все про все может уйти порядка 18 месяцев. Затем, если верить многочисленным любителям красного словца, наступит IPcalypse или ARPAgeddon (от названия организации ARPA, или Advanced Research Projects Agency, чья сеть ARPANET стала прообразом Интернета). Впрочем, не стоит идти на поводу у акул пера и впадать в панику ­– как мы помним, даже гораздо более реальная проблема Y2K не привела к катаклизмам, хотя, признаем, среди прочего, благодаря и поднятой вокруг нее шумихе. И все же, чем грозит простому смертному исчерпание IPv4-адресов, если в настоящий момент у него все прекрасно работает? Ведь очевидно, что переход с IPv4 на IPv6 не произойдет одномоментно и, соответственно, будет достаточно длинный переходный период, который на самом деле стартовал еще несколько лет тому назад?

Определенные проблемы действительно существуют, и даже не особо задумываясь можно привести несколько неприятных сценариев. К примеру, отсутствие реальных IPv4-адресов потребует от провайдеров массово внедрять NAT, что сильно ограничит работу P2P-сетей, т.к. два клиента с «внутренними» адресами не смогут связаться друг с другом. Далее, поскольку IPv6 не имеет обратной совместимости с IPv4, некоторое время оба протокола действительно будут вынуждены сосуществовать (на уровне провайдеров и корневой инфраструктуры Интернета). Такой подход носит название двойного стека (протоколов) и кажется логичным решением большинства проблем – сетевые ресурсы, построенные на его основе, будут одинаково доступны и IPv4-, и IPv6-клиентам. Но в том-то и дело, что отсутствие свободных IPv4-адресов автоматически означает невозможность двойного стека для новых сайтов, сетей и пр.

Таким образом всеобщая миграция на IPv6 является лишь делом времени. Но раз она неизбежна, почему бы не провести ее прямо сейчас, всем сразу? Вот тут нас ждет едва ли не самое большое разочарование. Проблем с самим Интернетом фактически нет, так как корневая и провайдерские инфраструктуры, построенные на серьезном оборудовании, по большей части уже готовы к IPv6 (обычно именно в режиме двойного стека), о чем многие даже посчитали нужным отчитаться публично, а с января 2011 г. корневые DNS стали уже самым активным образом заполняться IPv6-записями. Однако с пользовательским оборудованием дело обстоит гораздо хуже. К примеру, ни один из имеющихся в моем распоряжении беспроводных маршрутизаторов различных марок IPv6 не поддерживает. Причем, надеяться на решение проблемы путем обновления микропрограмм вряд ли приходится: во-первых, есть технические сложности, связанные с ограниченным объемом встроенной памяти, во-вторых, это бессмысленно из маркетинговых соображений, т.к. гораздо выгоднее продать мне новое устройство. На самом деле, многие производители пользовательского сетевого оборудования озаботились поддержкой IPv6 лишь в конце прошлого года, а найти соответствующие модели в Украине и подавно непросто.

С программным обеспечением также имеется ряд вопросов. Практически все современные операционные системы отлично поддерживают IPv6 и большой спектр сопутствующих технологий. Прикладное ПО, работающее на транспортном уровне (обычно с протоколами TCP и UDP) и выше будет автоматически совместимым. А вот другое скорее всего потребует не только перекомпиляции, но и определенной переработки. К примеру, если использование стандартных системных API автоматически привносит в программу необходимую функциональность, то структуры данных очевидно требуют коррекции в связи с изменением размеров и форматов адреса, заголовка IP-пакетов и пр. Это особенно касается всевозможных сетевых приложений – брандмауэров (в том числе и персональных), систем фильтрации трафика, серверных и шлюзовых антивирусов и пр.

Но может быть все-таки можно как-то оттянуть этот самый IPcalypse? В Интернете даже ходит идея о свободной торговле IPv4-адресами, тем более, что многие Интернет-провайдеры и другие организации (в том числе коммерческие) обладают их избытком. Однако такое «решение» очевидно противоречило бы самим основам организации сегодняшнего Интернета, даже не предусматривающим вторичное перераспределение адресного пространства (ни технически, ни юридически). Впрочем, это в любом случае была бы только временная мера. Тем не менее не следует думать, что Интернет-провайдеры и сетевые операторы совсем ничего не делают в данном направлении. Судя по всему, в ближайшее время взамен динамического назначения IPv4-адресов нам все активнее будут предлагаться различные варианты NAT (хотя, как говорилось выше, такое решение имеет свои ограничения), что еще больше сгладит переходный период.

И все же, давайте представим себе самое худшее: по каким-то причинам (несовместимость оборудования, медлительность провайдера) вы остались с IPv4, тогда как новые сайты и другие сетевые ресурсы уже доступны только по IPv6 – вполне реальная, хотя и достаточно отдаленная перспектива. Что делать? К счастью, выход есть. Благодаря тому, что IPv6 существует далеко не первый год, он буквально оброс всевозможными «костылями и подпорками».

Прежде всего, отметим, что поддержка IPv6 не только присутствует в последних версиях Windows (и других ОС тоже, конечно), но и включена по умолчанию, что избавляет пользователя от ряда дополнительных действий. Поэтому, чтобы не загромождать статью, все дальнейшее относится только к Windows Vista/7, при необходимости аналогичные инструкции для Windows XP несложно найти в Интернете самостоятельно.

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

netsh int ipv6 6to4 set relay 192.88.99.1 enabled 1440

Здесь 192.88.99.1 является так называемым anycast-адресом, что означает, что роль ретранслятора будет играть ближайший сервер (к примеру, определенный таковым вашим провайдером или более вышестоящим оператором).

6to4, однако, не сработает, если ваш компьютер находится за NAT. Наиболее универсальным решением на этот случай является использование протокола Teredo, разработанного в Microsoft (для 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.

Мой адрес не дом и не улица...

Пусть Teredo находится в постоянной боевой готовности

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

route print

выясните номер интерфейса Teredo (в разделе Interface List). В моем случае он равен 21. Теперь его нужно назначить маршрутом по умолчанию для IPv6:

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

Проверить работоспособность IPv6 можно с помощью

ping ipv6.google.com

В случае неудачи выясните статус Teredo

netsh int teredo show state

Если он по-прежнему неактивен, активируйте принудительно

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

Хотя такой синтаксис вроде бы предназначен для доменной среды, в моем случае помог именно он, что, возможно, связано с каким-то особенностями настройки маршрутизатора.

 
Мой адрес не дом и не улица...
 

Наконец IPv6 работает. Кстати, ipv6.google.com – полный аналог обычного google.com, но доступный именно по IPv6. Хотя в общем случае присутствие ipv6 в названии сайта ничего специального не обозначает.

 
Мой адрес не дом и не улица...
 

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

Наконец, еще один способ состоит в использовании так называемых туннельных брокеров (https://en.wikipedia.org/wiki/List_of_IPv6_tunnel_brokers). Обычно это подразумевает установку специальной коммуникационной программы (и системного драйвера), которая в дальнейшем должна настроить туннель автоматически. В моем случае gogo6 (https://gogonet.gogo6.com) сработал без сучка и задоринки, причем пляшущая черепашка на сайте https://www.kame.net даже просигнализировала о честной поддержке IPv6 (чего не было в случае Teredo).

 
Мой адрес не дом и не улица...
 

Хотя туннельные брокеры добавляют в систему лишние сущности, возможно, рядовому пользователю будет проще использовать их, чем настраивать Teredo

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

Завантаження коментарів...

Сообщить об опечатке

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