я не претендую на полноту повествования. просто хочу подчеркнуть некоторые отличия IPv6 от IPv4. считается что IPv6 это что-то сложное и непонятное, но для админа и пользователя он даже проще чем IPv4. кроме того IPv6 проще обрабатывать устройствам маршрутизации т.к. в IPv6 лаконичный заголовок фиксированной длины. IPv6 проще для домашнего роутера, который в принципе можно заменить офисным свитчем, который вообще не надо настраивать.
при этом что надо отметить, что количество пользователей google на IPv6 приближается к 50%. надо ещё отметить недавно Россия лидирующие позиции по переходу на IPv6. телеком в России действительно развит хорошо. доля IPv6 трафика в Росси составляла 46%. но благодоря действиям РКН упала до жалких 15%.
Адреса IPv6
записываются в шестнадцатеричном виде. адрес разбивается на 8 групп по 16 бит, каждая группа представляется четырьмя шестнадцатеричными цифрами, отделяются друг от друга знаком двоеточия.
пример полной записи адреса: 2001:0db8:11a3:09d7:1f34:8a2e:07a0:765d.
полная запись может быть сокращена. например 2001:0db8:0000:0000:0000:8a2e:0370:7334 ведущие нули в каждой группе можно опускать. нулевые группы можно заменить на :: которым заменяют самую длинную непрерывную последовательность групп, состоящих из одних нулей.
при всех этих упрощениях надо руководствоваться одним единственным правилом "однозначность".
0001 = 1
1000 != 1
2001 != 21
и если употребите :: два раза непонятно какой длины какая последовательность нулей. пример равнозначен адресу 2001:db8::8a2e:370:7334.
можно придумать более понятное правило: в группах можно отбрасывать сплошные только нули слева, а двойное двоеточие может заменять только нулевые группы и употребить его можно только один раз:
000a =a
0010=10
005b= 5b
0c07= c07
0100= 100
2001:00d0:0000:0000:0000:90a5:0000:abcd = 2001:d0::90a5:0:abcd
в общем то все тоже самое как и в десятичной системе 000050786 = 50786
распространённое опасение о сложности запоминания длинных
IPv6-адресов на практике не так актуально, так как основным механизмом
разрешения имён является DNS. IPv6 действительно требует более
структурного подхода к проектированию сетей, что в долгосрочной
перспективе является преимуществом.
простой пример.
вы пришли куда-то с ноутбуком вам дали в руки шланг с IPv6. вы просто воткнули его в ноут и... оказались в интернете. а вроде бы в сети отсутствуют вспомогательные серверы - вот такая вот магия.
основа маги Stateless автоматическая конфигурации узлов. именно потому что серверу не нужно хранить какое-либо состояние его легко интегрировать в ту или иную железку. подробнее читайте здесь:
кроме того надо понимать что в IPv6 очень много разных типов адресов. рассмотрим основные т.е. не все.
публичный IP адрес
юникаст (Global unicast) – это аналог публичных адресов в IPv4 это в общем-то обычный IP адрес, который можно использовать в интернете. ничем примечательным не выделяется. кроме своего размера - 128 бит. в IPv4 адрес 32-битный. т.е. адресов в v6 значительно больше. это делает не нужными такие механизмы IPv4, как NAT (преобразование сетевых адресов) для экономии адресов.
IP адрес уникальный на линьке
адреса и начинается на FE80. классический механизм формирования адреса называется EUI-64. однако ввиду того что адрес жестко привязан к МАС адресу устройства в настоящее время механизм применяется редко т.к. может упростить отслеживание устройства. адрес уникальный в пределах L2 сегмента, в качестве которого как правило выступает сеть Ethernet. современные ОС как правило генерят случайный адрес, проверяют его уникальность и используют его. эти адреса не маршрутизируются за пределы локального сегмента (линка).
приватный IP адрес
Unique Local Address (ULA, FD00::/7) — это аналог приватных (private) адресов IPv4 (10.0.0.0/8, 172.16.0.0/12, 192.168.0.0/16). они используются внутри сетей организации и не маршрутизируются в глобальном интернете.
начинаются такие адреса на FD00::/7 - (зарезервирован FC00::/7) адреса предназначенные для построения приватных сетей. обращаю внимание на то, что их невозможно NATтить в публичные адреса. в классическом понимании слова, NAT в IPv6 просто нет. есть некоторые специальные случаи некоторые из которых описаны здесь
кстати говоря FD00::/7 можно записать как FD0::/7 ? а как FD::/7 ?
многоадресный (мультикаст) адрес
специальный диапазон FF00::/8. То есть, все адреса, начинающиеся с FF – мультикастовые. в IPv6 используются мультикастовые адреса двух типов:
- назначенные (Assigned multicast) — специальные адреса, назначение которых предопределено. отправляемый на такой адрес пакет будет получен всеми устройствами, для которых этот адрес предназначен.
- запрошенные (Solicited-Node Multicast Address) — остальные адреса, которые устройства могут использовать устройством для решения своих шкурных интересов.
назначенные адреса зарезервированы для определённых групп устройств. отправляемый на такой адрес пакет будет получен всеми устройствами, входящими в группу.
запрошенные адреса автоматически появляются, когда на некотором интерфейсе появляется обычный адрес. такие мультикастовые используются в ситуации, например когда некоторое устройство хочет узнать MAC-адрес своего соседа.
сети IPv6
сети в IPv6 значат не то что в IPv4. они предназначены для обозначения группы адресов, а не для экономии адресного пространства. т.е. нельзя сделать сеть из 4 адресов (правильнее сказать 2) как в IPv4. подсеть в IPv6 /64 - это ну очень много адресов.
кто тут скажет: "стой как же так - такая большая подсеть и нет NAT что клиенту выдавать /64?" можно и так - делегировать префикс, а можно любому устройству подключающемуся к сети давать свой адрес из подсети к которой клиент подключается. например у абонента 10 устройств. 10 IPv6 адресов устройства а получили.
адреса можно кстати по прежнему назначать с помощью DHCP, но я не буду рассматривать этот случай. сеть провайдера с IPv6 я не так давно уже рассматривал.
разрешение адресов.
вторым сюрпризом будет то что в IPv6 нет прямого аналога ARP. вместо этого в IPv6 есть протокол обнаружения соседей (Neighbor Discovery Protocol, NDP) который служит для того, чтобы устройства могли обнаруживать и общаться с соседними устройствами на одном канале т.е. в одном L2 сегменте.
в FF02::1 входят все устройства в локальной сети. таким образом адрес ведёт себя как широковещательный адрес в IPv4. используется для широковещательных задач вместо broadcast-адреса из IPv4
некоторые функции NDP:
- разрешение адреса. Когда устройство хочет общаться с другим устройством через свой локальный IPv6-адрес, оно отправляет сообщение Neighbor Solicitation
- Neighbor Solicitation не использует широковещание как ARP, а использует мультикаст. я не буду на этом подробно останавливаться, смысл в том, что этот адрес можно вычислить. в результате только удаленный хост получит запрос соседа. это намного эффективнее, чем использование широковещательная передача, которую получают все.
- обнаружение маршрутизатора. NDP обеспечивает автоматическое обнаружение маршрутизаторов на канале. маршрутизаторы периодически отправляют сообщения Router Advertisement, чтобы предоставить хостам важную сетевую информацию, включая префиксы, информацию о шлюзе по умолчанию.
узел также может отправлять Router Solicitation (RS) работает это следующим образом: сообщение RS отправляется на многоадресный (мукльтикаст) адрес "все маршрутизаторы"
NDP работает на сетевом уровне и использует сообщения ICMPv6
получение IP адреса.
адрес по прежнему можно настроить в ручную или с помощью DHCP и такой способ, например в сети провайдера, предпочтительнее т.к. даёт больше контроля, но мы рассмотрим механизм SLAAC.
- клиент отправляет сообщение Router Solicitation (RS), чтобы определить, есть ли какие-либо маршрутизаторы, подключённые к локальному линку.
- затем он ждёт, пока маршрутизатор отправит Router Advertisement (RA), в котором есть информация о префиксе, используемый маршрутизатором, его адрес на линьке.
- после этого клиент использует информацию о префиксе для создания своего собственного IPv6-адреса в той же сети, что и интерфейс маршрутизатора, который сгенерировал RA.
при этом существует механизм DAD (Duplicated Address Detection) позволяющий решать конфликты адресов. - в RA также есть указания каким образом взять дополнительные настройки сети - самая важная из них DNS сервер.
наш пример чуть подробнее
- вы включили устройство. оно автоматически сгенерировало уникальный адрес на линке на основании своего MAC или случайным образом, проверило его уникальность.
- используя уникальный адрес на линьке и протокол NDP отправило запрос на определение маршрутизатора, в ответ получило RA.
- используя информацию из RA, устройство сконфигурировало свой публичный IPv6 адрес, проверило уникальносить и узнало адрес маршрутизатора. теперь у устройства два IPv6 адреса.
- ну и собственно все - вы в итернетах.
ответ на вопрос
FD00::/7 можно записать как FD0::/7 00 -> 0, как FD::/7 нет.
FD::/7 это 0FD0:0000:... или FD00:0000: ... или 00FD:0000:... ?