Подсеть IPv6 / 64 - что сломается и как обойти это?

27

В IPv6 вы не должны подключаться к чему-либо меньшему, чем / 64 (RFC 5375). Помимо прочего, SLAAC не работает с небольшими подсетями, и, очевидно, также будут нарушены некоторые другие функции.

Каковы обходные пути для ситуаций, когда интернет-провайдеры дадут вам только одну / 64, но вам нужно несколько внутренних подсетей? Общий совет, похоже, состоит в том, чтобы просто найти другого интернет-провайдера, который раздаст / 56 или / 48. В некоторых частях мира это может сработать, но в нашем регионе (США) это невозможно из-за отсутствия конкуренции. Большинству моих клиентов повезло, если у них есть один провайдер, обслуживающий их область. Многие люди здесь все еще на дозвоне.

Мои клиенты не могут претендовать на свои собственные / 48 от ARIN.

Кевин Кин
источник
9
Я не буду пытаться развернуть IPv6 в этом сценарии. Продолжайте нажимать на интернет-провайдера, чтобы обеспечить правильное подключение. Сделайте свои ошибки весьма заметными и публичными, если это необходимо. Quote глава и стих из RFC 6177. Конечно, вы должны убедиться , что это их ошибка, и что ваше оборудование запрашивает большую подсеть.
Майкл Хэмптон
5
Это тоже плохой совет. Учитывая все его преимущества, большинство людей должны развертывать IPv6 при первой же возможности. К сожалению, многие интернет-провайдеры приготовили полный собачий завтрак из своего сервиса IPv6, что делает его неразумным в использовании.
Майкл Хэмптон
2
Мы могли бы спорить весь день, делают ли из этого провайдеры собачий завтрак (что они и сделали!), Или же дизайнеры IPv6 были нереалистичны в своем предположении, что провайдеры не будут этого делать. Конечно, я не говорю своим клиентам, чтобы они всегда держались подальше от IPv6, до тех пор, пока пыль не уляжется. Я уверен, что через пять лет, или даже раньше, будет SLAAC 2.0, который поддерживает меньшие подсети вместе с NAT (многие маршрутизаторы уже внедряют его в любом случае), и все остальное, что нужно для работы IPv6 перед лицом бедствий. Хотя я больше искал решения прямо сейчас.
Кевин Кин
4
Не стоит рассчитывать на беспорядок в IPv4, например, NAT, для правильной работы с IPv6. NAT был взломом, а не особенностью ...
Сандер Стеффанн
3
@KevinKeane NAT всегда был взломом и всегда будет. Каждая проблема, которую люди пытались решить с помощью NAT, имеет реальное решение, которое не включает NAT - но, скорее всего, оно включает IPv6. Подавляющее большинство поломок, о которых вы говорите, можно отнести на счет NAT или неполных развертываний IPv6.
Касперд

Ответы:

28

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

Если какой-нибудь провайдер даст мне то, что у вас есть, я возьму это, потому что это отстой меньше, чем я смог получить до сих пор.

Для продвижения вперед есть два подхода, которые я рекомендую вам использовать параллельно.

Давить на провайдера

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

Убедитесь, что вы проверите, что происходит, если ваш маршрутизатор запрашивает делегированные / 48, / 52, / 56 или / 60 через DHCPv6 в глобальной сети. Я бы протестировал все четыре длины префикса на случай, если сервер DHCPv6 по какой-либо причине выдаст только определенную длину префикса и проигнорирует запросы на другие длины префикса.

Сделайте лучшее из того, что у вас есть

Учитывая, что вам, вероятно, придется жить с некоторыми хаков, движущимися вперёд, вы должны спросить себя, что меньше сосет IPv4 с хаки или IPv6 с хаки.

Есть несколько хаков, которые вы можете использовать, чтобы растянуть один / 64 на множество хостов.

Превращение префикса ссылки в маршрутизируемый префикс

Если у вас есть один / 64 на канале WAN, но нет префикса, маршрутизируемого в вашу локальную сеть, вы можете превратить этот / 64 в маршрутизируемый префикс с помощью нескольких шагов. Настройте интерфейс WAN на вашем маршрутизаторе как / 126, а не / 64. Установите на маршрутизаторе демон объявления соседей (например, ndppd), чтобы объявить собственный MAC-адрес для каждого адреса в / 64, за исключением 4-х адресов в / 126. С этими двумя шагами у вас будет маршрутизируемый / 64, который вы можете использовать в локальной сети, за исключением 4 адресов, используемых для канала WAN.

Модифицированная версия этого хака может совместно использовать ссылку / 64 на нескольких маршрутизаторах. Тогда префикс канала должен быть немного короче, чем / 126, чтобы соответствовать IP-адресу каждого маршрутизатора, а / 120 будет достаточно коротким, чтобы можно было использовать до 254 маршрутизаторов.

Каждый маршрутизатор, очевидно, получит только префикс, который будет длиннее / 64. Я рекомендую вам сделать префикс для каждого маршрутизатора как можно дольше, оставаясь при этом достаточным количеством IP-адресов для локальной сети на этом маршрутизаторе. A / 112 или / 120 для каждого маршрутизатора, скорее всего, подойдет. Каждый маршрутизатор отвечает своим собственным MAC-адресом для обнаружения соседей чего-либо в префиксе этого маршрутизатора.

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

