Sorry, you have been blocked
This website is using a security service to protect itself from online attacks. The action you just performed triggered the security solution. There are several actions that could trigger this block including submitting a certain word or phrase, a SQL command or malformed data.
What can I do to resolve this?
You can email the site owner to let them know you were blocked. Please include what you were doing when this page came up and the Cloudflare Ray ID found at the bottom of this page.
Cloudflare Ray ID: 7a254f710e6b24b4 • Your IP: Click to reveal 88.135.219.175 • Performance & security by Cloudflare
Протокол IPv6
Протокол IPv6 пришел на замену протоколу IPv4 и хотя в настоящее время IPv4 всё еще везде используется, придет время и протокол IPv6 вытеснит своего предшественника полностью.
Первое, что стоит упомянуть когда рассматривают протокол IPv6 — это измененная структура адреса и количество возможных адресов. Если в IPv4 используется 2^32 адресов, то в новой версии это число достигает невероятных значений 2^128 . Структура адреса выглядит следующим образом: 2001:1536:a0b8:3491:c800:00ef:fe74:0c00 — 8 хекстетов, разделенных символом :
Типы адресов IPv6
Всего существует три основных типа IPv6 адресов:
- Unicast адреса
- Anycast адреса
- Multicast адреса
В отличие от IPv4, в IPv6 нет broadcast адресов. Однако, группа multicast адресов “all nodes” делает ту же работу, что и broadcast адреса.
Unicast
IPv6 unicast адреса работают в точности так же как и в IPv4. Данные адреса определяют один интерфейс или устройство. Существует три типа IPv6 unicast адресов:
- Global адреса — это те же адреса, что и публичные адреса в IPv4. Они глобально маршрутизируются и могут использоваться при коммуникации через сеть Интернет. В настоящее время вся глобальная одноадресная адресация выделяется из префиксного блока 2000::/3 .
- Unique local unicast адреса — адреса, которые в IPv4 определены как “серые”, т.е. адреса, описанные в RFC 1918. Данные адреса маршрутизируются в пределах внутренней коммуникации организации и не маршрутизируются в сети Интернет. RFC 4193 определяет блок префиксов fc00::/7 для уникальной локальной одноадресной адресации. Данные адреса всегда начинаются с двоичного значения 1111 110 , которое соответствует префиксу fc00::/7 . Восьмой бит — бит L в настоящее время установлен в 1, чтобы указать, что адрес назначен локально. Установка бита L на 0 еще не определена и зарезервирована для использования в будущем. Объединение префикса (первых 7 бит) и бита L создает два потенциальных адресных блока:
- fc00::/8 : зарезервировано для будущего использования
- fd00::/8 : локальная одноадресная адресация
- Link-local адреса — немаршрутизируемые адреса, используются для коммуникации в пределах одного непосредственно подключенного канала. Основное назначение данных адресов — обнаружение соседей и определение дубликата адресов. Адреса выделяются из префиксного блока fe80::/10 . Данные адреса могут назначаться как вручную, так и динамически с использованием механизма SLAAC (stateless address autoconfiguration). При использовании SLAAC часть Interface ID выводится из MAC-адреса модификацией формата EUI-64.
Anycast
Anycast адреса представляют скорее сервис нежели чем отдельное устройство, поэтому один адрес может быть назначен разным устройствам, предоставляющим один и тот же сервис. Основное предназначение anycast адресов — обеспечение отказоустойчивости.
На следующей схеме приведён пример того как может выглядеть это в реальности
Anycast В сети имеется два сервера, которые имеют идентичную адресацию, но физически расположены в разных местах. В зависимости от того где находится клиент, трафик пойдет к ближайшему серверу, опираясь на таблицу маршрутизации.
В случае если в сети произойдет падение одного из маршрутизаторов, находящихся рядом с серверами, произойдет перестроение пути следования трафика для одного из клиентов и трафик для этого клиента пойдет по новому пути. В этом случае оба клиента будут обращаться к одному и тому же серверу.
Какого определённого формата для данных типов адресов не существует, поэтому теоретически любой unicast адрес может быть anycast. Для корректной работы anycast адресов может быть желательно отключать механизм определения дубликата адресов (DAD — Duplicate Address Detection). В операционной системе Cisco IOS и Cisco IOS XE механизм DAD отключается для всего префикса, делается это следующей командой:
Для операционной системы Cisco IOS XR механизм DAD отключается для всего интерфейса (включая префиксы link-local) с помощью команды:
Multicast
Multicast адреса определяют не одно устройство, а группу устройств — multicast группу, при этом в данной группе может состоять как множество устройств, так и одно. Multicast адреса не могут выступать в качестве адреса источника в пакете. В IPv6 не существует как такового broadcast адреса, вместо него есть multicast группа «All nodes» , которая по сути имеет то же предназначение, что и broadcast в IPv4.
В IPv6 multicast адреса имеют различное назначение: передача информации о протоколе маршрутизации, обнаружение соседних устройств, разрешение IPv6-адресов. Более подробно об этом будет описано в статье по протоколу Neighbor Discovery Protocol
Multicast address structure Как видно из рисунка выше, первые 8 бит всегда установлены в 1 , следующие 4 бита отвечают за флаги. Первые три бита из поля Flags установлены в 0 и в настоящее время не используются. Четвёртый бит из поля Flags — флаг transient .
Флаг T — transient имеет два возможных значения:
- 0 — постоянный адрес, который широко известен и присваивается IANA
- 1 — временный адрес, используется для целей тестирования
Поле Scope используется для того, чтобы маршрутизатор мог определить является ли multicast адрес маршрутизируемым. Все диапазоны таких адресов описаны в RFC 4291. Краткая выдержка представлена в таблице ниже.
Типы диапазонов IPv6 префикс Описание Reserved ff00 Зарезервировано Interface-Local ff01 Interface-Local диапазон не позволяет multicast пакетам проходить через интерфейс. Данный диапазон аналогичен адресу unicast loopback, поскольку multicast пакеты содержатся внутри одного устройства. Link-Local ff02 Link-Local диапазон содержит multicast трафик для локальной интерфейсной связи. Admin-Local ff04 Admin-Local диапазон является маршрутизируемым и считается наименьшей административным диапазоном. Граница диапазона действия не имеет определенных ограничений, но обычно трафик ограничен одним отделом или этажом в здании. Site-Local ff05 Site-Local диапазон является также маршрутизируемым и считается большим, чем admin-Local диапазон. Граница обычно ограничивается зданием или регионом. Organization-Local ff08 Organization-Local диапазон является также маршрутизируемым и должен располагаться в одной организации. Global ff0е Global диапазон не имеет никаких ограничений на достижимость. Поле Group ID определяет индивидуальную multicast группу. На данное поле отводится 112 бит, 80 из которых в настоящее время не используются и установлены в 0.
Наиболее широко известные и используемые адреса представлены в таблице ниже
Адрес Описание ff02::1 All nodes адрес ff02::2 All-routers адрес ff02::5 Aдрес OSPFv3 all routers ff02::6 Aдрес OSPFv3 all DR ff02::8 IS-IS ff02::9 RIPng ff02::a EIGRP ff02::d PIM ff02::1:2 Адрес всех DHCPv6 relay агентов и серверов ff05::1:3 Адрес всех DHCPv6 серверов ff02::1:ffxx:xxxx Адрес запрашиваемого узла, используется для обнаруженя соседних узлов для разрешения адресов (последние 24 бита [xx:xxxx] адреса сопоставляются с последними 24 битами unicast адреса IPv6) Более полный список можно увидеть, перейдя по ссылке
Каждое устройство автоматически присоединяется к двум multicast группам: all nodes — ff02::1 и solicited-node — ff02::1:ffxx:xxxx . Группа all nodes используется для связи со всеми интерфейсами на локальном канале, а группа solicited-node требуется для разрешения адресов на уровне канала. Маршрутизаторы также присоединяются к третьей multicast группе all-routers — ff02::2 .
Для того чтобы посмотреть в какой группе состоит тот или иной интерфейс необходимо выполнить команду show ipv6 interface <тип интерфейса номер интерфейса>
Cisco IOS
Cisco IOS XR
Специальные IPv6 адреса
Помимо основных адресов, описанных выше, есть два типа, которые не включены ни в одну из категорий.
- Неопределенный адрес — указывает на то, что на интерфейсе еще нет никакого адреса, обозначается как 0:0:0:0:0:0:0:0 или просто :: . Данный адрес используется устройством когда оно только инициализированно и не получило еще никакого другого адреса
- Loopback адрес — используется для того чтобы отправлять пакеты самому себе, обозначается как 0:0:0:0:0:0:0:1 или ::1
Структура заголовка IPv6
Формат заголовка протокола IPv6 представлен на рисунке ниже
Header IPv6 Version — 4-битное поле, также как и в протоколе IPv4 отвечает за версию протокола. Принимает значение 0110 .
Version Traffic Class — 8-битное поле, идентично полю DiffServ в протоколе IPv4.
Traffic Service Flow Label — 20-битное уникальное для IPv6 поле. Данное поле позволяет помечать определенный поток трафика, при балансировке трафика метка позволяет более точно определять путь, по которому пойдет тот или иной пакет, предотвращая возможное изменение следования порядка пакетов.
Поток определяется как совокупность адреса и порта источника и назначения. Однако, определить порт источника и назначения для маршрутизатора может быть сложной задачей и возможным падением производительности для него. Расширения заголовка IPv6 позволяют маршрутизатору определить заголовок транспортного уровня.
Flow Label Payload Length — 16-битное поле, определяющее длину содержимого пакета в байтах. Размер заголовка IPv6 всегда фиксирован и составляет 40 байт, поэтому, в отличие от протокола IPv4, вычитать размер заголовка из общего содержимого пакета нет необходимости.
Payload Length Next Header — 8-битное поле, определяющее заголовок протокола, который следует за протоколом IPv6. Данное поле идентично полю Protocol в заголовке IPv4 и используется для тех же самых целей. Однако, в протоколе IPv6 вместо протокола, располагающегося выше протокола IPv6, можеть быть расширение заголовка IPv6.
Hext Header Hop Limit — 8-битное поле, выполняющее те же функции, что и поле Time to Live в протоколе IPv4. Если данное поле примет значение 0 на пути следования пакета, то пакет будет отброшен.
Hop Limit Source и Destination Address — 128-битные поля, определяющие адреса источника и назначения соответственно.
Source и Destination Address В данном дампе можно более подробно рассмотреть все поля протокола IPv6.
Расширение заголовка IPv6
Расширение заголовка IPv6 используется в случае когда необходимо добавить дополнительные функции для протокола (фрагментация, аутентификация и др.). В случае применения данных расширений, они добавляются в конец заголовка IPv6.
Extensions Header Каждое расширение заголовка, как и сам заголовок IPv6, имеет поле Next Header, которое определяет какой заголовок будет следовать за текущим. RFC 1883 описывает формат всех основных расширений, используемых в протоколе IPv6, а также порядок следования данных расширений заголовка. Некоторые из расширений описаны в таблице ниже.
Основы IPv6
Пост является кратким конспектом Wiki, TechNet’а, FreeBSD’шного handbook’a, Serverfault’a, множества RFC и документов IANA, а также курсов от Специалист.Ру для сотрудников Яндекса.
Пост можно рассматривать как копилку ссылок по актуальной на 2012 год спецификации IPv6. Однако он никак не описывает возможные способы установки IPv6 соединения с интернетом и не привязан к какой-либо определённой ОС.
Учтите, что прочтение данной хабрастатьи займёт у вас не более получаса, однако крайне рекомендуется ознакомиться со всеми приведёнными в статье ссылками… Последнее может занять несколько недель.Prerequisites
Хоть статья и называется «Основы IPv6» она всё-таки подразумевает наличие базовых знаний о IP сетях и хотя бы небольшой практический опыт работы с IPv6, в противном случае хабрастатья будет даваться очень не легко.
Так же рекомендуется к прочтению документ Implementing IPv6 Addressing and Basic Connectivity от Cisco.
Ещё стоит заметить, что приведённые на википедию ссылки зачастую более примечательны разделом References нежели своим содержанием.IPv6 Адреса
Анатомия IPv6 адресов
В первой версии этого хабрапоста тут было много текста, но с того момента на википедии выросла отличная статья: IPv6 Address.
Маски подсетей
Маски теперь задаются только /prefix’ами (CIDR), классовой адресации и стандартной decimal dotted нотации в IPv6 нет. Так же теперь первый и последний адрес сети не являются зарезервированными под идентификатор сети и broadcast соответственно.
Выделение IPv6 адресов
Как и в случае с IPv4, IPv6’ые адреса выделяются через целую иерархию организаций:
RIR(/12-/23) -> NIR(??) -> LIR(/19-/32) -> ISP(/48-/56) -> LAN(=>/64)
ISP уже выделяют адреса сетям как хотят. Однако и тут есть Best-Practice от IPv6 Task Force: Guidelines for ISPs on IPv6 Assignment to Customers.
В общем пожелания по выделению IPv6 адресов описаны в RFC5375 IPv6 Unicast Address Assignment Considerations
Также интересная деталь: Таблицы маршрутизации в IPv6 планировали изначально делать как можно более «агригабельными», что подразумевало отсутствие Provider-Independent (PI) адресов. Однако крупные копрорации (видимо желающие делать BGP-failover) в 2009 году всё-таки «продавили» RIPE, так что получить PI-адреса в IPv6 теперь реально.Типы адресов и их префиксы
- ::/128 — Unspecified — не должен принадлежать ни одной ноде в сети;
- ::/0 — Default route ;
- ::1/128 — Loopback ;
- fe80::/10 — Link-Local — адреса уникальные на линке. Создание IPv6 link-local адреса из префикса fe80:: и MAC адреса сетевой карты, как и многое другое описано в презентации от Microsoft и в документе Introduction to IP Version 6, также процедура создания модифицированного EUI-64 идентификатора на пальцах разъяснена в Приложении А RFC4291);
- fec0::/10 — Site-Local — устарели судя по RFC3879;
- fc00::/7 — Unique Site-Local — пришли на замену Site-Local в RFC4193. В данный момент разбит на две части: fc00::/8 и fd00::/8. Уникальные в пределах организации, не роутящиеся в интернет адреса. Однако могут роутиться внутри site’a и между site’ами;
- ff00::/8 — Multicast — о мультикасте подробнее расскажу чуть ниже. Полный список мультикаст адресов можно посмотреть тут: IANA IPv6 Multicast Addresses;
- ::0000/96 — IPv4-Compatible IPv6 Address — устарели;
- ::ffff/96 — IPv4-Mapped IPv6 Address — Адреса предназначенные в основногм для Socket API. Более подробно их назначение описано в RFC4038. Прочтение этого RFC будет полезно программистам которые собираются писать Dual-Stack приложения;
Виды трафика
- Unicast — Старый добрый юникаст;
- Multicast — Мультикаст теперь необходимое расширение, а не опциональное как в IPv4. IGMP был заменён на MLD (Multicast Listener Discovery). А процедура получения глобального мультикаст префикса стала тривиальной — теперь при получении /64 префикса провайдер автоматически получает 4.2 миллиарда глобальных мультикаст групп. Процедура подробно описана в RFC3306, а также дополнена внедрением адреса RP прямо в IPv6 адрес в RFC3956. Получение глобального мультикаст префикса для IPv4 и IPv6 описано в RFC6308. Стоит также заметить, что в IPv4 Multicast link-layer префикс был 01:00:5e, в IPv6 он стал 33:33:ff (посмотреть список групп для интерфейсов во FreeBSD можно через ifmcstat или же через ip maddr в Linux);
- Anycast — Такой же anycast как и в IPv4. Этот тип адреса обычно анонсируется протоколом динамической маршрутизации (например BGP), сразу из нескольких мест. Это обеспечивает оптимальный, с точки зрения протокола маршрутизации, роутинг;
- Broadcast — в IPv6 broadcast’а не существует. В место него можно использовать All Nodes Address. Пакеты посланные на него будут рассылаться только на хосты с настроенным IPv6 адресом (при включеном MLD snooping’е); Также часть протоколов раньше использовавших Broadcast в IPv6-версии всёже обзавелись собственной multicast группой;
Address Scope
В IPv6 появилось такое понятие как Scope, он же Zone ID терминологии Microsoft. На самом деле оно было и в IPv4, однако не было задано явно: сети 10/8, 172.16/12 и 192.168/16 яркие тому примеры.
В случае Unicast/Anycast адресов приминимо следующее:
У каждого IPv6 enabled интерфейса есть свой Link-local адрес. Его scope, внезапно, local. Эти адреса уникальны в пределах линка, но не обязаны быть актуальными в пределах одного хоста. Так, например, VLAN созданный на интерфейсе будет иметь такой же link-local адрес, что и родительский интерфейс (так как без использования IPv6 Privacy Extensions он будет генериться из тогоже Link Layer адреса). Для того, чтобы явно указать интерфейс которому принадлежит IPv6 адрес нужно или указывать в ручную интерфейс для исходящих пакетов или использовать специальный суффикс при записи адреса: %ИндексИнтерфейса в Windows (fe80::2b0:d0ff:fee9:4143%3) или %ИмяИнтерфейса в *BSD/Linux (fe80::2b0:d0ff:fee9:4143%em0).
В случае Multicast адресов scope указан в последних четырёх битах вторго октета IPv6 адреса: ff0s:: и может быть interface-local, link-local, admin-local, site-local, organization-local или же global.
Дополнительно стоит ознакомиться с RFC4007 IPv6 Scoped Address ArchitectureЖизненный цикл IPv6 адреса
Возможны следующие state’ы IPv6 адреса на протяжении его жизненного цикла:
- Tentative — Адрес ещё проверяется на уникальность;
- Valid — Траффик на этот адрес будет получатся хостом, делится на 2 подсостояния:
- Prefered state — Основное состояние, неограниченное использование адреса;
- Deprecated state — Адрес ещё можно использовать для старых соединений, но нельзя создавать новые соединения;
IPv6 Пакет
Заголовок IPv6 пакета
- Фиксированный размер заголовка;
- Отсутствует Checksum заголовка, соответственно, его не надо проверять, а также пересчитывать для каждого пакета при изменении
TTLHop Limit. Так как checksum больше нет, то вся ответственность за целостность информации должна лежать на протоколе более низкого уровня, так например у Ethernet фреймов есть свой честный CRC32. Так же у UDP пакетов наличие checksum теперь обязательно и UDP/IPv6 пакеты с Checksum 0000 будут просто отбрасываться принимающим хостом; - Сам TTL теперь именуется Hop Limit (скорее всего потому, что раньше одним из условий у роутера было уменьшать TTL на один каждую секунду прибывания пакета в очереди, поэтому и TIME-to-live). В связи с последним трендом с повсеместным введением MPLS/TE стоит заметить, что при прохождении IP-пакета через MPLS облако его TTL/HopLimit может не и меняется;
- Роутеры теперь не занимаются фрагментацией пакетов. Хосты должны сами проводить Path MTU discovery и разбивать пакеты. Минимальный MTU теперь равен 1280.
- Были добавлены Метки потоков, служат для разгрузки роутеров, более точной приоритезации трафика и балансировки. Более подробно можно почитать в RFC6437 — IPv6 Flow Label Specification. До сих пор ходят баталии об использовании этого поля IPv6 заголовка на практике. Эпик-треды можно почитать в RFC6294 — Survey of Proposed Use Cases for the IPv6 Flow Label, RFC6436 — Rationale for Update to the IPv6 Flow Label Specification и RFC6438 — Using the IPv6 Flow Label for Equal Cost Multipath Routing and Link Aggregation in Tunnels. Единственная операционная система(из протестированных нами) которая на выставляет по умолчению flow label’ы это FreeBSD;
- Изначально(в obsoleted RFC1883) поле Traffic Class называлось Priority и занимало 4 бита, а flow label был 24 бита. В RFC2460 они стали 8 и 20 бит соответственно. Если кому интересна никрофилия можно почитать остальные Historical notes на вики;
- Поддержка IPSec теперь является обязательной;
Extension Headers
- Hop-by-Hop Options — любой роутер на пути следования пакета должен просматривать только IPv6 заголовок, все остальные заголовки предназначены эксклюзивно для получателя пакета. Однако Hop-By-Hop заголовок является исключением — его просматривают все роутеры и если он есть, то должен идти сразу за IPv6 заголовком.
- Routing — RFC5095 отменяет Type 0 Routing Headers, которые содержат в своём определении DoS уязвимость (ещё серьёзнее нежели source routing в IPv4). Подробнее тема безопасности в IPv6 обсуждается в RFC4942 и в презентации Security Implications of IPv6.
- Fragment — Заголовок фрагментированного пакета. Как я уже упоминал, роутеры больше не занимаются фрагментацией, так что отправитель сам должен позаботится об оптимальном размере пакета, иначе получит Packet too big от одного из роутеров на пути. Кстати, MTU для работы IPv6 не должен быть менее 1280.
- Destination Options — Опции предназначенные только получателю.
- Authentication — RFC4302
- Encapsulating Security Payload — RFC4303
IPv6 Протоколы
ICMPv6
ICMP в IPv6 был заменён на ICMPv6. О ICMPv6 можно прочитать в RFC4443 Internet Control Message Protocol (ICMPv6) for the Internet Protocol Version 6 (IPv6) Specification.
Сам по себе ICMPv6 довольно прост, однако на его основе сделано множество довольно не тривиальных протоколов, о которых мы поговорим чуть ниже.MLD
NDP
Описание Neighbor Discovery Protocol, заменившего протокол ARP, доступно в RFC4861. Теперь это не отдельный протокол, а надстройка над ICMPv6 добавляющая несколько новых типов сообщений.
Основное предназначение NDP — производить мапинг между link-layer и IPv6 адресами, однако это лишь небольшая часть функциональности.- Neigbour Unreachability Detection, позволяющая определить доступность хоста одним из двух методов:
- С помощью протокола более высокого уровня;
- С помощью unicast solicitation, на который хост должен ответить Neighbor Advertisement сообщением;
Автоконфигурация
Zeroconf
Как уже было упомянуто выше, хосты умеют автоматически генерировать себе IPv6 link-local адрес из адреса канального уровня. Так что без какой либо настройки любой IPv6-enabled хост подключённый к сети выдаёт сам себе адрес сетевого уровня.
В IPv4 эта технология использует зарезервированный IPv4 диапазон 169.254/16. Подробно технология описана в RFC3927 Dynamic Configuration of IPv4 Link-Local Addresses (Заметьте, что этот RFC вышел после IPv6’ого 2462).Stateful
В IPv4 автоконфигурация возможна только с использованием DHCP сервера. В IPv6 эту возможность оставили: можно конфигурировать сеть с помощью DHCPv6 сервера и клиента. Однако, поддержка со стороны вендоров DHCPv6 пока не блещет, так например, dhclient во FreeBSD из коробки не умеет IPv6.
Stateless
- Stateless определение адреса возможно только при наличии роутера/ротеров рассылающего RA;
- Каждый роутер имеет приоритет: high/medium/low. Операционная система должна его учитывать при выборе default route;
- RFC6106 — IPv6 Router Advertisement Options for DNS Configuration объясняет как встраивать адреса DNS-серверов прямо в RA, что позволяет избавиться от использования DHCPv6 для этого дела. Однако это поддерживается не всеми вендорами;
- Генерировать IPv6 адрес используя свой link-layer не очень безопасно с точки зрения privacy. Ваши перемещения по миру а иногда и модель оборудования будет доступна всему интернету. Решение проблемы было описано в RFC4941 — Privacy Extensions for Stateless Address Autoconfiguration in IPv6. Все современные операционные системы поддерживают Privacy Extensions;
Комбинированая
Могут использоваться одновременно оба вида автоконфигурации, например stateless для получения IPv6 префикса и stateful для получения адресов DNS-серверов и/или других параметров, которые нельзя передать с помощью Router Advertisement.
DNS
Этому моменту в документации по IPv6 уделено достаточно мало внимания, однако судя по количеству RFC на эту тему, изменения колоссальны.
Для полноценной поддержки IPv6 в DNS систему было введено множество изменений (RFC3152, RFC3226, RFC3363) и всё равно остаётся некоторое количество нерешённых проблем — RFC4472.
Некоторое время даже существовало два стандарта для описания IPv6 адресов в DNS: A6 и AAAA, плюсы и минусы каждого из них описаны в RFC3364. Если вкратце, то A6 предоставляет большую гибкость и меньшую зависимость зоны от префикса, а AAAA являются лишь частным случаем A6 с длинной префикса 0. A6 в последствии был переведён в статус Experimental в RFC3363 — Representing Internet Protocol version 6 (IPv6) Addresses in the Domain Name System (DNS)
Для минимальной поддержки IPv6 требуется только одна AAAA запись. Также может потребоваться наличие PTR записи. Обратные DNS записи для IPv6 выглядят ужасающе. Так, например, обратка для адреса 4321:0:1:2:3:4:567:89ab будет выглядеть как b.a.9.8.7.6.5.0.4.0.0.0.3.0.0.0.2.0.0.0.1.0.0.0.0.0.0.0.1.2.3.4.IP6.ARPA. . Это зрелище не для слабонервных, однако, это скорее всего сподвигнет людей к автоматической генерации обраток. Для ручной генерации я бы рекомендовал sipcalc с ключом -r или что-либо аналогичное.Прочее
Протоколы более высокого уровня
Часть протоколов, использующих адрес сетевого уровня в своей работе требовали внесения в них определённых изменением для того, чтобы начать работать по IPv6. Ярким примером такого протокола является FTP.
Тунелирование IPv6 трафика поверх IPv4 сетей
- Статические point-to-point MCT/GRE тунели; . Использует 2002::/16 диапазон. Есть ещё его разновидность для customer devices у которых с «той» стороны нет выделенного сервера для деинкапсуляции пакетов: они шлют инкапсулированые пакеты на anycast адрес 192.88.99.1 который анонсируется со множества 6to4 шлюзов с помощью протоколов динамической маршрутизации; /Miredo. Работает не со всеми видами NAT’ов; — Intra-Site Automatic Tunnel Addressing Protocol. Обычно завязано на использовании DNS (Через резолв isatap.example.com);
Mobile IPv6
Про него не знаю нечего, так что просто оставлю это здесь: Mobile IP.
IPv6 адрес как хранилище информации
Согласитесь 128бит — это огромный простор для фантазии. Существует множество технологий которые пытаются использовать эти самые 128бит. От кодирования туда IPv4 адреса и криптографических сигнатур до определения растояний между нодами (тут кстати даже мы думали в этом направлении, но пока присмтриваемся к ALTO: Application-Layer Traffic Optimization (ALTO) Problem Statement).
Socket API
Хабратопик описывает IPv6 с точки зрения NOC / системного администратора, но не с точки зрения программиста. Если кому-то интересны особенности программирования под IPv6, то рекомендую обратиться к RFC3493 — Basic Socket Interface Extensions for IPv6 и книжке IPv6 Network Programming
Префикс ipv6 что это
Posted on 21 мая, 2015

