Ipv6 — различия между версиями
Andy (обсуждение | вклад) (→Зарезервированные диапазоны) |
Andy (обсуждение | вклад) (→Общая информация и терминология) |
||
Строка 5: | Строка 5: | ||
* Установленные пакеты: <code>bash-completion</code> | * Установленные пакеты: <code>bash-completion</code> | ||
− | + | == Общая информация и терминология == | |
Адрес состоит из 8 блоков (хекстетов) шестнадцатеричных чисел. Каждый блок (хекстет) состоит из 4 символов, например: | Адрес состоит из 8 блоков (хекстетов) шестнадцатеричных чисел. Каждый блок (хекстет) состоит из 4 символов, например: | ||
<syntaxhighlight lang="bash"> | <syntaxhighlight lang="bash"> |
Текущая версия на 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 - от одного источника, к одному получателю. Получатели могут быть следующими:
- Global Unicast Addresses - адреса маршрутизируемые в сети Internet (аналог публичного диапазона ipv4), находящиеся в диапазоне от
2066::/16
до3fff::/16
- Unique-Local Addresses - адреса не маршрутизируемые в стети Internet (приблизительный аналог частного диапазона ipv4), находящиеся в пространстве
fc00::/7
- 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 | идентификатор интерфейса |
Адреса данного типа созданы для автоматического конфигурирования интерфейсов, для обнаружения соседних сетевых устройств, или в сетях, где отсутствуют маршрутизаторы. Роутеры не должны маршрутизировать пакеты в которых источник или получатель имеет адрес из указанного диапазона.
Специальные адресы
- 0:0:0:0:0:0:0:0 - называется неопределенным адресом, то есть отражает отсутствие адреса как такового, поэтому никогда не должен присваиваться. Пакет с таким адресом не подлежит маршрутизации и не должен использоваться в качестве адреса получателя.
- 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 — домашняя сеть