Таким образом, если маршрутизатор ISP, выступающий в качестве шлюза, находится по адресу 2001: db8 :: 1/64, то вы можете использовать 2001: db8 :: / 120 в качестве глобальной сети и назначить 2001: db8 :: 1: 0/112 для первый маршрутизатор, 2001: db8 :: 2: 0/112, второй маршрутизатор и т. д.

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

подсетей

Если вы подключите подсеть к / 64, вы также можете перейти к самым длинным префиксам, у которых еще достаточно адресов для нужных вам хостов. Не подключайтесь к префиксам / 80, а используйте / 116, / 120 или / 124 для каждой подсети. Вещи, которые ломаются, если вы не используете / 64, вряд ли будут заботиться, и если вы используете / 116 или дольше, вы уменьшите влияние определенных DoS-атак обнаружения соседей (если они есть в любой из ваших систем).

В такой конфигурации подсетей вы нарушите SLAAC, поэтому вам потребуется сервер DHCPv6 для ответа на каждый сегмент и статические адреса IPv6, настроенные на всех устройствах без поддержки DHCPv6.

Bridging

Соединение является другой альтернативой. По сути, это означает, что вы не используете подсеть, а запускаете всю локальную сеть как один сегмент IPv6 с префиксом / 64. (Если вам нужно, этот / 64 может охватывать как LAN, так и WAN.)

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

Мосты также могут применять межсетевые экраны и защиту от спуфинга обнаружения соседей в локальной сети.

При наличии достаточного интеллекта на мостах, в принципе, нет ограничений на количество коммутаторов, которые вы можете соединить через один / 64.

kasperd
источник
Спасибо! Это был именно тот ответ, который я искал! Мне особенно нравится ваша идея превратить / 64 в маршрутизируемый префикс. Не могли бы вы подробнее остановиться на этом, пожалуйста? Во-первых, я не понимаю, почему вы предлагаете / 126, а не / 127? Какие IP-адреса используются где? Во-вторых, у одного из моих клиентов у меня есть три отдельных внутренних маршрутизатора. В IPv4 у них есть три разных публичных IP-адреса в / 29, предоставленном провайдером. Будет ли ваша схема работать с этими маршрутизаторами?
Кевин Кин
Кроме того, я не уверен, как установить Neighbor Advertising Daemon на любом из маршрутизаторов. Один маршрутизатор - Fortigate, один - Belkin, а третий - Linksys.
Кевин Кин
@KevinKeane Причина, по которой я предлагаю / 126, заключается в том, что вам часто требуется по крайней мере три адреса в префиксе. На стороне провайдера маршрутизатор может иметь префикс, настроенный как 2001: db8 :: 1/64, что означает, что 2001: db8 :: является специальным, а 2001: db8 :: 1 используется маршрутизатором ISP. Ваш собственный маршрутизатор обычно настроен на 2001: db8 :: 2, что означает, что вы тогда использовали три адреса, и / 127 будет недостаточно. A / 127 мог бы работать, если бы вы не использовали хак с разной длиной префикса, настроенной на двух концах ссылки.
Касперд
спасибо за объяснение этого! Поэтому, когда у меня есть три маршрутизатора, обслуживающих три разные внутренние сети, я должен использовать / 125, и каждый маршрутизатор через рекламу соседей будет объявлять свой собственный MAC только для этих IP-адресов в соответствующей подсети?
Кевин Кин
1
Существует информационный RFC, RFC 7421, Анализ 64-битной границы в IPv6-адресации , в котором подробно обсуждается /64подсеть, и что может пойти не так, если она не используется.
Рон Мопин
10

Да, давление на вашего провайдера, чтобы он не сосал, является предпочтительным вариантом Политики распределения RIR предполагают, что провайдер предоставляет каждому клиенту / 48; у провайдера нет абсолютно никаких причин не делать этого.

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

romble
источник
Я думаю, что некоторые части протокола обнаружения соседей также должны сломаться. RFC 5375 имеет целый список других вещей, но я не знаю практических последствий. Только получение / 64 иногда может быть просто вопросом денег. Ваш Интернет-провайдер может предоставлять домашним пользователям только / 64, а / 48 только бизнес-аккаунтам. Просто потому, что вы хотите отделить свой домашний офис или WiFi от остального дома, или потому что вы хотите использовать отдельную подсеть для виртуальных машин? Извините за напыщенность - я пытаюсь решить проблему здесь, не пытаясь изменить то, что я не могу контролировать.
Кевин Кин
2
Если ваш интернет-провайдер хотел быть в этом неравнодушным, он раздал бы / 128 каждому абоненту. Я думаю , вы можете помахать RFC 5375 у провайдера и скажите им , чтобы дать вам IPv6, а не IPv5.5 ...
Уомбл
На самом деле, по крайней мере один известный мне провайдер делает это (Verizon Wireless). Это одна из причин, по которой я утверждаю, что NAT все еще необходим в IPv6. Но это отдельно от моего вопроса, конечно.
Кевин Кин
1
Рекомендация / 48 из RFC 3177 больше не действительна, большинство RIR теперь рекомендуют / 56 для конечных сайтов, как описано в RFC 6177: tools.ietf.org/html/rfc6177
skrause
@skrause Не то чтобы это все равно имело значение. Достаточно / 48s, что они не собираются заканчиваться. Даже при соотношении HD 80% потребовалось бы 2 ^ 36 выделенных / 48 с, прежде чем IANA израсходовала бы весь 2000 :: / 3. И если ваш конечный сайт не является крупным центром обработки данных, то в / 56 достаточно подсетей для вашего конечного сайта.
Касперд