IPv4 использует 32-битные адреса, ограничивающие адресное пространство 4 294 967 296 (2^32)
IPv6 128 бит. 2^128 не реально кол-во адресов. хватит человечеству думаю до конца нашего существования.
Stateless Address Autoconfiguration или SLAAC.
В IPv6 появился новый механизм автоконфигурации узла.
Используется он для автоматического получения IP адреса и сетевого префикса узлом, без использования DHCPv6 сервера, или совместно с ним.
мы создаём некоторую сеть, мы прописываем адрес шлюза и префикс этой сети на маршрутизаторе. Этой информации достаточно, чтобы выдавать адреса устройствам. Механизм SLAAC позволяет маршрутизатору назначать устройствам адреса даже если в сети нет DHCPv6
Маршрутизатор Cisco с рабочим IPv6 интерфейсом рассылает в сеть информацию об этой сети, включающую в себя сетевую часть IP адреса и длину префикса. Кроме того, в этом сообщении содержится адрес шлюза по умолчанию для сети.
Сетевой префикс в IPv6

Правая часть, хранящая информацию о хосте имеет специальное название — «Идентификатор интерфейса» (Interface ID). В IPv6 клиенту выделяются сети с префиксом /64, что означает ещё 64 бита на хосты внутри сети. Таким образом, внутри сети может существовать 2 64 различных хостов.
Как рассчитать следующую подсеть IPV6

