Быстрый курс IPv6 в Linux






Возможно вы привыкли к IPv4, однако нравится вам это или нет, постепенно наступает эра IP шестой версии. Засучите рукава, поплюйте на ладони и приготовьтесь поработать. Ядро, начиная с версии 2.1, обладает поддержкой IPv6, так что вам ничего не нужно доустанавливать. Убедитесь лишь, что в вашей системе  установлены программы ping6, ip и ifconfig. И давайте сразу договоримся: здесь мы говорим не об «IP», а об «IP-адресах». IP — это Internet Protocol, а никак не IP-адреса. Как говорит моя бабушка, небрежность в разговоре равносильна небрежности в делах, что ни к чему хорошему не приводит.


Преимущества IPv6

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

  • отсутствие головной боли с частными подсетями;
  • использование NAT скорее исключение, чем правило;
  • упрощённая маршрутизация;
  • говорим «прощай» DHCP.

Основным недостатком IPv6 можно назвать длинные адреса в шестнадцатиричном виде. Четыре фрагмента адреса IPv4, разделённые точками, легки для запоминания, а вот восемь кусков шестнадцатиричных чисел запомнить куда труднее.

Моя система поддерживает IPv6?

Как узнать, включена ли поддержка IPv6 в вашем Linux? Очень просто:

Если вы увидите в своей системе вывод, подобный этому — значит всё отлично, поддержка IPv6 в вашей системе включёна. Вообще, все современные Linux-дистрибутивы поддерживают IPv6 «из коробки».

Пинг IPv6

Если вам нужно выполнить пинг IPv6-системы, вам понадобится утилита ping6. Следующая команда отправляет два пакета к localhost:

::1 — это сокращение от 0000:0000:0000:0000:0000:0000:0000:0001. Любая непрерывная последовательность нулей может быть заменена на пару двоеточий, а любая четвёрка, состоящая из нулей, может быть заменена на один ноль. Для нашего примера это 0.0.0.0.0.0.0.1.

Исследование сети

Хотите узнать, есть ли кто-то в вашей сети, кто имеет поддержку IPv6? Легко!

Представленный в примере вывод команды ping6 говорит что да, есть два: fe80::20b:6aff:feef:7e8d и fe80::221:97ff:feed:ef01. Обратите внимание, что вы обязательно должнеы указать имя интерфейса программе ping6, даже если этот интерфейс в вашей системе один-единственный. ff02::1 — это сокращенный вариант адреса ff02:0:0:0:0:0:0:1, который является специальным мультикаст-адресом, предназначенным для отправки пакетов всем link-local хостам.

Адреса link-local — это все адреса в диапазоне fe80::/10, который по смыслу эквивалентен диапазону 169.254.0.0/16 в IPv4. Любой адрес из этого диапазона предназначен для автоконфигурирования ОС и пакеты, отправленные с такого адреса не пропустит ни один маршрутизатор, ограничивая их существование в пределах сегмента локальной сети. Протокол IPv6 спроектирован так, что интерфейс обязан иметь link-local адрес, даже если у него есть другой

После того, как ваш хост обменялся данными с другими хостами по IPv6, адреса последних попадут в таблицу окружения (neighbor table) IPv6 (это что-то вроде ARP-таблицы). Содержимое neighbor table вы можете просмотреть при помощи утилиты ip:

Здесь «nud reachable» означает «статус network unreachability detection установлен в состояние reachable», то есть сетевой хост доступен. Каждая запись в neighbor table временная и хранится в течение нескольких минут после последней сетевой активности в направлении хоста.

Использование сетевых имён

Оставим пока «правильные» сисадминовские методы настройки соответствия имён хостов их IP-адресам, а сейчас воспользуемся старым добрым /etc/hosts. Представим, у вас есть три хоста в одном физическом сегменте сети, имеющие имена fatfreddy, phineas, и franklin. Создадим на каждом из хостов записи в /etc/hosts:

Теперь можно пинговать системы по имени:

SSH и SCP

SSH и SCP умеют работать c IPv6. Внимание, при передаче параметров этим утилитам из командной строки, имеются определённые синтаксические особенности, так что будьте внимательны! Если у вас настроено корректное разрешение имён IPv6-хостов, то разницы при вызове утилит вообще никакой. Вы таким же образом можете подключаться к удалённой оболочке:

