Ipv6 — различия между версиями

Материал из pNp Wiki
Перейти к: навигация, поиск
(Методы доставки информации)
(Общая информация и терминология)
 
(не показано 26 промежуточных версий этого же участника)
Строка 5: Строка 5:
 
* Установленные пакеты: <code>bash-completion</code>
 
* Установленные пакеты: <code>bash-completion</code>
  
==== Общая информация и терминология ====
+
== Общая информация и терминология ==
 
Адрес состоит из 8 блоков (хекстетов) шестнадцатеричных чисел. Каждый блок (хекстет) состоит из 4 символов, например:
 
Адрес состоит из 8 блоков (хекстетов) шестнадцатеричных чисел. Каждый блок (хекстет) состоит из 4 символов, например:
 
<syntaxhighlight lang="bash">
 
<syntaxhighlight lang="bash">
Строка 24: Строка 24:
  
 
==== Методы доставки информации ====
 
==== Методы доставки информации ====
* Unicast - от одного источника, к одному приемнику. При этом могут быть следующими:
+
* '''Unicast''' - от одного источника, к одному получателю. Получатели могут быть следующими:
 
# Global Unicast Addresses - адреса маршрутизируемые в сети Internet (аналог публичного диапазона ipv4), находящиеся в диапазоне от <code>2066::/16</code> до <code>3fff::/16</code>
 
# Global Unicast Addresses - адреса маршрутизируемые в сети Internet (аналог публичного диапазона ipv4), находящиеся в диапазоне от <code>2066::/16</code> до <code>3fff::/16</code>
 
# Unique-Local Addresses - адреса не маршрутизируемые в стети Internet (приблизительный аналог частного диапазона ipv4), находящиеся в пространстве <code>fc00::/7</code>
 
# Unique-Local Addresses - адреса не маршрутизируемые в стети Internet (приблизительный аналог частного диапазона ipv4), находящиеся в пространстве <code>fc00::/7</code>
 
# Link-local Addresses - адреса не маршрутизируемые в стети Internet, необходимые для автоконфигурирования устройств (аналог APIPA в ipv4), находящиеся в пространстве  <code>fe80::/10</code>
 
# Link-local Addresses - адреса не маршрутизируемые в стети Internet, необходимые для автоконфигурирования устройств (аналог APIPA в ipv4), находящиеся в пространстве  <code>fe80::/10</code>
 +
* '''Multicast''' - от одного источника, к нескольким получателям. В ipv6 также является заменой broadcast'y. Для получения пакетов в мультикасте, необходимо быть включенным в специальную группу. Те интерфейсы, которые не включены в группу - игнорируют мультикаст пакеты.
 +
* '''Anycast''' - множеству интерфейсов присваивается один ip адрес. При этом эникаст пакеты получает "ближайший" получатель, согласно метрике маршрута.
 +
 +
 +
==== Архитектура адресов ====
 +
Юникаст адресы формируются следующим образом:
 +
 +
{| class="wikitable"
 +
|-
 +
! n бит !! 128 бит
 +
|-
 +
| префикс подсети || идентификатор интерфейса
 +
|}
 +
 +
'''Global Unicast Addresses''' формируются по следующей схеме:
 +
{| class="wikitable"
 +
|-
 +
! n бит !! m бит !! 128-n-m бит
 +
|-
 +
| глобальный префикс маршрутизации || идентификатор подсети || идентификатор интерфейса
 +
|}
 +
 +
Все глобальные юникаст адреса, имеющие первые биты, отличные от <code>0000</code>, имеют
 +
64 битное поле идентификатора интерфейса. Глобальные юникаст адреса начинающиеся с <code>0000</code> не имеют ограничений на размер или структуру поля идентификатора интерфейса
 +
 +
'''Local IPv6 Unicast Addresses''' формируются по следующей схеме:
 +
{| class="wikitable"
 +
|-
 +
! 7 бит !! 1 бит !! 40 бит !! 16 бит !! 64 бита
 +
|-
 +
| префикс || L || глобальный идентификатор || идентификатор подсети || идентификатор интерфейса
 +
|}
 +
 +
Где:
 +
* '''Префикс''' - <code>fc00::/7</code> для идентификации локальных ipv6 адресов
 +
* '''L''' - бит установленный в значение <code>1</code> указывает, что адрес присвоен локально. Значение <code>0</code> зарезервированно для будущего использования.
 +
* '''Глобальный идентификатор''' - 40 битный префикс используемый для создания глобально уникальный префикс
 +
* '''Идентификатор подстети''' - 16 битный идентификатор подсети
 +
