Основы IPv6

Oct 25, 2024 09:08


я не претендую на полноту повествования. просто хочу подчеркнуть некоторые отличия IPv6 от IPv4. считается что IPv6 это что-то сложное и непонятное, но для админа и пользователя он даже проще чем IPv4. кроме того IPv6 проще обрабатывать устройствам маршрутизации т.к. в IPv6 лаконичный заголовок фиксированной длины. IPv6 проще для домашнего роутера, который в принципе можно заменить офисным свичем, который вообще не надо настраивать.

при этом что можно отметить, что что количество пользователей google на IPv6 приближается к 50%. надо отметить лидирующие позиции России по переходу на IPv6. телеком в России действительно развит хорошо. кроме того у меня на IPv6 до сих пор работает YouTube, а оператор связи у меня RTcom.

Адреса 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
2001:00d0:0000:0000:0000:90a5:0000:abcd = 2001:d0::90a5:0:abcd

в десятичной системе все тоже самое 000050786 = 50786



некоторые админы правда жалуются, что дескать длинный 128-битный адрес IPv6 сложно запомнить. но на в самом деле такие заявы дают повод объявить админу о не полном служебном соответствии. адрес забивается в DNS и забывается. ну да придется строить сети чуть-чуть правильней - вот такая вот засада.

простой пример.

вы пришли куда-то с ноутбуком вам дали в руки шланг с IPv6. вы просто воткнули его в ноут и... оказались в интернете, даже без динамически-автоматической настройки хоста (DHCP). вот такая вот магия. как такое возможно? первое, что надо понимать что в IPv6 очень много разных типов адресов. рассмотрим основные т.е. не все.

публичный IP адрес

юникаст (Global unicast) - это аналог публичных адресов в IPv4 это в общем-то обычный IP адрес, который можно использовать в интернете. ничем примечательным не выделяется. кроме своего размера - 128 бит в IPv4 адрес 32-битный. т.е. адресов в v6 значительно больше.

IP адрес уникальный на линьке

это адрес генерируется на основании МАС адреса и начинается на FE80. механизм формирования адреса называется EUI-64. адрес уникальный в пределах L2 сегмента, в качестве которого как правило выступает сеть Ethernet.

приватный IP адрес

это аналог 10/8 172.16/12 192.168/16 адреса начинаются на FD00::/7 - (зарезервирован FC00::/7) адреса предназначенные для построения приватных сетей. обращаю внимание на то, что их невозможно NATтить в публичные адреса. в классическом понимании слова, NAT в IPv6 просто нет. есть некоторые специальные случаи о которых я рассказывать не буду.

кстати говоря FD00::/7 можно записать как FD0::/7 ? а как FD::/7 ?

многоадресный (мультикаст) адрес

специальный диапазон FF00::/8. То есть, все адреса, начинающиеся с FF - мультикастовые. в IPv6 используются мультикастовые адреса двух типов:

  1. назначенные (Assigned multicast) - специальные адреса, назначение которых предопределено. отправляемый на такой адрес пакет будет получен всеми устройствами, входящими в группу. это аналог 224/4 в IPv4.
  2. запрошенные (Solicited multicast) - остальные адреса, которые устройства могут использовать устройством для решения своих шкурных вопросов.

назначенные адреса зарезервированы для определённых групп устройств. Отправляемый на такой адрес пакет будет получен всеми устройствами, входящими в группу.

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

сети IPv6

сети в IPv6 значат не то что в IPv4. они предназначены для обозначения группы адресов, а не для экономии адресного пространства. т.е. нельзя сделать сеть из 4 адресов (правильнее сказать 2) как в IPv4. минимальная подсеть в IPv6 /64 (это ну очень много адресов).

кто тут скажет: "стой как же так - такая большая подсеть и нет NAT что клиенту выдавать /64?" но все проще: каждое устройство клиента получает 1 адрес из подсети к которой клиент подключается. например у клиента 10 устройств. 10 IPv6 адресов устройства клиента получили.

адреса можно кстати по прежнему назначать с помощью DHCP, но я не буду рассматривать этот случай. сеть провайдера с IPv6 я не так давно уже рассматривал.

разрешение адресов.

вторым сюрпризом будет то что в IPv6 нет прямого аналога ARP. вместо этого в IPv6 есть протокол обнаружения соседей (Neighbor Discovery Protocol, NDP) который служит для того, чтобы устройства могли обнаруживать и общаться с соседними устройствами на одном канале т.е. в одном L2 сегменте.

еще сюрпризом будет что в IPv6 нет бродкаста. вместо этого используют адреса типа "все узлы - FF02::1", "все маршрутизаторы - FF02::2." как вы наверное уже догадались по FF это мультикаст адреса. вы скажете это те же яйца вид с боку? ну в общем-тот да, правда мозгов немного побольше, о чем скажу ниже, но так оно и есть. в FF02::1 входят все устройства в локальной сети. таким образом адрес ведёт себя как широковещательный адрес в IPv4. поэтому его использование не рекомендуется.

некоторые функции NDP:

  • разрешение адреса. Когда устройство хочет общаться с другим устройством через свой IPv6-адрес, оно отправляет сообщение Neighbor Solicitation для разрешения соответствующего адреса канального уровня (MAC). вы будете смеяться, но Neighbor Solicitation не использует широковещание как ARP, а использует мультикаст. я не буду на этом подробно останавливаться, факт тот, что этот адрес можно вычислить. в результате только удаленный хост получит запрос соседа. это намного эффективнее, чем широковещательная передача, которую получают все.
  • обнаружение маршрутизатора. NDP обеспечивает автоматическое обнаружение маршрутизаторов на канале. Маршрутизаторы периодически отправляют сообщения Router Advertisement, чтобы предоставить хостам важную сетевую информацию, включая префиксы, информацию о шлюзе по умолчанию. узел также может отправлять Router Solicitation (RS) работает это следующим образом: сообщение RS отправляется на многоадресный (мукльтикаст) адрес "все маршрутизаторы"
  • автоматическая настройка адреса. NDP позволяет хостам автоматически настраивать свои IPv6-адреса. Когда хост подключается к сети, он использует сообщения Router Advertisement, чтобы определить префиксы сети и сгенерировать уникальные IPv6-адреса.

NDP работает на сетевом уровне и использует сообщения ICMPv6

получение IP адреса.

адрес по прежнему можно настроить в ручную или с помощью DHCP и такой способ, например в сети провайдера, предпочтительнее т.к. даёт больше контроля, но мы рассмотрим встроенный механизм SLAAC.

  • клиент отправляет сообщение Router Solicitation (RS), чтобы определить, есть ли какие-либо маршрутизаторы, подключённые к локальному линку.
  • затем он ждёт, пока маршрутизатор отправит Router Advertisement (RA), которое идентифицирует префикс, используемый маршрутизатором (шлюз по умолчанию), подключённом к той же сети, в которой находится клиент.
  • после этого клиент использует эту информацию о префиксе для создания своего собственного IPv6-адреса в той же сети, что и интерфейс маршрутизатора, который сгенерировал RA.

при этом существует механизм DAD (Duplicated Address Detection) позволяющий решать конфликты адресов.

наш пример чуть подробнее

  1. вы включили устройство. оно автоматически сгенерировало уникальный адрес на линке на основании своего MAC.
  2. используя уникальный адрес на линьке и протокол NDP, устройство сконфигурировало свой публичный IPv6 адрес, и узнало МАС адрес маршрутизатора. теперь у устройства два IPv6 адреса.
  3. есть механизмы получения DNS, но я их касаться не буду.
  4. ну и собственно все - вы в итернетах.
Previous post Next post
Up