Как работает подсеть IPv6 и чем она отличается от подсети IPv4?

116

Это канонический вопрос о подсетях IPv6.

Связанный:

Я много знаю о подсетях IPv4 , и, поскольку я готовлюсь (развертывать | работаю) в сети IPv6, мне нужно знать, какая часть этих знаний может быть передана, и что мне еще нужно изучить. На первый взгляд, IPv6 намного сложнее, чем IPv4. Итак, я хотел бы знать:

  • IPv6 - это 128 бит, так почему же / 64 самая маленькая рекомендуемая подсеть для хостов? С этим связано:
    • Почему рекомендуется использовать / 127 для двухточечных соединений между маршрутизаторами, и почему это было рекомендовано в прошлом? Должен ли я изменить существующие ссылки на маршрутизатор для использования / 127?
    • Почему виртуальные машины должны быть предоставлены с адресами менее / 64?
    • Есть ли другие ситуации, в которых я бы использовал подсеть меньше / 64?
  • Можно ли сопоставить напрямую из подсетей IPv4 в подсети IPv6? Например, соответствует ли IPv4 / 24 напрямую IPv6 / 56 или / 120?
  • Мои интерфейсы имеют несколько адресов IPv6. Должна ли подсеть быть одинаковой для всех?
  • Почему иногда я вижу%, а не / в адресе IPv6 и что это значит?
  • Я трачу слишком много подсетей? Разве мы не просто выбежим снова?
  • В чем другие основные отличия подсетей IPv6 от подсетей IPv4?
Майкл Хэмптон
источник

Ответы:

138

Первое, что следует упомянуть о подсетях IPv6, это то, что требуется другой способ мышления . В IPv4 вы обычно думаете о том, сколько адресов у вас доступно и как вы можете выделить их достаточно для каждого конечного пользователя. В IPv6 вы обычно думаете о том, сколько (/ 64) подсетей у вас есть и как вы можете выделить их для конечных пользователей. Вы почти никогда не беспокоитесь о том, сколько IP-адресов будет использоваться в данной подсети. За исключением некоторых особых случаев, таких как двухточечные ссылки, каждая подсеть просто имеет гораздо больше доступных адресов, чем когда-либо, поэтому вместо этого вы беспокоитесь только о выделении подсетей, а не хостов внутри них.

Подсети IPv6 обычно / 64, потому что это требуется для работы SLAAC (автоконфигурация адреса без сохранения состояния). Даже там, где SLAAC не используется, могут быть другие причины для использования / 64. Например, некоторые устройства конечного пользователя могут предполагать, что / 64, или подсети маршрутизации длиннее / 64 могут быть неэффективными на некоторых маршрутизаторах, потому что разработчик маршрутизатора оптимизировал случай / 64 или более короткие маршруты для сохранения память таблицы маршрутизации.

Почему рекомендуется использовать / 127 для двухточечных ссылок

Для конкретного случая соединений точка-точка рекомендуется / 127 вместо / 64, чтобы избежать уязвимости, когда пакеты адресов к любому из четырех миллиардов неиспользуемых адресов в подсети вызывают нежелательные запросы на запрос соседей и записи в таблице, которые мог утопить роутер. Такие пакеты неверного адреса могут быть злонамеренными или случайными. Но даже если вы на самом деле настраиваете соединение «точка-точка» как / 127, некоторые люди рекомендуют назначать целое / 64 в любом случае просто для согласованности.

Почему виртуальные машины должны иметь подсети меньше / 64?

Я не знаю точно, почему виртуальные машины должны быть предоставлены с подсетями меньше / 64. Возможно, потому что хостинг-провайдер предполагал, что сервер был похож на конечного пользователя и требовал только одну (/ 64) подсеть, не ожидая, что сервер фактически будет набором виртуальных машин, требующих топологии внутренней маршрутизации? Это также может быть сделано просто для упрощения запоминания плана адресации: хост получает PREFIX::/64, затем каждая виртуальная машина получает то, PREFIX:0:NNNN::/96где NNNN уникален для виртуальной машины, и виртуальная машина может распределять PREFIX:0:NNNN:XXXX:YYYYее по своему усмотрению.