Как работает IPv6
По умолчанию сетевой присваивается link-local адрес (fe80::/10), ну а затем хост используя этот адрес отправляет в сеть групповой ICMPv6-запрос — Router Solicitation — для поиска роутера. Если роутер в сети есть, то он ответит хосту ICMPv6-сообщением — Router Advertisement. В ответе помимо IPv6-префикса сети могут так же присутствовать адрес шлюза, адреса DNS-серверов, MTU и пр. Затем, если на роутере запущен DHCPv6-сервер, то далее все пройдет как в случае обычного DHCP-сервера — интерфейсу присвоется адрес, маска, шлюз и DNS-серверы. Если DHCP-сервера нет, то наш узел сам себе присвоит адрес с использованием этого префикса и своего физического MAC-адреса. Так же добавляется маршрут по умолчанию на найденный роутер.
Router Advertisement (RA) и отправляется обычно раз в 200 секунд на мультикастовый адрес FF02::1
В IPv6 для мультикастовых адресов выделен специальный диапазон FF00::/8. То есть, все адреса, начинающиеся с FF – мультикастовые.
Адреса мультикаст двух типов:
- Назначенные (Assigned multicast) – специальные адреса, назначение которых предопределено.
- Запрошенные (Solicited multicast) – остальные адреса, которые устройства могут использовать для прикладных задач.
Такие мультикастовые адреса активно используются в ситуации, когда некоторое устройство хочет узнать MAC адрес своего соседа (аналог ARP в IPv4).
ПРИМЕР:
Допустим, есть устройство с адресом 2001:0DB8:ABCD:0001:0000:0000:0123:A050.Последние 24 бита (6 шестнадцатеричных цифр) в данном случае – это «23:A050». Значит это устройство обязано принимать так же и трафик, приходящий на муьтикастовый адрес FF02:0:0:0:0:1:FF23:A050.
Такие мультикастовые адреса активно используются в ситуации, когда некоторое устройство хочет узнать MAC адрес своего соседа (аналог ARP в IPv4).
Например, некоторое устройство хочет отправить пакет на локальный адрес FE80::1234:5678. Это локальный адрес (так как начинается с FE80, значит он находится в нашей локальной сети. Соответственно, чтобы на него что-то отправить, надо узнать MAC-адрес целевогоустройства (для формирования Ethernet-фрейма). Хост отправляет назапрошенный (solicited) мультикастовый адрес, FF02:0:0:0:0:1:FF34:5678 пакет. Последние 24 бита «34:5678» были взяты из IPv6-адреса искомого устройства. В случае связки IPv4 и ARP, этот пакет отправлялся бы на адрес 255.255.255.255.
Далее искомое устройство отвечает на этот мультикастовый пакет юникастом, сообщая в ответе свой MAC-адрес.
Возможны ситуации, когда несколько устройств обработают такой пакет (если у них совпадают последние 24 бита адреса), но в этом нет ничего страшного, так как это в любом случае лучше широковещания, когда все устройства обрабатывали запрос.
Параметр on-link у адреса. Грубо говоря, он указывает, как нужно маршрутизировать подсеть. Если у нас подсеть /64 и она on-link, то это означает, что все компьютеры доступны по мультикасту в пределах этой сети, и можно получать их MAC через NDP, а если нет on-link, то все запросы пойдут через gateway. Т.е., грубо говоря, в IPv4 вам для этого нужно бы было либо использовать /32 вместо /24 и бороться с неправильным source-адресом, когда запрос уходит на эту /24, в некоторых случаях, либо использовать arp proxy, а в IPv6
Бродкаста в IPv6 нет , есть только мультикаст
Neighbor discovery — это своеобразная замена ARP в IPv4, которая помогает находить мак-адреса соседей, маршрутизаторы и даже обнаруживать дублирующиеся адреса в сегменте
duplicate address detection DaD, работает исключительно по мультикасту.
Адреса записываются в виде восьми групп шестнадцатеричных значений. Например, IPv6-адрес может выглядеть как 2001:DB8:11::1. Важно отметить, что IPv6-адресов на одном интерфейсе может быть несколько, причем это стандартная ситуация. Например, на интерфейсе может быть частный адрес, белый адрес и еще по DHCPv6 приедет дополнительный адрес. И все будет штатно работать, для каждой задачи будет использоваться свой адрес. Если нужно выйти в мир, то будет использоваться белый адрес. Надо до соседнего сервера? Пойдет через частный адрес. Все это будет решаться обычным анализом поля destination.
Все IPv6-адреса делятся на две группы: Link Local и multicast.
Link local — это адрес, который используется только в пределах одного линка.
Для выхода в мир такие адреса использовать не допускается.
Link local адрес назначается автоматически, как только хост выходит онлайн, чем-то отдаленно такие адреса похожи на механизм APIPA в ОС Windows. Такой адрес всегда начинается с FE80, ну а последние 64 бита — это мак-адрес с FFFE, вставленными посередине, плюс один бит инвертируется. Механизм формирования такого адреса еще называется EUI-64.
Сравнение заголовков IPv6 и IPv4

Убрав лишние поля с заголовка ускорили маршрутизацию.
Убрали что , не является обязательным для маршрутизации пакета из точки в А в точку Б, стало опциональным Перекинули в extension header, который лежит между IPv6-заголовком и TCP/UDP-данными.
Проверка CRC есть в L2 (фрейме) так что ее выпили без трабл.
Aвтоконфигурирование
NDP
Протокол обнаружения соседей (Neighbor Discovery Protocol, NDP) — это протокол, с помощью которого IPv6-хосты могут обнаружить друг друга, определить адрес канального уровня другого хоста (вместо ARP, который использовался в IPv4), обнаружить маршрутизаторы.
Работает он с использованием мультикаста, каждый раз, когда назначается линк-локал или глобал IPv6-адрес на интерфейс, хост присоединяется к мультикаст-группе. Собственно, используется всего два типа сообщений в процессе neighbor discovery: запрос информации, или NS (neighbor solicitation), и предоставление информации — NA (neighbor advertisement)
neighbor discovery: запрос информации
NS (neighbor solicitation), и предоставление информации
NA (neighbor advertisement)
Что такое «НИБЛ» в ipv6.
Это есть префикс — должен быть кратен четырем
рекомендуется использовать длины префиксов 64, 60, 56, 52, 48 и так далее.
PPP-подсети (Point-to-Point) выделяется блок /64, но они конфигурируются с маской /126. Это позволит присваивать легкочитаемые адреса ::1, ::2 для интерфейсов. Из-за возможных проблем с anycast-адресами не стоит конфигурировать такие интерфейсы с маской /127.

Определение Префикса:
Пример:
от 2001:0DB8:BC15:0600:0000
до 2001:0DB8:BC15:0FFF:0000
Общая часть: 2001:0DB8:BC15:0
один символ равен 4 битам всего общих 13, 4*13=52
Префикс будет равен 52.

раздел Subnet будет указывать на каждый сегмент сети, разделённый маршрутизаторами. Какого максимального количества подсетей можно добиться для одного фиксированного значения Sub-site?
Поскольку только один шестнадцатеричный символ используется для представления подсети, этот символ может включать 16 различных значений от 0 до F.