Назад | Перейти на главную страницу

Введение в IPv6 для администратора IPv4

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

Может ли кто-нибудь указать мне на хорошее введение (онлайн или в книге) в IPv6 для администратора IPv4. Я в основном Windows, а не UNIX, но я могу следовать большинству объяснений UNIXy.

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


Итак, первое, что нужно признать, это то, что адреса IPv6 выглядят некрасиво. Они делают.

Но я думаю, это просто потому, что мы не привыкли иметь с ними дело и не понимаем, что они означают на очень низком уровне, как мы это делаем с адресами IPv4. Я думаю, что потребуется время, чтобы освоиться с ними, но мы должны с чего-то начать.

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

Адрес IPv4 составляет 32 бита или четыре байта. То, что мы называем «настоящими» IP-адресами, - это просто метод, который стал стандартом для представления этой битовой строки, разделения битов на 4 8-битные группы, представления каждых 8 бит как десятичного числа и разделения этих десятичных чисел этим Период. Итак, возьмем случайный IP-адрес 172.30.154.249. Когда маршрутизатор «думает» об этом IP-адресе, он действительно думает об этом так:

10101100000111101001101011111001

Что мы можем перевести в нашу собственную форму:

10101100 = 172

00011110 = 30

10011010 = 154

11111001 = 249

Иногда вы также можете увидеть это в виде чистого десятичного числа:

10101100000111101001101011111001 = 2,887,686,905

Вряд ли кто-то использует эту форму специально (*), но это исторически допустимый способ записи IPv4-адреса. Фактически, эта форма используется в RFC821, который определил SMTP в 1982 году. Если вы хотите вручную маршрутизировать почту на конкретную машину вместо использования DNS, вы можете использовать два разных типа литералов. Первой была знакомая форма «пунктирная четверка» в скобках («user @ [172.30.154.249]»). Во втором случае использовалась десятичная форма IP с префиксом решетки («user @ # 2887686905»).

Все вышеперечисленное было просто предоставить основу для перевода ваших знаний о том, как работают адреса IPv4, в адреса IPv6. Так же, как IPv4 - это 32-битное число, IPv6-адреса - это 128-битные числа. ARIN присвоил МОЕЙ УДИВИТЕЛЬНОЙ КОМПАНИИ (**) диапазон IP-адресов 2311: FD67 / 32. Чтобы иметь пример для работы, я собираюсь использовать IP 2311: FD67 :: AC1E: 9AF9.

Итак, вот битовая строка, представляющая этот ip6:

00100011000100011111110101100111000000000000000000000000000000000000000000000000000000000000000010101100000111101001101011111001

Если бы мы представили эти битовые строки так, как мы делаем битовые строки IPv4 (конвертируем каждый 1-байтовый фрагмент в десятичный, разделяя каждый точкой), мы получили бы следующее:

35.17.253.103.0.0.0.0.0.0.0.0.172.30.154.249

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

0010001100010001 = 2311

1111110101100111 = FD67

0000000000000000 = 0

0000000000000000 = 0

0000000000000000 = 0

0000000000000000 = 0

1010110000011110 = AC1E

1001101011111001 = 9AF9



2311:FD67:0:0:0:0:AC1E:9AF9

В нем по-прежнему много пробелов, поэтому есть допущение, что самая большая строка нулей может быть опущена и представлена ​​двойным двоеточием. Итак, приведенный выше IP можно записать:

2311:FD67::AC1E:9AF9

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

2311:FD67::172.30.145.249

Чтобы вернуться к тому, с чего я начал с IPv6, я упомянул, что нам назначили 2311: FD67 / 32. / 32 - это битовая маска, как и в адресах IPv4. По сути, это означает, что нам статически присвоены первые 32 из 128 битов IPv4-адреса, который мы могли бы создать. Поскольку 2311: FD67 имеет 32 бита, это означает, что каждый IP-адрес, который мы создаем из этого диапазона, будет начинаться с этого.

Другими словами, точно так же, как 172.17 / 16 можно рассматривать как «каждый IP-адрес между 172.17.0.0 и 172.17.255.255», 2311: FD67 / 32 можно рассматривать как «каждый IP-адрес между 2311: FD67: 0: 0: 0: 0: 0: 0 и 2311: FD67: FFFF: FFFF: FFFF: FFFF: FFFF: FFFF ".

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

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

(*) Я раньше видел десятичное представление IPv4 в некоторых программных отладках, но я почти уверен, что это была ошибка или лень, я думаю, что в коде C было намного сложнее распечатать 32-битное целое число быстрее, чем это было отформатируйте квадрат с точками для печати.

(**) Я изменил название своей компании и префикс

В TechNet есть интересный Страница IPV6.

Следующие ссылки были довольно информативными (о IPv6):

Я могу предложить как минимум 3 книги, которые помогут вам понять практику сетей IPv6:

  1. Понимание IPv6, 2-е изд - Microsoft Press
  2. IPv6 на практике - Springer
  3. Переход на IPv6 - Wiley

Поскольку вы ребята из Windows, я думаю, что первая книга является исчерпывающим руководством по реализации IPv6 в Microsoft Windows. 2-я и 3-я книги полезны для практического опыта работы с IPv6.