Можно ли сопоставить напрямую из подсетей IPv4 в подсети IPv6? Например, соответствует ли IPv4 / 24 напрямую IPv6 / 56 или / 120?

С точки зрения низкого уровня работы адресации и маршрутизации длина префикса имеет одинаковое значение в IPv6 и IPv4. На этом уровне вы можете провести аналогию, например: «IPv4 / 16 использует половину битов для сетевого адреса и половину битов для адреса хоста, это похоже на / 64 в IPv6». Но это сравнение не совсем удачно. В IPv6 появились строгие соглашения, которые делают разделение размеров сетей несколько похожим на старый мир классных сетей в IPv4. Чтобы быть уверенным, IPv6 не вновь классовый адресации , в которой наиболее значимые несколько битов адреса заставить определенную маску подсети, но то , что IPv6 действительно есть, некоторые [/ де - факто условно] стандартные размеры сети:

  • / 64 : базовый размер отдельной подсети: LAN, WAN, блок адресов для виртуальных веб-хостов и т. Д. Ожидается, что «нормальные» подсети никогда не будут меньше (с более длинным префиксом), чем / 64. Предполагается, что ни одна подсеть не будет больше (более короткий префикс), чем / 64, поскольку адрес хоста в / 64 намного больше, чем мы можем себе представить.
  • / 56 : блок из 256 базовых подсетей. Несмотря на то, что действующие политики разрешают интернет-провайдерам раздавать блоки размером до / 48 каждому конечному пользователю и при этом считают использование своего адреса вполне оправданным, некоторые интернет-провайдеры могут (и уже делают) выбрать распределение / 56 клиентам потребительского уровня в качестве компромисса. между выделением множества подсетей для них и адресной экономией.
  • / 48 : блок из 65536 базовых подсетей и рекомендуемый размер блока, который должен получить каждый конечный сайт клиента ISP.
  • / 32 : размер блока по умолчанию, который большинство интернет-провайдеров будут получать каждый раз, когда они запрашивают дополнительные адреса из регионального реестра адресов.

Внутри сетей провайдеров услуг и предприятий существует гораздо больше длин префиксов, чем эти 4. При взгляде на таблицы маршрутизации маршрутизаторов внутри этих сетей, IPv4 и IPv6 имеют много общего, в том числе большинство способов работы маршрутизации: маршруты для более длинных префиксов переопределяют маршруты, охватывающие более короткие префиксы, поэтому можно объединять (сокращать) и анализировать вниз (сделать более длинные) маршруты. Как и в IPv4, маршруты можно агрегировать или суммировать в более крупные блоки с более короткими префиксами, чтобы минимизировать размер таблиц маршрутизации.

Другой вопрос сопоставления между IPv4 и IPv6 заключается в том, как согласовать назначения IPv4 и IPv6 на машинах с двумя стеками, чтобы можно было легко понять планы адресации. Кроме того, для этого, безусловно, существуют общепринятые соглашения: встраивать «номер подсети» IPv4 в часть префикса IPv6, либо с BCD (например, 10.0.234.0/24становится 2001:db8:abcd:234::/64), либо с двоичным ( 10.0.234.0/24становится 2001:db8:abcd:ea::/64).

Мои интерфейсы имеют несколько адресов IPv6. Должна ли подсеть быть одинаковой для всех?

Точно нет! Ожидается, что хосты IPv6 смогут быть многосетевыми благодаря наличию нескольких IP-адресов одновременно, которые поступают из разных подсетей, подобно IPv4. Если они автоматически сконфигурированы с SLAAC, то разные подсети могли быть получены из объявлений маршрутизаторов от разных маршрутизаторов.