* '''Идентификатор интерфейса''' - 64 битный идентификатор интерфейса.
 +
 +
'''Link-Local IPv6 Unicast Addresses''' формируются по следующей схеме:
 +
{| class="wikitable"
 +
|-
 +
! 10 бит !! 54 бита !! 64 бита
 +
|-
 +
| 1111111010 || 0 || идентификатор интерфейса
 +
|}
 +
 +
Адреса данного типа созданы для автоматического конфигурирования интерфейсов, для обнаружения соседних сетевых устройств,
 +
или в сетях, где отсутствуют маршрутизаторы. Роутеры не должны маршрутизировать пакеты в которых источник или получатель
 +
имеет адрес из указанного диапазона.
 +
 +
==== Специальные адресы ====
 +
# '''0:0:0:0:0:0:0:0''' - называется неопределенным адресом, то есть отражает отсутствие адреса как такового, поэтому никогда не должен присваиваться. Пакет с таким адресом не подлежит маршрутизации и не должен использоваться в качестве адреса получателя.
 +
# '''0:0:0:0:0:0:0:1''' - петлевой адрес. Может использоваться любой нодой для того, что бы отправить пакет самому себе. Пакет с таким адресом в качестве источника или получателя не должен уходить за пределы ноды, в противном случае - он должен быть отброшен.
  
 
==== Зарезервированные диапазоны ====
 
==== Зарезервированные диапазоны ====
Строка 37: Строка 92:
 
! Диапазон !! Описание !! RFC
 
! Диапазон !! Описание !! RFC
 
|-
 