и копировать файлы:

А вот в случае использования IPv6-адресов всё чуток сложнее. Установка SSH-сессии:

И опять же, если вы используете link-local адрес, то вы должны указать имя интерфейса с которого будете осуществлять подключение. Как показано выше, делается это путём добавления знака процента и имени интерфейса. Вызов scp имеет ещё более дурацкий синтаксис:

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

Какой у меня IPv6-адрес?

Команда 'ifconfig -a' выводит информацию обо всех сетевых интерфейсах, находящихся в системе: как о физических, так и о виртуальных. Получив информацию по конкретному интерфейсу вы можете воспользоваться grep, чтобы отфильтровать информацию об IPv6-адресе интерфейса:

Интернет

Работа в сегменте локальной сети — это, конечно, хорошо, но как обстоят дела в работой IPv6 в глобальной сети? Для того, чтобы воспользоваться IPv6 в интернет, ваш провайдер должен выдать вам «чистый» IPv6-адрес.  Таких провайдеров сегодня очень мало. Свою первую IPv6-сеть автор настроила в 2004 году и если бы вы сказали ей, что спустя семь лет ситуация с IPv6 останется почти такой же, она бы вам не поверила. Да, 2011-й в этом плане не очень-то отличается от 2004-го. Тем временем, вы можете воспользоваться IPv6-over-IPv4 tunnel broker-ами (как, впрочем, вы могли это сделать и в 2004-м!), такими как SixXS или Hurricane Electric.

8 июня 2011 года — мировой день IPv6. В этот день Google, Comcast, Facebook, Yahoo!, Akamai и Limelight Networks, а также ещё некоторые провайдеры включат доступ к своим хостам по IPv6 на 24 часа. Убедитесь в том, что вы готовы принять участие в тестировании и узнайте больше на test-ipv6.com.

Так же, как и в случае с IPv4, ваш провайдер должен выделить вам блок адресов IPv6. Адреса из этого блока являются глобальными адресами, находящимися в диапазоне 2000::/3. Давайте в качестве эксперимента попробуем присвоить какому-нибудь сетевому интерфейсу адрес из этого диапазона:

Теперь взглянем, что у нас получилось:

Удалить назначенный адрес можно при помощи всё той же утилиты ip:

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

Источник: Linux.Com




Быстрый курс IPv6 в Linux: 24 комментария

  1. > 8 июня 2001 года — мировой день IPv6.

    Вероятно, речь о 8 июня 2011 года.

  2. Товарищ ashep.

    Во-первых, спасибо за материал! А во-вторых, с удовольствием бы прочитал продолжение этой темы. В частности – интересует раздача адресов в локальной сети, о которой уже упоминали выше.

    В любом случае спасибо

  3. Спасибо за отзыв, товарищ Sergey! Попробую изобразить в будущем, как только будет на то время и силы ;)

  4. с такими адресами будет непросто... я думаю в большинстве случаев внутри сети как раз никто и не будет использовать Ipv6, на край на выходе только

  5. разве %eth0 нужно указывать всегда? а не только для link-local адресов?

  6. «Если у вас настроено корректное разрешение имён IPv6-хостов, то разницы при вызове утилит вообще никакой.»

    опечатка в IPv6?

  7. спасибо за статью

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

    даже пора уже всем выдавать людям сотню другую адресов как паспорт и ИНН

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

  8. > Как говорит моя бабушка, небрежность в разговоре равносильна небрежности в делах

    ага-ага :)

    > Каждая записи в neighbor table временная

    > этим утилитам из командно строки

  9. corrector, да ладно вам. Не хватало ещё здесь ЛОР устроить ;) Спасибо за замечание. Исправил.

  10. «Таки провайдеров»

    «вы межете воспользоваться»

    Поправьте, пожалуйста.

  11. Совет использовать линк-локал адреса, а уж тем более прописывать их в в /etc/hosts — это верх абсурда.

    Ну к переводчику претензий нет, раз в оригинале так.

  12. rm, дык это всё экспериментов ради. Автор не советует жить с этим. За ссылочку — спасибо сердешное ;)

  13. А как заходить на самбу, например dolpin воспринимает только ссылку вида smb://[fe00::0], а вот smb://[fe00::0%eth0] не катит

Комментарии запрещены.