Почему иногда я вижу%, а не / в адресе IPv6 и что это значит?

Вы бы не увидели одно вместо другого. У них разные значения. Косая черта обозначает префикс (подсеть), то есть блок адресов, которые начинаются с одинаковых nбитов. Адрес без косой черты является адресом хоста. Вы можете думать о таком адресе как о подразумеваемом «/ 128» в конце, означающем, что все 128 битов указаны.

Знак процента сопровождает локальный адрес ссылки. В IPv6 каждый интерфейс имеет локальный адрес связи в дополнение к любым другим IP-адресам, которые он может иметь. Но дело в том, что локальные адреса ссылок всегда без исключения находятся в fe80::/10блоке. Но если мы пытаемся общаться с партнером, используя локальный адрес канала связи, а локальный хост имеет несколько интерфейсов, как мы узнаем, какой интерфейс использовать для связи с этим партнером? Обычно таблица маршрутизации говорит нам, какой интерфейс использовать для определенного префикса, но здесь она говорит нам, fe80::/10что доступно через каждый интерфейс.

Ответ в том, что мы должны сказать ему, какой интерфейс использовать, используя синтаксис address%interface. Например, fe80::1234:5678:8765:4321%eth0.

Я трачу слишком много подсетей? Разве мы не просто выбежим снова?

Никто не знает. Кто может сказать будущее?

Но учти это. В IPv6 количество доступных подсетей является квадратом количества доступных отдельных адресов в IPv4. Это действительно довольно много. Нет, я имею в виду довольно много!

Но все же: мы автоматически раздаем / 32 любому провайдеру, который его запрашивает, мы раздаем / 48 каждому клиенту провайдера. Возможно, мы преувеличиваем и в конце концов будем разбазаривать IPv6. Но есть положение для этого: только одна восьмой части пространства IPv6 было доступно для использования до сих пор: 2000::/3. Идея состоит в том, что если мы устроим ужасную неразбериху первой восьмой, и нам придется кардинально пересмотреть либеральную политику распределения, мы попробуем еще 7 раз, прежде чем у нас будут проблемы.

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

Celada
источник
13
Очень хорошее объяснение! Особенно о другом мышлении. Если вы посмотрите на цифры, то увидите, что в 2000 году было 536 870 912/32 (небольших провайдеров) :: / 3. Население мира составляет 7 миллиардов человек, то есть один Интернет-провайдер на 13 человек, и каждый такой Интернет-провайдер может иметь 65 536 клиентов с / 48 каждым. Не нужно беспокоиться о том, чтобы тратить адреса прямо сейчас :-)
Сандер Штеффанн
Да, это очень хорошее объяснение.
Фергус
2
Хорошее объяснение конкретных деталей 2000 года :: / 3.
Коос ван ден Хаут
5
Хорошее объяснение. +1 за последний комментарий. Я надеюсь, что все уже видели это: xkcd.com/865
Нико
@SanderSteffann И если это станет проблемой, для провайдеров было бы вполне разумно назначать новые / 64 для бытовых пользователей вместо / 48., А для небольших провайдеров запрашивать блоки, скажем, 4096 из них одновременно (/ 52 блоки ). Текущая схема предназначена только для того, чтобы оставить место для расширения на каждом слое.
immibis
45

IPv6 - это 128 бит, так почему же / 64 самая маленькая рекомендуемая подсеть для хостов?

Прежде всего, немного ASCII искусства из RFC для определения терминологии:

|         n bits         |   m bits  |       128-n-m bits         |
+------------------------+-----------+----------------------------+
| global routing prefix  | subnet ID |       interface ID         |
+------------------------+-----------+----------------------------+

Префикс глобальной маршрутизации обычно идентифицирует всю сеть, к которой относится адрес. Обычно это 48 бит. Идентификатор интерфейса идентифицирует данный сетевой интерфейс. Обычно это 64-битная версия. Остальные 16 бит - это идентификатор вашей подсети.

