Первоначальный текст написал Aaron
Kaplan. Реструктуризацию и добавления
внёс Tom Rhodes. Расширил
Brad Davis.
IPv6 (также называемый IPng ``IP next generation'' - следующее поколение IP) является
новой версией широко известного протокола IP (называемого также IPv4). Как и другие современные системы *BSD, FreeBSD включает
эталонную реализацию IPv6 от KAME. Так что система FreeBSD
поставляется со всем, что вам нужно для экспериментирования с IPv6. Этот раздел посвящён
настройке и запуску в работу IPv6.
В начале 1990-х люди стали беспокоиться о быстро иссякающем адресном пространстве
IPv4. Принимая во внимание темпы роста Интернет, имелись основные проблемы:
-
Нехватка адресов. Сегодня это не такая большая проблема, так как стали применяться
адресные пространства для частных сетей (10.0.0.0/8, 192.168.0.0/24 и так далее) и технология преобразования сетевых
адресов (NAT - Network Address Translation).
-
Таблицы маршрутов становятся чересчур большими. Это всё ещё является проблемой
сегодня.
IPv6 решает эти и многие другие вопросы:
-
128-битное адресное пространство. Другими словами, теоретически доступны
340,282,366,920,938,463,463,374,607,431,768,211,456 адреса. Это означает плотность
примерно в 6.67 * 10^27 адресов IPv6 на квадратный метр нашей планеты.
-
Маршрутизаторы будут хранить в своих таблицах только агрегированные адреса сетей, что
уменьшает средний размер таблицы маршрутизации до 8192 записей.
Имеется также множество других полезных особенностей IPv6, таких, как:
-
Автоматическая настройка адреса (RFC2462)
-
Групповые адреса (``один к нескольким из многих'')
-
Обязательные адреса множественной рассылки
-
IPsec (IP security - безопасный IP)
-
Упрощённая структура заголовка
-
Мобильный IP
-
Механизмы преобразования IPv6-в-IPv4
Для получения дополнительной информации посмотрите:
Существуют различные типы адресов IPv6: одноадресные (Unicast), групповые (Anycast) и
многоадресные (Multicast).
Адреса типа Unicast хорошо всем известны. Пакет, посланный на такой адрес, достигает в
точности интерфейса, который этому адресу соответствует.
Адреса типа Anycast синтаксически неотличимы от адресов Unicast, но они адресуют
группу интерфейсов. Пакет, направленный такому адресу, попадёт в ближайший (согласно
метрике маршрутизатора) интерфейс. Адреса Anycast могут использоваться только
маршрутизаторами.
Адреса типа Multicast идентифицируют группу интерфейсов. Пакет, посланный на такой
адрес, достигнет всех интерфейсов, привязанных к группе многоадресного вещания.
Замечание: Широковещательные адреса IPv4 (обычно xxx.xxx.xxx.255) выражаются адресами многоадресного вещания IPv6.
Таблица 24-2. Зарезервированные адреса IPv6
IPv6 адрес |
Длина префикса (биты) |
Описание |
Заметки |
:: |
128 бит |
нет описания |
cf. 0.0.0.0 в IPv4 |
::1 |
128 бит |
loopback адрес |
cf. 127.0.0.1 в IPv4 |
::00:xx:xx:xx:xx |
96 бит |
встроенный IPv4 |
Нижние 32 бита это адрес IPv4. Также называется ``IPv4 совместимым IPv6
адресом'' |
::ff:xx:xx:xx:xx |
96 бит |
Адрес IPv6, отображенный на IPv4 |
Нижние 32 бита это адрес IPv4. Для хостов, не поддерживающих IPv6. |
fe80:: - feb:: |
10 бит |
link-local |
cf. loopback адрес в IPv4 |
fec0:: - fef:: |
10 бит |
site-local |
|
ff:: |
8 бит |
широковещательный |
|
001 (основание 2) |
3 бит |
global unicast |
Все global unicast адреса присваиваются из этого пула. Первые три бита ``001''. |
Каноническая форма представляется в виде x:x:x:x:x:x:x:x, где
каждый символ ``x'' является 16-битовым шестнадцатиричным числом. К примеру, FEBC:A574:382B:23C1:AA49:4592:4EFE:9982
Часто в адресе присутствуют длинные строчки, заполненные нулями, поэтому одна такая
последовательность на адрес может быть сокращена до ``::''. Кроме того, до трех ведущих
``0'' на шестнадцатеричную четверку могут быть пропущены. К примеру, fe80::1 соответствует канонической форме fe80:0000:0000:0000:0000:0000:0000:0001.
В третьей форме последние 32 бита записываются в широко известном (десятичном) стиле
IPv4 с точками ``.'' в качестве разделителей. Например, f2002::10.0.0.1 соответствует (шестнадцатеричному) каноническому
представлению 2002:0000:0000:0000:0000:0000:0a00:0001, которое, в
свою очередь, равнозначно записи 2002::a00:1.
Теперь читатель должен понять следующую запись:
# ifconfig
rl0: flags=8943<UP,BROADCAST,RUNNING,PROMISC,SIMPLEX,MULTICAST> mtu 1500
inet 10.0.0.10 netmask 0xffffff00 broadcast 10.0.0.255
inet6 fe80::200:21ff:fe03:8e1%rl0 prefixlen 64 scopeid 0x1
ether 00:00:21:03:08:e1
media: Ethernet autoselect (100baseTX )
status: active
fe80::200:21ff:fe03:8e1%rl0 является автоматически настроенным
локальным адресом. Он генерируется из MAC адреса в процессе автоматической
конфигурации.
Для получения дополнительной информации о структуре адресов IPv6 обратитесь к RFC3513.
На данный момент существуют четыре способа подключиться к другим хостам и сетям
IPv6:
-
Подключиться к экспериментальному 6bone
-
Получить сеть IPv6 от вышестоящего провайдера. Для получения рекомендаций обратитесь к
вашему провайдеру Интернет.
-
Туннелировать посредством 6-в-4 (RFC3068)
-
Использовать порт net/freenet6, если вы используете коммутируемое соединение.
Здесь мы будем рассматривать подключение к 6bone, так как на данный момент это
является самым популярным способом.
Сначала взгляните на сайт 6bone и
найдите ближайшую к вам точку подключения к 6bone. Напишите ответственному и при
некоторой удаче вам дадут инструкции по настройке соединения. Обычно это касается
настройки туннеля GRE (gif).
Вот типичный пример настройки туннеля gif(4):
# ifconfig gif0 create
# ifconfig gif0
gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
# ifconfig gif0 tunnel MY_IPv4_ADDR HIS_IPv4_ADDR
# ifconfig gif0 inet6 alias MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDR
Замените слова, написанные заглавными буквами, информацией, которую вам дал
вышестоящий узел 6bone.
При этом установится туннель. Проверьте работу туннеля утилитой ping6(8) с адресом ff02::1%gif0. Вы должны получить два положительных ответа.
Замечание: Если вы заинтригованы адресом ff02:1%gif0,
скажем, что это адрес многоадресного вещания. %gif0 указывает
на использование такого адреса с сетевым интерфейсом gif0.
Так как мы выполняем ping над адресом многоадресного вещания, то
другая сторона туннеля также должна ответить.
Теперь настройка маршрута к вашей вышестоящей точке подключения 6bone должна быть
весьма проста:
# route add -inet6 default -interface gif0
# ping6 -n MY_UPLINK
# traceroute6 www.jp.FreeBSD.org
(3ffe:505:2008:1:2a0:24ff:fe57:e561) from 3ffe:8060:100::40:2, 30 hops max,
12 byte packets
1 atnet-meta6 14.147 ms 15.499 ms 24.319 ms
2 6bone-gw2-ATNET-NT.ipv6.tilab.com 103.408 ms 95.072 ms *
3 3ffe:1831:0:ffff::4 138.645 ms 134.437 ms 144.257 ms
4 3ffe:1810:0:6:290:27ff:fe79:7677 282.975 ms 278.666 ms 292.811 ms
5 3ffe:1800:0:ff00::4 400.131 ms 396.324 ms 394.769 ms
6 3ffe:1800:0:3:290:27ff:fe14:cdee 394.712 ms 397.19 ms 394.102 ms
Эта выдача будет отличаться от машины к машине. Теперь вы должны суметь достигнуть
сайта IPv6 www.kame.net и увидеть
танцующую черепаху -- в случае, если ваш браузер поддерживает IPv6, как, например, www/mozilla или Konqueror, который
входит в x11/kdebase3, или www/epiphany.
Для IPv6 использовались два типа записей DNS. IETF объявил записи A6 устаревшими.
Стандартом на данный момент являются записи AAAA.
Использование записей AAAA достаточно просто. Назначение вашему имени хоста нового
адреса IPv6 достигается просто добавлением:
MYHOSTNAME AAAA MYIPv6ADDR
к вашему первичному файлу DNS зоны. В случае, если вы не обслуживаете собственные зоны
DNS, обратитесь к вашему провайдеру DNS. Имеющиеся версии bind (версий
8.3 и 9) и dns/djbdns (с патчем IPv6) поддерживают записи AAAA.
Эти установки помогут вам настроить компьютер, который будет работать в сети как
клиент, а не как маршрутизатор. Для включения настройки интерфейсов через rtsol(8) при загрузке,
все, что вам потребуется, это добавить следующую строку:
ipv6_enable="YES"
Для статического присвоения IP адреса, такого как 2001:471:1f11:251:290:27ff:fee0:2093, интерфейсу fxp0, добавьте:
ipv6_ifconfig_fxp0="2001:471:1f11:251:290:27ff:fee0:2093"
Для назначения маршрутизатором по умолчанию 2001:471:1f11:251::1, добавьте следующую строку к /etc/rc.conf:
ipv6_defaultrouter="2001:471:1f11:251::1"
Этот раздел поможет вам использовать инструкции, которые выдал провайдер туннеля,
например, 6bone, и сделать эти
настройки постоянными. Для восстановления туннеля при загрузке системы используйте в /etc/rc.conf нижеприведенные настройки.
Задайте список туннельных интерфейсов (Generic Tunneling interfaces), которые
необходимо настроить, например gif0:
gif_interfaces="gif0"
Для настройки интерфейса с локальным подключением на MY_IPv4_ADDR к удаленной точке REMOTE_IPv4_ADDR:
gifconfig_gif0="MY_IPv4_ADDR REMOTE_IPv4_ADDR"
Для включения IPv6 адреса, который был вам присвоен для использования в подключении к
туннелю IPv6, добавьте:
ipv6_ifconfig_gif0="MY_ASSIGNED_IPv6_TUNNEL_ENDPOINT_ADDR"
Затем все, что вам потребуется сделать, это добавить маршрут по умолчанию для IPv6.
Это другая сторона туннеля IPv6:
ipv6_defaultrouter="MY_IPv6_REMOTE_TUNNEL_ENDPOINT_ADDR"
Этот раздел поможет вам настроить rtadvd(8) для
распространения маршрута IPv6 по умолчанию.
Для включения rtadvd(8) вам
понадобится добавить в /etc/rc.conf следующую строку:
rtadvd_enable="YES"
Важно указать интерфейс, на котором выполняется запрос маршрутизатора IPv6. Например,
для указания rtadvd(8) использовать
fxp0:
rtadvd_interfaces="fxp0"
Теперь мы должны создать файл настройки, /etc/rtadvd.conf.
Вот пример:
fxp0:\
:addrs#1:addr="2001:471:1f11:246::":prefixlen#64:tc=ether:
Замените fxp0 на интерфейс, который вы будете
использовать.
Затем, замените 2001:471:1f11:246:: на префикс вашего
размещения.
Если у вас выделенная подсеть /64, больше ничего менять не
потребуется. Иначе, вам потребуется изменить prefixlen# на
корректное значение.