|-
| ::/128 || Неопределенный адрес (эквивалентен 0.0.0.0) || [http://www.iana.org/go/rfc4291 rfc4291]
+
| ::/128 || Неопределенный адрес || [http://www.iana.org/go/rfc4291 rfc4291]
 
|-
 
|-
 
| ::1/128 || Loopback Address (эквивалентен 127.0.0.1/8) || [http://www.iana.org/go/rfc4291 rfc4291]
 
| ::1/128 || Loopback Address (эквивалентен 127.0.0.1/8) || [http://www.iana.org/go/rfc4291 rfc4291]
 +
|-
 +
| ::/0 || Default route (эквивалентен 0.0.0.0) || [http://www.iana.org/go/rfc4291 rfc4291]
 
|-
 
|-
 
| ::ffff:0:0/96 || IPv4-mapped Address || [http://www.iana.org/go/rfc4291 rfc4291]
 
| ::ffff:0:0/96 || IPv4-mapped Address || [http://www.iana.org/go/rfc4291 rfc4291]
Строка 78: Строка 135:
 
|-
 
|-
 
| fe80::/10 || Link-Local Unicast (аналог [https://ru.wikipedia.org/wiki/Zeroconf APIPA]) || [http://www.iana.org/go/rfc4291 rfc4291]
 
| fe80::/10 || Link-Local Unicast (аналог [https://ru.wikipedia.org/wiki/Zeroconf APIPA]) || [http://www.iana.org/go/rfc4291 rfc4291]
 +
|-
 +
| ff00::/8 || Multicast адреса || [http://www.iana.org/go/rfc4291 rfc4291]
 
|}
 
|}
 +
 +
== Настройка интерфейсов ==
 +
Присвоим интерфейсам на машинах <code>vm-01</code> и <code>vm-02</code>, адреса
 +
<code>fc00::1/7</code> и <code>fc00::2/7</code> соответственно:
 +
<syntaxhighlight lang="bash">
 +
[root@vm-01 ~]# nmcli connection show
 +
NAME  UUID                                  TYPE            DEVICE
 +
eth0  89d6addf-2717-4933-ac09-c63936ed5205  802-3-ethernet  eth0 
 +
eth1  b1b57e4d-26fd-438b-846d-bcdee06aee53  802-3-ethernet  eth1 
 +
[root@vm-01 ~]# nmcli connection down eth1
 +
Connection 'eth1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
 +
[root@vm-01 ~]# ip addr show
 +
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
 +
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 +
    inet 127.0.0.1/8 scope host lo
 +
      valid_lft forever preferred_lft forever
 +
    inet6 ::1/128 scope host
 +
      valid_lft forever preferred_lft forever
 +
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
 +
    link/ether 52:54:00:07:c2:1a brd ff:ff:ff:ff:ff:ff
 +
    inet 192.168.122.158/24 brd 192.168.122.255 scope global dynamic eth0
 +
      valid_lft 2561sec preferred_lft 2561sec
 +
    inet6 fe80::5c77:2f55:bace:49ba/64 scope link
 +
      valid_lft forever preferred_lft forever
 +
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
 +
    link/ether 52:54:00:92:b1:55 brd ff:ff:ff:ff:ff:ff
 +
[root@vm-01 ~]# nmcli connection edit eth1
 +
 +
===| nmcli interactive connection editor |===
 +
 +
Editing existing '802-3-ethernet' connection: 'eth1'
 +
 +
Type 'help' or '?' for available commands.
 +
Type 'describe [<setting>.<prop>]' for detailed property description.
 +
 +
You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, ipv4, ipv6
 +
nmcli> set ipv6.addresses
 +
Enter 'addresses' value:
 +
nmcli> print ipv6.addresses
 +
ipv6.addresses:
 +
nmcli> set ipv6.addresses fc00::1/7
 +
Do you also want to set 'ipv6.method' to 'manual'? [yes]: yes
 +
nmcli> save
 +
Connection 'eth1' (b1b57e4d-26fd-438b-846d-bcdee06aee53) successfully updated.
 +
nmcli> save persistent
 +
Connection 'eth1' (b1b57e4d-26fd-438b-846d-bcdee06aee53) successfully updated.
 +
nmcli> quit
 +
[root@vm-01 ~]# nmcli connection up eth1
 +
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
 +
[root@vm-01 ~]# ip -6 addr show dev eth1
 +
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
 +
    inet6 fc00::1/7 scope global
 +
      valid_lft forever preferred_lft forever
 +
    inet6 fe80::9c9f:9e62:26a:7127/64 scope link
 +
      valid_lft forever preferred_lft forever
 +
[root@vm-01 ~]#
 +
</syntaxhighlight>
 +
На второй машине проделаем ту же операцию:
 +
<syntaxhighlight lang="bash">
 +
[root@vm-02 ~]# nmcli connection show
 +
NAME  UUID                                  TYPE            DEVICE
 +
ens10  d95a3145-91f8-4e9d-8219-975da848f2e7  802-3-ethernet  ens10 
 +
ens3  427963c7-c016-417a-a542-7738fd158922  802-3-ethernet  ens3 
 +
[root@vm-02 ~]# nmcli connection down ens10
 +
[root@vm-02 ~]# nmcli connection edit ens10
 +
 +
===| nmcli interactive connection editor |===
 +
 +
Editing existing '802-3-ethernet' connection: 'ens10'
 +
 +
Type 'help' or '?' for available commands.
 +
Type 'describe [<setting>.<prop>]' for detailed property description.
 +
 +
You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, ipv4, ipv6, dcb
 +
nmcli> set ipv6.addresses
 +
Enter 'addresses' value:
 +
nmcli> print ipv6.addresses
 +
Error: unknown setting: 'ipv6.addresses'
 +
nmcli> print ipv6
 +
['ipv6' setting values]
 +
ipv6.method:                            auto
 +
ipv6.dns:                             
 +
ipv6.dns-search:                       
 +
ipv6.addresses:                       
 +
ipv6.routes:                           
 +
ipv6.ignore-auto-routes:                no
 +
ipv6.ignore-auto-dns:                  no
 +
ipv6.never-default:                    no
 +
ipv6.may-fail:                          yes
 +
ipv6.ip6-privacy:                      -1 (unknown)
 +
ipv6.dhcp-hostname:                    --
 +
nmcli> set ipv6.addresses fc00::2/7
 +
Do you also want to set 'ipv6.method' to 'manual'? [yes]: yes
 +
nmcli> save
 +
Connection 'ens10' (d95a3145-91f8-4e9d-8219-975da848f2e7) successfully updated.
 +
nmcli> save persistent
 +
Connection 'ens10' (d95a3145-91f8-4e9d-8219-975da848f2e7) successfully updated.
 +
nmcli> quit
 +
[root@vm-02 ~]# nmcli connection up ens10
 +
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
 +
[root@vm-02 ~]# ip -6 add show dev ens10
 +
3: ens10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
 +
    inet6 fc00::2/7 scope global
 +
      valid_lft forever preferred_lft forever
 +
    inet6 fe80::5054:ff:fe12:f162/64 scope link
 +
      valid_lft forever preferred_lft forever
 +
[root@vm-02 ~]#
 +
</syntaxhighlight>
 +
== Проверка ==
 +
Отправим по 3 icmp пакета сначала себе, а затем соседу. С машины <code>vm-02</code>:
 +
<syntaxhighlight lang="bash">
 +
[root@vm-02 ~]# ip -6 addr show dev ens10
 +
3: ens10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
 +
    inet6 fc00::2/7 scope global
 +
      valid_lft forever preferred_lft forever
 +
    inet6 fe80::5054:ff:fe12:f162/64 scope link
 +
      valid_lft forever preferred_lft forever
 +
[root@vm-02 ~]# ping6 -c 3 fc00::2
 +
PING fc00::2(fc00::2) 56 data bytes
 +
64 bytes from fc00::2: icmp_seq=1 ttl=64 time=0.073 ms
 +
64 bytes from fc00::2: icmp_seq=2 ttl=64 time=0.068 ms
 +
64 bytes from fc00::2: icmp_seq=3 ttl=64 time=0.071 ms
 +
 +
--- fc00::2 ping statistics ---
 +
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
 +
rtt min/avg/max/mdev = 0.068/0.070/0.073/0.009 ms
 +
[root@vm-02 ~]# ping6 -c 3 fc00::1
 +
PING fc00::1(fc00::1) 56 data bytes
 +
64 bytes from fc00::1: icmp_seq=1 ttl=64 time=0.628 ms
 +
64 bytes from fc00::1: icmp_seq=2 ttl=64 time=0.615 ms
 +
64 bytes from fc00::1: icmp_seq=3 ttl=64 time=0.637 ms
 +
 +
--- fc00::1 ping statistics ---
 +
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
 +
rtt min/avg/max/mdev = 0.615/0.626/0.637/0.030 ms
 +
[root@vm-02 ~]#
 +
</syntaxhighlight>
 +
С машины <code>vm-01</code>
 +
<syntaxhighlight lang="bash">
 +
[root@vm-01 ~]# ip -6 addr show dev eth1
 +
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
 +
    inet6 fc00::1/7 scope global
 +
      valid_lft forever preferred_lft forever
 +
    inet6 fe80::9c9f:9e62:26a:7127/64 scope link
 +
      valid_lft forever preferred_lft forever
 +
[root@vm-01 ~]# ping6 -c 3 fc00::1
 +
PING fc00::1(fc00::1) 56 data bytes
 +
64 bytes from fc00::1: icmp_seq=1 ttl=64 time=0.081 ms
 +
64 bytes from fc00::1: icmp_seq=2 ttl=64 time=0.071 ms
 +
64 bytes from fc00::1: icmp_seq=3 ttl=64 time=0.090 ms
 +
 +
--- fc00::1 ping statistics ---
 +
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
 +
rtt min/avg/max/mdev = 0.071/0.080/0.090/0.012 ms
 +
[root@vm-01 ~]# ping6 -c 3 fc00::2
 +
PING fc00::2(fc00::2) 56 data bytes
 +
64 bytes from fc00::2: icmp_seq=1 ttl=64 time=0.709 ms
 +
64 bytes from fc00::2: icmp_seq=2 ttl=64 time=0.725 ms
 +
64 bytes from fc00::2: icmp_seq=3 ttl=64 time=0.684 ms
 +
 +
--- fc00::2 ping statistics ---
 +
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
 +
rtt min/avg/max/mdev = 0.684/0.706/0.725/0.016 ms
 +
[root@vm-01 ~]#
 +
</syntaxhighlight>
 +
Однако, следует внести один нюанс. Если пингуются адреса из диапазона '''link-local''', то следует указать через <code>%</code>
 +
область видимости (scope), то есть сетевой интерфейс. Так как адресы из диапазона '''link-local''' уникальны в пределах сетевого интерфейса, а не хоста!<br />
 +
Отправляем три <code>icmp</code> пакета от машины <code>vm-01</code> на машину <code>vm-02</code>, используя '''link-local''' адресы:
 +
<syntaxhighlight lang="bash">
 +
[root@vm-01 ~]# ping6 -c 3 fe80::5054:ff:fe12:f162%eth1
 +
PING fe80::5054:ff:fe12:f162%eth1(fe80::5054:ff:fe12:f162%eth1) 56 data bytes
 +
64 bytes from fe80::5054:ff:fe12:f162%eth1: icmp_seq=1 ttl=64 time=0.713 ms
 +
64 bytes from fe80::5054:ff:fe12:f162%eth1: icmp_seq=2 ttl=64 time=0.568 ms
 +
64 bytes from fe80::5054:ff:fe12:f162%eth1: icmp_seq=3 ttl=64 time=0.597 ms
 +
 +
--- fe80::5054:ff:fe12:f162%eth1 ping statistics ---
 +
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
 +
rtt min/avg/max/mdev = 0.568/0.626/0.713/0.062 ms
 +
[root@vm-01 ~]#
 +
</syntaxhighlight>
 +
 +
Теперь, сделаем то же самое, по протоколу <code>ssh</code>:
 +
<syntaxhighlight lang="bash">
 +
[root@vm-01 ~]# ssh -6 root@fe80::5054:ff:fe12:f162%eth1
 +
The authenticity of host 'fe80::5054:ff:fe12:f162%eth1 (fe80::5054:ff:fe12:f162%eth1)' can't be established.
 +
ECDSA key fingerprint is 3b:71:1c:f1:33:fe:b4:d4:42:a3:6d:5c:eb:29:a4:1f.
 +
Are you sure you want to continue connecting (yes/no)? yes
 +
Warning: Permanently added 'fe80::5054:ff:fe12:f162%eth1' (ECDSA) to the list of known hosts.
 +
root@fe80::5054:ff:fe12:f162%eth1's password:
 +
Last login: Thu Dec  7 12:04:00 2017 from 192.168.122.1
 +
[root@vm-02 ~]# exit
 +
logout
 +
Connection to fe80::5054:ff:fe12:f162%eth1 closed.
 +
[root@vm-01 ~]# ssh -6 root@fc00::2
 +
The authenticity of host 'fc00::2 (fc00::2)' can't be established.
 +
ECDSA key fingerprint is 3b:71:1c:f1:33:fe:b4:d4:42:a3:6d:5c:eb:29:a4:1f.
 +
Are you sure you want to continue connecting (yes/no)? yes
 +
Warning: Permanently added 'fc00::2' (ECDSA) to the list of known hosts.
 +
root@fc00::2's password:
 +
Last login: Thu Dec  7 13:19:02 2017 from fe80::9c9f:9e62:26a:7127%ens10
 +
[root@vm-02 ~]#
 +
</syntaxhighlight>
  
 
== Ссылки ==
 
== Ссылки ==
[https://www.iana.org/assignments/iana-ipv6-special-registry/iana-ipv6-special-registry.xhtml IANA IPv6 Special-Purpose Address Registry]
+
[https://www.iana.org/assignments/iana-ipv6-special-registry/iana-ipv6-special-registry.xhtml IANA IPv6 Special-Purpose Address Registry]<br />
 +
[https://habrahabr.ru/post/192164/ Практика IPv6 — домашняя сеть]

Текущая версия на 12:02, 18 января 2018

Конфигурирование ipv6

Предварительные требования

  • Две виртуальная машины с двумя сетевыми интерфейсами
  • Установленные пакеты: bash-completion

Общая информация и терминология

Адрес состоит из 8 блоков (хекстетов) шестнадцатеричных чисел. Каждый блок (хекстет) состоит из 4 символов, например:

2001:0db8:0070:0000:0000:0000:0000:7777/32

Однако, кодируются именно символы, каждый символ в хекстете кодируется 4 битами (ниблом), то есть первый хекстет будет иметь следующий двоичный вид (точки представлены для наглядности): 0010.0000.0000.0001.
Для упрощения манипуляции такими адресами, имеются следующиие правила:

  • Старшие нули в блоках можно опустить. Например:
2001:0db8:70:0000:0000:0000:0000:7777/32
  • Если нули в блоках расположены последовательно, в записи их можно опустить (Zero Compression) вставив два двоеточия :. Но только один раз, дабы не возникло неоднозначности. Например:
2001:0db8:70::7777/32

Методы доставки информации

  • Unicast - от одного источника, к одному получателю. Получатели могут быть следующими:
  1. Global Unicast Addresses - адреса маршрутизируемые в сети Internet (аналог публичного диапазона ipv4), находящиеся в диапазоне от 2066::/16 до 3fff::/16
  2. Unique-Local Addresses - адреса не маршрутизируемые в стети Internet (приблизительный аналог частного диапазона ipv4), находящиеся в пространстве fc00::/7
  3. Link-local Addresses - адреса не маршрутизируемые в стети Internet, необходимые для автоконфигурирования устройств (аналог APIPA в ipv4), находящиеся в пространстве fe80::/10
  • Multicast - от одного источника, к нескольким получателям. В ipv6 также является заменой broadcast'y. Для получения пакетов в мультикасте, необходимо быть включенным в специальную группу. Те интерфейсы, которые не включены в группу - игнорируют мультикаст пакеты.
  • Anycast - множеству интерфейсов присваивается один ip адрес. При этом эникаст пакеты получает "ближайший" получатель, согласно метрике маршрута.


Архитектура адресов

Юникаст адресы формируются следующим образом:

n бит 128 бит
префикс подсети идентификатор интерфейса

Global Unicast Addresses формируются по следующей схеме:

n бит m бит 128-n-m бит
глобальный префикс маршрутизации идентификатор подсети идентификатор интерфейса

Все глобальные юникаст адреса, имеющие первые биты, отличные от 0000, имеют 64 битное поле идентификатора интерфейса. Глобальные юникаст адреса начинающиеся с 0000 не имеют ограничений на размер или структуру поля идентификатора интерфейса

Local IPv6 Unicast Addresses формируются по следующей схеме:

7 бит 1 бит 40 бит 16 бит 64 бита
префикс L глобальный идентификатор идентификатор подсети идентификатор интерфейса

Где:

  • Префикс - fc00::/7 для идентификации локальных ipv6 адресов
  • L - бит установленный в значение 1 указывает, что адрес присвоен локально. Значение 0 зарезервированно для будущего использования.
  • Глобальный идентификатор - 40 битный префикс используемый для создания глобально уникальный префикс
  • Идентификатор подстети - 16 битный идентификатор подсети
  • Идентификатор интерфейса - 64 битный идентификатор интерфейса.

Link-Local IPv6 Unicast Addresses формируются по следующей схеме:

10 бит 54 бита 64 бита
1111111010 0 идентификатор интерфейса

Адреса данного типа созданы для автоматического конфигурирования интерфейсов, для обнаружения соседних сетевых устройств, или в сетях, где отсутствуют маршрутизаторы. Роутеры не должны маршрутизировать пакеты в которых источник или получатель имеет адрес из указанного диапазона.

Специальные адресы

  1. 0:0:0:0:0:0:0:0 - называется неопределенным адресом, то есть отражает отсутствие адреса как такового, поэтому никогда не должен присваиваться. Пакет с таким адресом не подлежит маршрутизации и не должен использоваться в качестве адреса получателя.
  2. 0:0:0:0:0:0:0:1 - петлевой адрес. Может использоваться любой нодой для того, что бы отправить пакет самому себе. Пакет с таким адресом в качестве источника или получателя не должен уходить за пределы ноды, в противном случае - он должен быть отброшен.

Зарезервированные диапазоны

Согласно перечню специальных адресов IANA, зарезервированны следующие диапазоны:

Диапазон Описание RFC
 ::/128 Неопределенный адрес rfc4291
 ::1/128 Loopback Address (эквивалентен 127.0.0.1/8) rfc4291
 ::/0 Default route (эквивалентен 0.0.0.0) rfc4291
 ::ffff:0:0/96 IPv4-mapped Address rfc4291
64:ff9b::/96 IPv4-IPv6 Translat. rfc6052
64:ff9b:1::/48 IPv4-IPv6 Translat. rfc8215
100::/64 Discard-Only Address Block rfc6666
2001::/23 IETF Protocol Assignments rfc2928
2001::/32 TEREDO rfc4380, rfc8190
2001:1::1/128 Port Control Protocol Anycast rfc7723
2001:1::2/128 Traversal Using Relays around NAT Anycast rfc8155
2001:2::/48 Benchmarking rfc5180, RFC Errata 1752
2001:3::/32 AMT rfc7450
2001:4:112::/48 AS112-v6 rfc7535
2001:5::/32 EID Space for LISP (Managed by RIPE NCC) rfc7954
2001:10::/28 Deprecated (previously ORCHID) rfc4843
2001:20::/28 ORCHIDv2 rfc7343
2001:db8::/32 Для использования в документации rfc3849
2002::/16 6to4 rfc3056
2620:4f:8000::/48 Direct Delegation AS112 Service rfc7534
fc00::/7 Unique-Local (эквивалент частным, не маршрутизируемым в интернет сетям в ipv4) rfc4193, rfc8190
fe80::/10 Link-Local Unicast (аналог APIPA) rfc4291
ff00::/8 Multicast адреса rfc4291

Настройка интерфейсов

Присвоим интерфейсам на машинах vm-01 и vm-02, адреса fc00::1/7 и fc00::2/7 соответственно:

[root@vm-01 ~]# nmcli connection show
NAME  UUID                                  TYPE            DEVICE 
eth0  89d6addf-2717-4933-ac09-c63936ed5205  802-3-ethernet  eth0   
eth1  b1b57e4d-26fd-438b-846d-bcdee06aee53  802-3-ethernet  eth1   
[root@vm-01 ~]# nmcli connection down eth1
Connection 'eth1' successfully deactivated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/2)
[root@vm-01 ~]# ip addr show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN qlen 1
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host 
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:07:c2:1a brd ff:ff:ff:ff:ff:ff
    inet 192.168.122.158/24 brd 192.168.122.255 scope global dynamic eth0
       valid_lft 2561sec preferred_lft 2561sec
    inet6 fe80::5c77:2f55:bace:49ba/64 scope link 
       valid_lft forever preferred_lft forever
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether 52:54:00:92:b1:55 brd ff:ff:ff:ff:ff:ff
[root@vm-01 ~]# nmcli connection edit eth1 

===| nmcli interactive connection editor |===

Editing existing '802-3-ethernet' connection: 'eth1'

Type 'help' or '?' for available commands.
Type 'describe [<setting>.<prop>]' for detailed property description.

You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, dcb, ipv4, ipv6
nmcli> set ipv6.addresses 
Enter 'addresses' value: 
nmcli> print ipv6.addresses 
ipv6.addresses: 
nmcli> set ipv6.addresses fc00::1/7
Do you also want to set 'ipv6.method' to 'manual'? [yes]: yes
nmcli> save
Connection 'eth1' (b1b57e4d-26fd-438b-846d-bcdee06aee53) successfully updated.
nmcli> save persistent 
Connection 'eth1' (b1b57e4d-26fd-438b-846d-bcdee06aee53) successfully updated.
nmcli> quit
[root@vm-01 ~]# nmcli connection up eth1
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
[root@vm-01 ~]# ip -6 addr show dev eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 fc00::1/7 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::9c9f:9e62:26a:7127/64 scope link 
       valid_lft forever preferred_lft forever
[root@vm-01 ~]#

На второй машине проделаем ту же операцию:

[root@vm-02 ~]# nmcli connection show
NAME   UUID                                  TYPE            DEVICE 
ens10  d95a3145-91f8-4e9d-8219-975da848f2e7  802-3-ethernet  ens10  
ens3   427963c7-c016-417a-a542-7738fd158922  802-3-ethernet  ens3   
[root@vm-02 ~]# nmcli connection down ens10
[root@vm-02 ~]# nmcli connection edit ens10

===| nmcli interactive connection editor |===

Editing existing '802-3-ethernet' connection: 'ens10'

Type 'help' or '?' for available commands.
Type 'describe [<setting>.<prop>]' for detailed property description.

You may edit the following settings: connection, 802-3-ethernet (ethernet), 802-1x, ipv4, ipv6, dcb
nmcli> set ipv6.addresses 
Enter 'addresses' value: 
nmcli> print ipv6.addresses
Error: unknown setting: 'ipv6.addresses'
nmcli> print ipv6
['ipv6' setting values]
ipv6.method:                            auto
ipv6.dns:                               
ipv6.dns-search:                        
ipv6.addresses:                         
ipv6.routes:                            
ipv6.ignore-auto-routes:                no
ipv6.ignore-auto-dns:                   no
ipv6.never-default:                     no
ipv6.may-fail:                          yes
ipv6.ip6-privacy:                       -1 (unknown)
ipv6.dhcp-hostname:                     --
nmcli> set ipv6.addresses fc00::2/7
Do you also want to set 'ipv6.method' to 'manual'? [yes]: yes
nmcli> save
Connection 'ens10' (d95a3145-91f8-4e9d-8219-975da848f2e7) successfully updated.
nmcli> save persistent 
Connection 'ens10' (d95a3145-91f8-4e9d-8219-975da848f2e7) successfully updated.
nmcli> quit
[root@vm-02 ~]# nmcli connection up ens10
Connection successfully activated (D-Bus active path: /org/freedesktop/NetworkManager/ActiveConnection/3)
[root@vm-02 ~]# ip -6 add show dev ens10
3: ens10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 fc00::2/7 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe12:f162/64 scope link 
       valid_lft forever preferred_lft forever
[root@vm-02 ~]#

Проверка

Отправим по 3 icmp пакета сначала себе, а затем соседу. С машины vm-02:

[root@vm-02 ~]# ip -6 addr show dev ens10
3: ens10: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qlen 1000
    inet6 fc00::2/7 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::5054:ff:fe12:f162/64 scope link 
       valid_lft forever preferred_lft forever
[root@vm-02 ~]# ping6 -c 3 fc00::2
PING fc00::2(fc00::2) 56 data bytes
64 bytes from fc00::2: icmp_seq=1 ttl=64 time=0.073 ms
64 bytes from fc00::2: icmp_seq=2 ttl=64 time=0.068 ms
64 bytes from fc00::2: icmp_seq=3 ttl=64 time=0.071 ms

--- fc00::2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 1999ms
rtt min/avg/max/mdev = 0.068/0.070/0.073/0.009 ms
[root@vm-02 ~]# ping6 -c 3 fc00::1
PING fc00::1(fc00::1) 56 data bytes
64 bytes from fc00::1: icmp_seq=1 ttl=64 time=0.628 ms
64 bytes from fc00::1: icmp_seq=2 ttl=64 time=0.615 ms
64 bytes from fc00::1: icmp_seq=3 ttl=64 time=0.637 ms

--- fc00::1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2002ms
rtt min/avg/max/mdev = 0.615/0.626/0.637/0.030 ms
[root@vm-02 ~]#

С машины vm-01

[root@vm-01 ~]# ip -6 addr show dev eth1
3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 state UP qlen 1000
    inet6 fc00::1/7 scope global 
       valid_lft forever preferred_lft forever
    inet6 fe80::9c9f:9e62:26a:7127/64 scope link 
       valid_lft forever preferred_lft forever
[root@vm-01 ~]# ping6 -c 3 fc00::1
PING fc00::1(fc00::1) 56 data bytes
64 bytes from fc00::1: icmp_seq=1 ttl=64 time=0.081 ms
64 bytes from fc00::1: icmp_seq=2 ttl=64 time=0.071 ms
64 bytes from fc00::1: icmp_seq=3 ttl=64 time=0.090 ms

--- fc00::1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.071/0.080/0.090/0.012 ms
[root@vm-01 ~]# ping6 -c 3 fc00::2
PING fc00::2(fc00::2) 56 data bytes
64 bytes from fc00::2: icmp_seq=1 ttl=64 time=0.709 ms
64 bytes from fc00::2: icmp_seq=2 ttl=64 time=0.725 ms
64 bytes from fc00::2: icmp_seq=3 ttl=64 time=0.684 ms

--- fc00::2 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.684/0.706/0.725/0.016 ms
[root@vm-01 ~]#

Однако, следует внести один нюанс. Если пингуются адреса из диапазона link-local, то следует указать через % область видимости (scope), то есть сетевой интерфейс. Так как адресы из диапазона link-local уникальны в пределах сетевого интерфейса, а не хоста!
Отправляем три icmp пакета от машины vm-01 на машину vm-02, используя link-local адресы:

[root@vm-01 ~]# ping6 -c 3 fe80::5054:ff:fe12:f162%eth1
PING fe80::5054:ff:fe12:f162%eth1(fe80::5054:ff:fe12:f162%eth1) 56 data bytes
64 bytes from fe80::5054:ff:fe12:f162%eth1: icmp_seq=1 ttl=64 time=0.713 ms
64 bytes from fe80::5054:ff:fe12:f162%eth1: icmp_seq=2 ttl=64 time=0.568 ms
64 bytes from fe80::5054:ff:fe12:f162%eth1: icmp_seq=3 ttl=64 time=0.597 ms

--- fe80::5054:ff:fe12:f162%eth1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.568/0.626/0.713/0.062 ms
[root@vm-01 ~]#

Теперь, сделаем то же самое, по протоколу ssh:

[root@vm-01 ~]# ssh -6 root@fe80::5054:ff:fe12:f162%eth1
The authenticity of host 'fe80::5054:ff:fe12:f162%eth1 (fe80::5054:ff:fe12:f162%eth1)' can't be established.
ECDSA key fingerprint is 3b:71:1c:f1:33:fe:b4:d4:42:a3:6d:5c:eb:29:a4:1f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'fe80::5054:ff:fe12:f162%eth1' (ECDSA) to the list of known hosts.
root@fe80::5054:ff:fe12:f162%eth1's password: 
Last login: Thu Dec  7 12:04:00 2017 from 192.168.122.1
[root@vm-02 ~]# exit
logout
Connection to fe80::5054:ff:fe12:f162%eth1 closed.
[root@vm-01 ~]# ssh -6 root@fc00::2
The authenticity of host 'fc00::2 (fc00::2)' can't be established.
ECDSA key fingerprint is 3b:71:1c:f1:33:fe:b4:d4:42:a3:6d:5c:eb:29:a4:1f.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added 'fc00::2' (ECDSA) to the list of known hosts.
root@fc00::2's password: 
Last login: Thu Dec  7 13:19:02 2017 from fe80::9c9f:9e62:26a:7127%ens10
[root@vm-02 ~]#

Ссылки

IANA IPv6 Special-Purpose Address Registry
Практика IPv6 — домашняя сеть