ОК, с объяснением:

Согласно RFC 4291 - Архитектура адресации IP версии 6 :

Все адреса глобальной одноадресной рассылки, кроме тех, которые начинаются с двоичного числа 000, имеют поле идентификатора 64-битного интерфейса.

И RFC 5375 - Рекомендации по присвоению адресов IPv6 Unicast :

Важной частью плана адресации IPv4 является определение длины каждого префикса подсети. В отличие от IPv4, архитектура адресации IPv6 [RFC4291] определяет, что все подсети, использующие глобальные уникальные адреса и ULA, всегда имеют одинаковую длину префикса в 64 бита.

Таким образом, игнорируя исключение с префиксом 000, идентификатор интерфейса всегда точно 64-битный. Это еще один способ сказать, что все локальные широковещательные сети всегда 64-битные . Если у вас есть адрес IPv6, его маска сети всегда будет 64-битной. Никогда больше, никогда меньше. Если вам было назначено адресное пространство, которое больше этого (короче маска сети, чем 64-битная), то предполагается, что вы разделите это адресное пространство на 64-битные сети и самостоятельно выполните маршрутизацию. Если вам дали сеть меньше этой (длинная маска), то кто-то облажался.

Итак, почему именно 64-битные?

Как правило, IPv6-адреса автоматически настраиваются, а не назначаются. Маршрутизатор сообщит, какой префикс сети доступен (префикс маршрутизации + идентификатор подсети: первые 64-битные), а ваш компьютер заполнит последние 64-битные, используя свой собственный уникальный идентификатор. Как ваш компьютер имеет уникальный идентификатор? Есть несколько возможностей, наиболее распространенным является использование MAC-адреса вашего интерфейса. Вы разделяете MAC на половину (половина поставщика / половина последовательного), переворачиваете универсальный локальный бит на стороне поставщика и соединяете их вместе FF:FEв середине. Так 00:30:48:01:23:45становится 0230:48ff:fe01:2345. Теперь поместите объявленный 64-битный сетевой префикс слева от него, и у вас будет свой IP-адрес.

Важным моментом здесь является то, что если вы будете следовать этой схеме, конфликты IP-адресов не произойдут. Поскольку каждое устройство в данной широковещательной сети НУЖНО работать уникальным MAC-адресом, привязка идентификатора интерфейса к MAC-адресу означает, что до тех пор, пока широковещательный трафик не сталкивается, адреса IPv6 также не будут. Использование 64-битных (а не только 48, выделенных для MAC-адресов) дает немного места для маневра, помимо адресов, предоставляемых этой схемой (есть несколько других).

Есть ли другие ситуации, в которых я бы использовал подсеть меньше / 64?

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

Из RFC 5375 - Рассмотрение назначения адресов IPv6 Unicast :

Использование длины префикса подсети, отличной от / 64, нарушит многие функции IPv6, включая обнаружение соседей (ND), обнаружение безопасных соседей (SEND) [RFC3971], расширения конфиденциальности [RFC4941], части мобильного IPv6 [RFC4866], независимый от протокола Многоадресная рассылка - разреженный режим (PIM-SM) с Embedded-RP [RFC3956] и множественное нахождение сайтов посредством IPv6-посредничества (SHIM6) [SHIM6] и других. Ряд других функций, которые в настоящее время разрабатываются или предлагаются, также полагаются на префиксы подсетей / 64.

....

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

Почему рекомендуется использовать / 127 для двухточечных соединений между маршрутизаторами, и почему это было рекомендовано в прошлом?

Возможно, вы захотите скрыть RFC 3627 - Использование длины префикса / 127 между маршрутизаторами считается вредным . Затем взгляните на последующий RFC 6164 - Использование 127-битных префиксов IPv6 в меж-маршрутизаторных каналах .

