Linux Advanced Routing & Traffic Control HOWTO
Шрифт:
6.1. Тоннелирование IPV6.
Это еще один вариант применения возможностей тоннелирования Linux. Он популярен среди пионеров во внедрении протокола IPv6. Практический пример, описанный ниже, конечно не единственный способ организовать тоннелирование IPv6. Однако, этот метод часто используется при создании тоннеля между Linux и маршрутизатором Cisco. Опыт говорит, что многих пользователей интересует именно этот. Десять к одному — это относится и к вам ;-)
Небольшое отступление об адресах IPv6:
По сравнению с адресами IPv4, адреса IPv6 действительно большие: 128
Пример: 2002:836b:9820:0000:0000:0000:836b:9886
Использование адресов IPv6 может оказазаться весьма трудным. Потому, существуют некоторые правила:
• Не используйте лидирующие нули. Аналогично с IPv4.
• Используйте двоеточия для отделения каждой 16-битной (2-байтной) группы .
• Если в адресе есть последовательность нулей, ее можно записать как ::. Это можно сделать только один раз в адресе и только для кратных 16-ти битам последовательностей.
Так, например, адрес 2002:836b:9820:0000:0000:0000:836b:9886 может быть записан как 2002:836b:9820::836b:9886, что гораздо короче и удобней.
Другой пример, адрес 3ffe:0000:0000:0000:0000:0020:34A1:F32C может быть записан как 3ffe::20:34A1:F32C, что значительно короче.
IPv6 предназначен для замены текущего IPv4. Поскольку это относительно новая технология, пока не существует всемирной сети, где в качестве основного протокола используется IPv6. Для быстрейшего продвижения этой технологии, была создана 6bone.
Сети основанные на IPv6 соединяются одна с другой инкапсуляцией IPv6 в IPv4 и пересылкой по существующей инфраструктуре IPv4.
Именно здесь применяются тоннели.
Для того, чтобы использовать IPv6, наше ядро должно иметь его поддержку. Существует много хороших описаний, как это сделать. Но все сводится к нескольким шагам:
• Возьмите достаточно новую версию дистрибутива Linux, с соответствуюшей glibc.
• Обновите исходные тексты ядра.
После этого можно приступать к сборке ядра, с включенной поддержкой IPv6:
• Перейдите в каталог /usr/src/linux и запустите:
• Перейдите в раздел "Networking Options"
• Отметьте пункты "The IPv6 protocol", "IPv6: enable EUI-64 token format", "IPv6: disable provider based addresses"
Tip
Не используйте "модули". Часто они плохо работают.
Другими словами, код поддержки IPv6 должен быть связан с ядром статически. Теперь сохраните конфигурацию и соберите ядро.
Tip
Перед сборкой измените строку в Makefile: EXTRAVERSION = –x → EXTRAVERSION = –x-IPv6
Есть большое количество хорошей документации по сборке и установке ядра, но это выходит за рамки данного документа. Если вы будете испытывать
трудности на этом этапе, обратитесь к соответствующей документации.Начать стоит с файла /usr/src/linux/README. После того, как вы разберетесь с пересборкой ядра и перезагрузитесь с новым ядром, выполните команду /sbin/ifconfig –a. Вы должны будете увидеть новый класс устройств sit0-device, где SIT означает Simple Internet Transition. Поздравляю, вы сделали большой шаг в направлении IP Next Generation ;-)
Теперь следующий шаг. Вы хотите подключить ваш хост или сеть к другой сети IPv6. Это может быть "6bone", которая и была создана для таких задач.
Предположим, что у вас имеется сеть IPv6 3ffe:604:6:8::/64 и вы хотите подключить ее к 6bone или аналогичной ей. Обратите внимание, что нотация /64 означает тоже самое, что и в обычном IP вдресе.
Ваш адрес IPv4 — 145.100.24.181, а адрес маршрутизатора 6bone — 145.100.1.5
Обсудим приведенные команды. Первой строкой создается интерфейс тоннеля с именем sixbone и определяется его режим — sit (т.е. тоннелирование IPv6 в IPv4), а так же указываются адреса отправителя и получателя. Напоследок устанавливается максимальный TTL — 255.
В следующей строке интерфейс активируется (up). Далее, добавляется наш сетевой адрес и задается маршрут к сети 3ffe::/15 (что на сегодняшний день является всей 6bone) через тоннель. Если машина, на которой выполняются эти команды, является шлюзом IPv6, то нужно будет выполнить еще и такие команды:
radvd, как и zebra, демон маршутизации, поддерживающий автоконфигурационные возможности IPv6. Более детальную информацию ищите в Internet. Проверить настройку системы можно командой:
Если на вашем шлюзе IPv6 запущен radvd и вы загрузите в вашей сети систему Linux с поддержкой IPv6, то сможете оценить возможности автонастройки IPv6:
Теперь можно сделать следующий шаг и настроить bind для адресов IPv6. У типа A существует эквиваоент для IPv6: AAAA. Для in-addr.arpa эквивалентом является: ip6.int. По данной теме доступно множество информации.