Введение
Данная статья является переводом конкретного раздела, описывающего базовые операции над 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— не сокращается.
Разберем несколько примеров:
|
Дано |
С сокращением |
|
2340:0000:0010:0100:1000:ABCD:0101:1010 |
2340:0:10:100:1000:ABCD:101:1010 |
|
30A0:ABCD:EF12:3456:0ABC:B0B0:9999:9009 |
30A0:ABCD:EF12:3456:ABC:B0B0:9999:9009 |
|
2222:3333:4444:5555:0000:0000:6060:0707 |
2222:3333:4444:5555:0:0:6060:707 |
|
3210:0000:0000:0000:0000:0000:0000:0000 |
3210:: |
|
210F:0000:0000:0000:CCCC:0000:0000:000D |
210F::CCCC:0:0:D |
|
34BA:000B:000B:0000:0000:0000:0000:0020 |
34BA:B:B::20 |
|
FE80:0000:0000:0000:DEAD:BEFF:FEEF:CAFE |
FE80::DEAD:BEFF:FEED:CAFE |
|
FE80:0000:0000:0000:FACE:BAFF:FEBE:CAFE |
FE80::FACE:BAFF:FEBE:CAFE |
Нахождение части подсетей 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
Разберем несколько примеров:
|
Дано |
Подсеть |
С сокращением |
|
2340:0:10:100:1000:ABCD:101:1010/64 |
2340:0:10:100:0000:0000:0000:0000/64 |
2340:0:10:100::/64 |
|
30A0:ABCD:EF12:3456:ABC:B0B0:9999:9009/64 |
30A0:ABCD:EF12:3456:0000:0000:0000:0000/64 |
30A0:ABCD:EF12:3456::/64 |
|
2222:3333:4444:5555::6060:707/64 |
2222:3333:4444:5555:0000:0000:0000:0000/64 |
2222:3333:4444:5555::/64 |
|
3210::ABCD:101:1010/64 |
3210:0000:0000:0000:0000/64 |
3210:0:0:0:0/64 |
А теперь разберем несколько более сложных примеров:
Дано: 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А, что является уже другим адресом.
Разберем несколько примеров с различными префиксами:
|
Дано |
С сокращением |
|
34BA:B:B:0:5555:0:6060:707/80 |
34BA:B:B:0:5555::/80 |
|
3124::DEAD:CAFE:FF:FE00:1/80 |
3124:0:0:DEAD:CAFE::/80 |
|
2BCD::FACE:BEFF:FEBE:CAFE/48 |
2BCD:0000:0000::/48 |
|
3FED:F:E0:D00:FACE:BAFF:FE00:0/48 |
3FED:F:E0::/48 |
|
210F:A:B:C:CCCC:B0B0:9999:9009/40 |
210F:A:0::/40 |
|
34BA:B:B:0:5555:0:6060:707/36 |
34BA:B:0::/36 |
|
3124::DEAD:CAFE:FF:FE00:1/60 |
3124:0:0:DEA0::/60 |
|
2BCD::FACE:1:BEFF:FEBE:CAFE/56 |
2BCD:0000:0000:FA00::/56 |
Учимся понимать как работает механизм по автоматической выдаче IPv6-адресов на основе MAC-адресов хостов
Дано: 2001:DB8:1:1::/64
MAC: B8:0C:BE:EF:CA:FE, в дальнейшем буду разделять точкой на 3 октета: B80C.BEEF.CAFE
Первым делом необходимо разделить MAC-адрес пополам
и добавить посередине значение: FFFE, по итогу получаем такую запись: B80C:BEFF:FEEF:CAFE
Далее, берем первые 2 символа получившейся записи — это B8, очевидно, что это в шестнадцатеричном (HEX) формате.
Необходимо перевести B8 в двоичный вид, получаем: 1011 1000, но это еще не все. Из двоичной записи берем 7-й бит и инвертируем его (1 в 0 или 0 в 1) и получаем такую запись: 1011 1010, а теперь обратно переводим в HEX-формат, получаем BA (B=1011, A=1010). Наконец-то подставляем вместо B8 наш результат BA и получаем: BA0C:BEFF:FEEF:CAFE, а эту запись добавляем в конец адреса из Дано и получаем результат: 2001:DB8:1:1:BA0C:BEFF:FEEF:CAFE
Разберем несколько примеров:
|
Префикс |
MAC-адрес |
Результат |
Мои расчеты |
|
2001:DB8:1:1::/64 |
0013.ABAB.1001 |
2001:DB8:1:1:0213:ABFF:FEAB:1001 |
|
|
2001:DB8:1:1::/64 |
AA13.ABAB.1001 |
2001:DB8:1:1:A813:ABFF:FEAB:1001 |
AA=1010 1010=1010 1000, 1010=A, 1000=8 |
|
2001:DB8:1:1::/64 |
000С.BEEF.CAFE |
2001:DB8:1:1:020C:BEFF:FEEF:CAFE |
|
|
2001:DB8:1:1::/64 |
B80C.BEEF.CAFE |
2001:DB8:1:1:BA0C:BEFF:FEEF:CAFE |
B8=1011 1000=1011 1010, BA |
|
2001:DB8:FE:FE::/64 |
0C0C.ABAC.CABA |
2001:DB8:FE:FE:0E0C:ABFF:FEAC:CABA |
0C=0000 1100=0000 1110, 0E |
|
2001:DB8:FE:FE::/64 |
0A0C.ABAC.CABA |
2001:DB8:FE:FE:080C:ABFF:FEAC:CABA |
0A=0000 1010=0000 1000, 08 |
ссылка на оригинал статьи https://habr.com/ru/post/546814/
Добавить комментарий