Возражение против использования префиксов длиннее / 64 на маршрутизаторах связано с автоматической настройкой маршрутизатора, которая в редких случаях может привести к сбою. Возражение против использования префиксов короче / 127 (только для 2 хостов) связано с рядом потенциальных проблем, связанных с отказом в обслуживании, связанных с отправкой пакетов на не маршрутизированные адреса. Поскольку реальные проблемы отказа в обслуживании хуже теоретических сбоев автоматической настройки, / 127 - новый фаворит.

Должен ли я изменить существующие ссылки на маршрутизатор для использования / 127?

Если вы управляете маршрутизатором IPv6, я бы рекомендовал прочитать два RFC (они короткие!) И решить для себя.

Можно ли сопоставить напрямую из подсетей IPv4 в подсети IPv6?

Например, соответствует ли IPv4 / 24 напрямую IPv6 / 56 или / 120?

На самом деле да. Помните тот префикс 000, который мы намеренно игнорировали ранее? Ну, вот польза для этого:

В системах с двумя стеками (с активными стеками IPv4 и IPv6) вы можете представлять IPv4 с использованием механизма IPv6. Они называют это « IPv4-сопоставленными адресами IPv6 ». Шаблон - все нули, сопровождаемый FFFF, сопровождаемый 32-разрядным адресом IPv4.

Таким образом, 192.168.100.21становится ::FFFF:C0A8:6415- или более просто: ::FFFF:192.168.100.21. Поскольку этот правый бит представляет адрес IPv4, он традиционно записывается в десятичной форме с точками.

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

