Найти тему

Операции над IPv6-адресами — краткий экскурс

Оглавление

Введение

Данная статья является переводом конкретного раздела, описывающего базовые операции над IPv6-адресами из учебника CCNA 200-301 Volume 1 от автора Wendell Odom.

Сокращение IPv6 адресов

Базовые правила:

  • Два двоеточия подряд - это 2 или более гекстета адреса с нулями.
  • Их "::" можно использовать всего один раз на весь IPv6-адрес.

    Можно так 3124::DEAD:CAFE:0:0:0 или так 3124:0:0:DEAD:CAFE:: , но нельзя вот так 3124::DEAD:CAFE::Например: 210F::CCCC:0:0:D - считаем, у нас 210F - первый гекстет, далее двойное двоеточие, далее идут CCCC:0:0:D - это еще 4 гекстета, итого 5 гекстетов. Так всего в IPv6-адресе 8 гекстетов, то 8-5=3 гекстета недостающих, заполняем их нулями и получаем 210F:0000:0000:0000:CCCC:0000:0000:000D
  • Если перед буквами (hex) или цифрами, кроме нуля в гекстете идут нули, то их можно отсекать.
  • Если нули идут после букв (hex) или цифр - их оставляем , иначе после обратного процесса мы получим другой адрес.
    Например: ABCD:0020 - в сокращенном виде выглядит как ABCD:20 , а ABCD:2000 - не сокращается .

Разберем несколько примеров:

-2

Нахождение части подсетей IPv6-адреса

Допустим, на ПК клиента установлен такой адрес: 2000:1234:5678:9ABC:1234:5678:9ABC:1111/64. Так как максимальный префикс для IPv6 =128, то 64 - есть половина - то есть 4 гекстета из 8, таким образом, 2000:1234:5678:9ABC - часть подсети, а 1234:5678:9ABC:1111 - часть хостов.

Для написания номера подсети приводим часть хостов к нулю и получаем такое: 2000:1234:5678:9ABC:0000:0000:0000:0000/64, а в сокращенном виде: 2000:1234:5678:9ABC::/64

Разберем несколько примеров:

-3

А теперь разберем несколько более сложных примеров:

Дано: 2000:1234:5678:9ABC:1234:5678:9ABC:1111/56
Каждый гекстет есть 16 бит, так как всего 8 гекстетов и 128 бит, таким образом 16*8 = 128, значит половина гекстета = 8 бит.
В данном случае, нам нужно отсчитать 3 целых гекстет и половину 4-го, получаем 3*16+8=56 бит.

Итого получаем такую часть подсети: 2000:1234:5678:9A00:0000:0000:0000:0000/56
или в сокращенном виде: 2000:1234:5678:9A00::/56

Тут можно легко допустить ошибку, посчитав, что, так как у нас префикс=56 бит, то после 9A мы должны были отсечь 2 символа, но это не так. Они остаются: 9A00, потому что, если отсечь два нуля в конце в дальнейшем может превратится в 009А, что является уже другим адресом.

Разберем несколько примеров с различными префиксами:

-4

Учимся понимать как работает механизм по автоматической выдаче IPv6-адресов на основе MAC-адресов хостов

Дано: 2001:DB8:1:1::/64
MAC: B8:0C:BE:EF:CA:FE, в дальнейшем буду разделять точкой на 3 октета: B80C.BEEF.CAFE

Первым делом необходимо разделить MAC-адрес пополам
и добавить посередине значение:
FFFE , по итогу получаем такую запись: B80C:BEFF :FE EF:CAFE

Далее, берем первые 2 символа получившейся записи - это B8, очевидно, что это в шестнадцатеричном (HEX) формате.

Необходимо перевести B8 в двоичный вид, получаем: 1011 100 0, но это еще не все. Из двоичной записи берем 7-й бит и инвертируем его (1 в 0 или 0 в 1) и получаем такую запись: 1011 101 0, а теперь обратно переводим в HEX-формат, получаем BA (B=1011, A=101 0). Наконец-то подставляем вместо B8 наш результат BA и получаем: BA0C:BEFF:FEEF:CAFE, а эту запись добавляем в конец адреса из Дано и получаем результат: 2001:DB8:1:1:BA0C:BEFF:FEEF:CAFE

Разберем несколько примеров:

-5