19.16 IPv6 во FreeBSD


Первоначальный текст написалAaron Kaplan. Реструктуризацию и добавления внёсTom Rhodes.

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

Механизмы преобразования IPv4-в-IPv6

Для получения дополнительной информации посмотрите:

Обзор IPv6 на сайте Sun.com

IPv6.org

KAME.net

6bone.net
19.16.1 Основы адресации IPv6

Существуют различные типы адресов IPv6: одноадресные (Unicast), групповые (Anycast) и многоадресные (Multicast).

Адреса типа Unicast хорошо всем известны. Пакет, посланный на такой адрес, достигает в точности интерфейса, который этому адресу соответствует.

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

Адреса типа Multicast идентифицируют группу интерфейсов. Пакет, посланный на такой адрес, достигнет всех интерфейсов, привязанных к группе многоадресного вещания.

Note: Широковещательные адреса IPv4 (обычно xxx.xxx.xxx.255) выражаются адресами многоадресного вещания IPv6.

Зарезервированные адреса IPv6:
ipv6-address prefixlength(Bits) description Notes

:: 128 Bits unspecified cf. 0.0.0.0 in IPv4 address
::1 128 Bits loopback address cf. 127.0.0.1 in IPv4
::00:xx:xx:xx:xx 96 Bits embedded IPv4 The lower 32 bits are the
address IPv4 address. Also called
``IPv4 compatible IPv6
address''
::ff:xx:xx:xx:xx 96 Bits IPv4 mapped The lower 32 bits are the
IPv6 address IPv4 address. For hosts
which do not support IPv6
fe80:: - feb:: 10 Bits link-local cf. loopback address in
IPv4
fec0:: - fef:: 10 Bits site-local
ff:: 8 Bits multicast
001 (base 2) 3 Bits global unicast All global unicast
addresses are assigned from
this pool. The first 3 Bits
are ``001''.
19.16.2 Чтение адресов IPv6

Каноническая форма представляется в виде x:x:x:x:x:x:x:x, где каждый символ ``x'' является 16-битовым шестнадцатиричным числом. К примеру, FEBC:A574:382B:23C1:AA49:4592:4EFE:9982

Часто в адресе присутствуют длинные строчки, заполненные нулями, поэтому каждая такая последовательность может быть сокращена до ``::''. К примеру, 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-адрес Ethernet.

Для получения дополнительной информации о структуре адресов IPv6 обратитесь к RFC3513.
19.16.3 Настройка подключения

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

Подключиться к экспериментальному 6bone

Получить сеть IPv6 от вышестоящего провайдера. Для получения рекомендаций обратитесь к вашему провайдеру Интернет.

Туннелировать посредством 6-в-4

Использовать порт 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. Вы должны получить два положительных ответа.

Note: Если вы заинтригованы адресом 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.
19.16.4 DNS в мире IPv6

Для IPv6 имеются два новых типа записей DNS:

Записи AAAA,

Записи A6

Использование записей AAAA достаточно просто. Назначение вашему имени хоста нового адреса IPv6 достигается просто добавлением:
MYHOSTNAME AAAA MYIPv6ADDR

к вашему первичному файлу DNS зоны. В случае, если вы не обслуживаете собственные зоны DNS, обратитесь к вашему провайдеру DNS. Имеющиеся версии bind (версий 8.3 и 9) поддерживают записи AAAA.

Обновлено: 12.03.2015