tylerl
источник
20
  1. IPv6 - это 128 бит, так почему же / 64 самая маленькая рекомендуемая подсеть для хостов?

    Этот размер префикса первоначально рекомендовался в более старом RFC - с тех пор было пересмотрено это правило, когда рассматривается вопрос об атаках обнаружения соседей, и использование / 126 является допустимым решением - тем не менее, если вы настраиваете PtP-ссылки с помощью Единственная цель маршрутизации трафика, альтернативный вариант - просто придерживаться / 64 и межсетевого экрана этой подсети. А еще лучше, выделите себе пул, из которого вы будете извлекать / 64 подсети, и поместите весь этот пул в черный список на своем краю (и везде, где может возникнуть враждебность)

  2. Почему рекомендуется использовать / 127 для двухточечных соединений между маршрутизаторами, и почему это было рекомендовано в прошлом? Должен ли я изменить существующие ссылки на маршрутизатор для использования / 127?

    / 127 не рекомендуется между маршрутизаторами и никогда не было - адрес Anycast для всех маршрутизаторов является адресом всех нулей подсети; это означает, что / 127 технически допустим только между двумя машинами, где одна из них НЕ действует как маршрутизатор. / 126 это конечно хорошо.

    В любом случае, однако, я бы не советовал переключать существующие ссылки / 64, если ваше оборудование не уязвимо для атаки переполнения кэша Neighbor Discovery - и даже в этом случае сначала определите, действительно ли вы собираетесь использовать эту / 64 для подключения к Интернету. Если ответ нет, просто брандмауэр.

  3. Почему виртуальные машины должны иметь подсети меньше / 64?

    Это нарушает SLAAC и RA, если вы действительно, действительно не знаете, что делаете, вряд ли у вас есть на то веские основания для этого - возможно, ваш апстрим дал вам только один / 64, но если это так, вам нужно идти Обратитесь к ним и попросите больше, если они захотят взимать с вас плату, начните искать нового провайдера, а также, возможно, отправьте им некоторые язвительные электронные письма со ссылками на соответствующие RFC.

  4. Есть ли другие ситуации, в которых я бы использовал подсеть меньше / 64?

    Честно? возможно нет. Если я подумаю о законной причине, когда меньшая подсеть предпочтительнее для целей, отличных от предотвращения атак NDP, я отредактирую этот раздел.

    И наоборот, бывают ситуации, когда вы НЕ хотите использовать подсети, меньшие / 64, особенно в тех случаях, когда вы используете среду с аппаратным оборудованием пересылки (например, маршрутизаторы именных брендов и коммутаторы L3), некоторые не смогут выполнять аппаратную маршрутизацию префиксов. дольше, чем / 64, другие должны разделить операцию на несколько сравнений, поэтому вы должны, по крайней мере, сделать все возможное, чтобы убедиться, что / 64 - самый длинный префикс в вашей магистрали (OSPF / ISIS / EIGRP / etc.).

  5. Можно ли сопоставить напрямую из подсетей IPv4 в подсети IPv6? Например, соответствует ли IPv4 / 24 напрямую IPv6 / 56 или / 120?

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

  6. Мои интерфейсы имеют несколько адресов IPv6. Должна ли подсеть быть одинаковой для всех?

    Нет, использование разных адресов и размеров подсети в одном интерфейсе не должно быть проблемой. Если это так, реализация содержит ошибки. Конечно, лучший вопрос - зачем вам это делать?

  7. Почему иногда я вижу%, а не / в адресе IPv6 и что это значит?

    Это разделитель, обычно применяемый к локальным адресам ссылок (fe80 :: / 12) - поскольку один и тот же локальный адрес канала может законно существовать на нескольких интерфейсах, разделитель% используется для разрешения указания того, какой интерфейс подразумевается. Linux обычно делает указание интерфейса обязательным при выполнении операций, связанных с локальной связью. Windows Vista / 2008 и более поздние версии немного умнее и не будут жаловаться, если локальная ссылка не является уникальной.

  8. Я трачу слишком много подсетей? Разве мы не просто выбежим снова?

    Нет. Это мертвая лошадь, которую пороли WAAAAAAAAAY слишком много раз - текущий глобальный Интернет IPv6 - 2000 :: / 3 - есть еще несколько префиксов, которые IANA могла бы начать использовать, если каким-то образом каждому RIR на планете удалось истощить их. адрес акции. Так что нет, у нас не останется свободного места, и даже если мы сделаем это, для повышения нового префикса потребуется щелчок ручки, а не технические изменения. Единственное, что на самом деле подчеркивает этот вопрос, - это неспособность человеческого разума полностью понять, насколько смехотворно велико адресное пространство.

  9. В чем другие основные отличия подсетей IPv6 от подсетей IPv4?

    Помимо того, что вы не заботитесь о том, сколько места вы используете, помните, что широковещательный адрес отсутствует и что адрес «подсеть-ноль» теперь является произвольным адресом для всех маршрутизаторов (в основном это адрес, который неявно существует на всех настроенных узлах). для пересылки пакетов IPv6) - это имеет полезный побочный эффект, так как позволяет использовать адрес со всеми нулями в качестве маршрута по умолчанию в сети (нет, это не приведет к дублированию пакетов, это ANYcast, а не MULTIcast) - имейте в виду хотя хост может переключаться между маршрутизаторами каждые несколько секунд, поэтому это не подходит для установки межсетевого экрана с отслеживанием состояния, если между ними не синхронизировано отслеживание соединения.

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

    TLDR; IPv6 обнаруживает повторяющиеся адреса и недоступных соседей. Адрес «все ноль» - это все-маршрутизаторы в любом случае, и нет такой вещи, как широковещательная рассылка, все-это обычный адрес.

Olipro
источник
3
В ответ на ответ 2) ... tools.ietf.org/html/rfc6164 tools.ietf.org/html/rfc6547
cpt_fink
3

Для тех, кто интересуется, откуда в спецификациях берется требование / 64 для SLAAC, вот несколько дополнительных ссылок:

Из автоконфигурации адреса без учета IPv6 (RFC 4862) :

