17.14. IPv6

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

IPv6 (также называемый IPng "IP next generation" - следующее поколение IP) является новой версией широко известного протокола IP (называемого также IPv4). Как и другие современные системы *BSD, FreeBSD включает эталонную реализацию IPv6 от KAME. Так что система FreeBSD поставляется со всем, что вам нужно для экспериментирования с IPv6. Этот раздел посвящёен настройке и запуску в работу IPv6.

В начале 1990-х люди стали беспокоиться о быстро иссякающем адресном пространстве IPv4. Принимая во внимание темпы роста Интернет, имелись основные проблемы:

IPv6 решает эти и многие другие вопросы:

Имеется также множество других полезных особенностей IPv6, таких, как:

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

17.14.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".

17.14.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 с точками "." в качестве разделителей. Например, 2002::10.0.0.1 соответствует (шестнадцатиричному) каноническому представлению 2002:0000:0000:0000:0000:0000:000a:0001, которое, в свою очередь, равнозначно записи 2002::a: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 обратитесь к RFC2373

17.14.3. Настройка подключения

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

Здесь мы будем рассматривать подключение к 6bone, так как на данный момент это является самым популярным способом.

Сначала взгляните на сайт 6bone и найдите ближайшую к вам точку подключения к 6bone. Напишите ответственному и при некоторой удаче вам дадут инструкции по настройке соединения. Обычно это касается настройки туннеля GRE (gif).

Вот типичный пример настройки туннеля gif(4):

    # ifconfig create gif0
    # ifconfig gif0
    gif0: flags=8010<POINTOPOINT,MULTICAST> mtu 1280
    # ifconfig 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, как, например, mozilla+ipv6.

17.14.4. DNS в мире IPv6

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

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

    MYHOSTNAME           AAAA    MYIPv6ADDR

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