Если сумма длины префикса и длины идентификатора интерфейса не равна 128 битам, параметр «Информация о префиксе» ДОЛЖЕН игнорироваться. [...]

Системный администратор отвечает за то, чтобы длины префиксов, содержащихся в объявлениях маршрутизатора, соответствовали длине идентификаторов интерфейса для этого типа канала.

А из архитектуры адресации IP версии 6 (RFC 4291) :

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

Следовательно, поскольку идентификатор интерфейса должен иметь длину 64 бита, а сумма длины префикса и длины идентификатора интерфейса должна составлять 128, единственно возможная длина префикса при использовании SLAAC составляет 64 бита.

Сандер Штеффанн
источник
2

IPv6 - это 128 бит, так почему же / 64 самая маленькая рекомендуемая подсеть для хостов?

Потому что сторонникам IPv6 понравилась идея автоматической конфигурации без сохранения состояния.

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

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

Конечно, с конвенциями дело обстоит так: если вы следуете им и что-то идет не так, вы можете указать на соглашение, если вы отказываетесь следовать им и что-то идет не так, это будет ваша вина.

Почему рекомендуется использовать / 127 для двухточечных соединений между маршрутизаторами,

Использование подсетей с небольшим количеством доступных адресов позволяет избежать атак исчерпания обнаружения соседей.

Конечно, это рассуждение относится не только к ссылкам типа «точка-точка». Я предполагаю, что было политически возможно сделать эту рекомендацию для ссылок маршрутизатора точка-точка, но политически невозможно сделать это для других ссылок.

Почему виртуальные машины должны быть предоставлены с адресами менее / 64?

Нам нужно провести различие здесь. Существует два способа, которыми хостинг-провайдер может назначать адреса компьютерам (физическим или виртуальным).

Они могут назначать им адреса «на связи», где машина должна отвечать на запросы обнаружения соседей. Некоторые хостинг-провайдеры решили предоставить каждой машине a / 64, которая имеет преимущества в мобильности адресов, другие дают каждой VLAN a / 64, а затем дают отдельным машинам подблоки того, который использует меньше адресов, и это может означать, что локальный трафик остается локальным, а не локальным. переходя к роутеру.

Или они могут рассматривать машину как маршрутизатор и назначать ей маршрутизируемый блок. В этом случае потребуется достаточно адресов для адресации всех его внутренних подсетей. Если вы следуете соглашению «все подсети должны быть / 64», это будет означать выделение его как минимум на / 64 и, возможно, больше. Это имеет смысл для машин, которые имеют «сети внутри машины», например, для хоста контейнера.

Можно ли сопоставить напрямую из подсетей IPv4 в подсети IPv6? Например, соответствует ли IPv4 / 24 напрямую IPv6 / 56 или / 120?

Любое такое сопоставление является вопросом местной политики.

Мои интерфейсы имеют несколько адресов IPv6. Должна ли подсеть быть одинаковой для всех?

нет

Почему иногда я вижу%, а не / в адресе IPv6 и что это значит?

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

Я трачу слишком много подсетей? Разве мы не просто выбежим снова?

Я бы не беспокоился об этом слишком сильно.

Даже при странном решении дизайнеров IPv6 использовать 128-битное адресное пространство, а затем отбросить почти половину его при автоматической настройке без сохранения состояния, IPv6 по-прежнему имеет значительно больше места, чем IPv4.

И если бы был какой-то кризис, понадобилось бы чуть больше, чем удар ручки, чтобы отменить это странное решение.

Гораздо большую проблему с масштабируемостью IPv6 представляет размер таблицы маршрутизации. IPv6 NAT настоятельно не рекомендуется. Работа большой сети по адресам, выделенным провайдером, приводит к значительному риску блокировки провайдера.

Поэтому я считаю, что с ростом проникновения IPv6 в корпоративные сети мы увидим взрыв запросов на независимое от провайдера пространство IPv6.

Питер Грин
источник