IPv6 в Cisco или будущее уже рядом (Часть 1)

imageВведение Протокол IPv6 является наследником повсеместно используемого сегодня протокола IP четвёртой версии, IPv4, и естественно, наследует большую часть логики работы этого протокола. Так, например, заголовки пакетов в IPv4 и IPv6 очень похожи, используется та же логика пересылки пакетов — маршрутизация на основе адреса получателя, контроль времени нахождения пакета в сети с помощью TTL и так далее. Однако, есть и существенные отличия: кроме изменения длины самого IP-адреса произошёл отказ от использования широковещания в любой форме, включая направленное (Broadcast, Directed broadcast). Вместо него теперь используются групповые рассылки (multicast). Также исчез ARP-протокол, функции которого возложены на ICMP, что заставит отделы информационной безопасности внимательнее относиться к данному протоколу, так как простое его запрещение уже стало невозможным. Мы не станем описывать все изменения, произошедшие с протоколом, так как читатель сможет с лёгкостью найти их на большинстве IT-ресурсов. Вместо этого покажем практические примеры настройки устройств на базе Cisco IOS для работы с IPv6.Многие начинающие сетевые специалисты задаются вопросом: «Нужно ли сейчас начинать изучать IPv6?» На наш взгляд, сегодня уже нельзя подходить к IPv6 как к отдельной главе или технологии, вместо этого все изучаемые техники и методики следует отрабатывать сразу на обоих версиях протокола IP. Так, например, при изучении работы протокола динамической маршрутизации EIGRP стоит проводить настройку тестовых сетей в лаборатории как для IPv4, так и для IPv6 одновременно. Перейдём от слов к делу!

Адресация в IPv6 Длина адреса протокола IPv6 составляет 128 бит, что в четыре раза больше той, которая была в IPv4. Количество адресов IPv6 огромно и составляет 2128≈3,4⋅1038. Сам адрес протокола IPv6 можно разделить на две части: префикс и адрес хоста, которую ещё называют идентификатором интерфейса. Такое деление очень похоже на то, что использовалось в IPv4 при бесклассовой маршрутизации.Адреса в IPv6 записываются в шестнадцатеричной форме, каждая группа из четырёх цифр отделяется двоеточием. Например, 2001:1111:2222:3333:4444:5555:6666:7777.

Маска указывается через слеш, то есть, например, /64.

В адресе протокола IPv6 могут встречаться длинные последовательности нулей, поэтому предусмотрена сокращённая запись адреса. Во-первых, могут не записываться начальные нули каждой группы цифр, то есть вместо адреса 2001:0001:0002:0003:0004:0005:0006:7000 можно записать 2001:1:2:3:4:5:6:7000. Конечные нули при этом не удаляются. В случае, когда группа цифр в адресе (или несколько групп подряд) содержит только нули, она может быть заменена на двойное двоеточие. Например, вместо адреса 2001:1:0:0:0:0:0:1 может использоваться сокращённая запись вида 2001:1::1. Стоит отметить, что сократить адрес таким образом можно только один раз.

Ниже приводятся правильные и неправильные формы записи IPv6 адресов.Правильная запись.2001:0000:0db8:0000:0000:0000:07a0:765d2001:0: db8:0:0:0:7a0:765d2001:0: db8::7a0:765d

Ошибочная форма.2001:: db8::7a0:765d2001:0: db8::7a:765d

Забавные сокращения.::/0 — шлюз по умолчанию::1 — loopback2001:2345:6789::/64 — адрес какой-то сети

Однако не все адреса протокола IPv6 могут быть назначены узлам в глобальной сети. Существует несколько зарезервированных диапазонов и типов адресов. Адрес IPv6 может относиться к одному из трёх следующих типов.• Unicast• Multicast• Anycast

Адреса Unicast очень похожи на аналогичные адреса протокола IPv4, они могут назначаться интерфейсам сетевых устройств, серверам и хостам конечных пользователей. Групповые или Multicast адреса предназначены для доставки пакетов сразу нескольким получателям, входящим в группу. При использовании Anycast адресов данные будут получены ближайшим узлом, которому назначен такой адрес. Стоит обратить особое внимание на то, что в списке поддерживаемых протоколом IPv6 адресов отсутствуют широковещательные адреса. Даже среди Unicast адресов существует более мелкое дробление на типы.• Link local• Global unicast• Unique localАдреса, относящиеся к группе Unique local, описаны в RFC 4193 и по своему назначению очень похожи на приватные адреса протокола IPv4, описанные в RFC 1918. Адреса группы Link local предназначены для передачи информации между устройствами, подключёнными к одной L2-сети. Большинство адресов из диапазона Global unicast могут быть назначены интерфейсам конкретных сетевых узлов. Список зарезервированных адресов представлен ниже.

Адрес Маска Описание Заметки :: 128 — Аналог 0.0.0.0 в IPv4 ::1 128 Loopback Аналог 127.0.0.1 в IPv4 :: xx.xx.xx.xx 96 Встроенный IPv4 IPv4 совместимый. Устарел, не используется :: ffff: xx.xx.xx.xx 96 IPv4, отображённый на IPv6 Для хостов, не поддерживающих IPv6 2001: db8:: 32 Документирование Зарезервирован для примеров. RFC 3849 fe80:: — febf:: 10 Link-local Аналог 169.254.0.0/16 в IPv4 fc00:: 7 Unique Local Unicast Пришёл на смену Site-Local. RFC 4193 ffxx:: 8 Multicast — Базовая настройка интерфейсов Включение маршрутизации IPv6 производится с помощью команды ipv6 unicast-routing. В принципе, поддержка маршрутизатором протокола IPv6 будет производиться и без введения указанной команды, однако без неё устройство будет выполнять функции хоста для IPv6. Многие команды, к которым вы привыкли в IPv4, присутствуют также и в IPv6, однако для них вместо опции ip нужно будет указывать слово ipv6.Настройка адреса на интерфейсе возможна несколькими способами. При одном лишь включении поддержки IPv6 на интерфейсе автоматически назначается link-local адрес.

R1#conf t Enter configuration commands, one per line. End with CNTL/Z. R1(config)#int gi0/0 R1(config-if)#ipv6 enable R1(config-if)#^Z R1#show ipv6 int bri Ethernet0/0 [administratively down/down] unassigned GigabitEthernet0/0 [up/up] FE80:: C800:3FFF: FED0: A008 Вычисление части адреса link-local производится с помощью алгоритма EUI-64 на основе MAC-адреса интерфейса. Для этого в середину 48 байтного МАС-адреса автоматически дописывается два байта, которые в шестнадцатеричной записи имеют вид FFFE, а также производится инвертирование седьмого бита первого байта MAC-адреса. На рисунках ниже схематично показана работа обсуждаемого алгоритма.

imageimage

Сравните указанные выше link-local адрес с физическим адресом интерфейса Gi0/0 маршрутизатора (несущественная часть вывода команды sho int Gi0/0 удалена).

R1#show int gi0/0 GigabitEthernet0/0 is up, line protocol is up Hardware is i82543 (Livengood), address is ca00.3fd0.a008 (bia ca00.3fd0.a008) EUI-64 часть IPv6 адреса: CA00:3FFF: FED0: A008. Назначение адреса на интерфейс вручную производится с помощью команды ipv6 address, например, ipv6 address 2001: db8::1/64. Возможно лишь указывать адрес сегмента сети, оставшаяся часть будет назначаться автоматически с использованием преобразованного с помощью EUI-64 физического адреса интерфейса, для чего используйте команду с ключевым словом eui-64.

R2#conf t R2(config)#int gi0/0 R2(config-if)#ipv ad 2001: db8::/64 eui-64 R2(config-if)#^Z R2#show ipv6 int bri Ethernet0/0 [administratively down/down] unassigned GigabitEthernet0/0 [up/up] FE80:: C801:42FF: FEA4:8 2001: DB8:: C801:42FF: FEA4:8 Обмен сообщениями внутри одного L2-сегмента только с помощью адресов link-local возможен и в некоторых случаях используется, однако в большинстве ситуаций интерфейсу должен быть назначен обычный маршрутизируемый IPv6-адрес. Так, например, соседство по протоколам OSPF или EIGRP устанавливается с использованием link-local адресов. Автоматический поиск соседа и другие служебные протоколы также работают по link-local адресам

R1#sho ipv6 int brief Ethernet0/0 [administratively down/down] unassigned GigabitEthernet0/0 [up/up] FE80:: C800:42FF: FEA4:8 2001: DB8::1 R1#sho ipv ei ne IPv6-EIGRP neighbors for process 1 H Address Interface Hold Uptime SRTT RTO Q Seq (sec) (ms) Cnt Num 0 Link-local address: Gi0/0 12 00:01:03 39 234 0 3 FE80:: C801:42FF: FEA4:8

R1#ping FE80:: C801:42FF: FEA4:8

Output Interface: GigabitEthernet0/0 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to FE80:: C801:42FF: FEA4:8, timeout is 2 seconds: Packet sent with a source address of FE80:: C800:42FF: FEA4:8 !!! Success rate is 100 percent (5/5), round-trip min/avg/max = 4/20/48 ms Естественно, сохранилась и возможность автоматического назначения адреса в IPv6 с помощью протокола DHCP. Стоит, правда, отметить, что в IPv6 существует два различных типа DHCP: stateless и stateful, настройка которых производится с помощью команд ipv6 address autoconfig и ipv6 address dhcp соответственно.

Как уже было отмечено ранее, в IPv6 протокол ARP более не используется. Определение соседей производится с помощью протокола NDP (Neighbor Discovery Protocol) путём обмена сообщениями ICMP, отправляя их на групповой адрес FF02::1.

R1#show ipv6 neighbors IPv6 Address Age Link-layer Addr State Interface FE80:: C801:42FF: FEA4:8 25 ca01.42a4.0008 STALE Gi0/0 В операционных системах семейства Windows также присутствует возможность просмотра списка соседей (аналог команды arp –a), правда, теперь придётся использовать более длинный системный вызов.

C:\>netsh interface ipv6 show neighbors Interface 1: Loopback Pseudo-Interface 1 Internet Address Physical Address Type -------------------------------------------- ----------------- ----------- ff02:: c Permanent ff02::16 Permanent ff02::1:2 Permanent ff02::1:3 Permanent ff02::1: ff1e: f939 Permanent Interface 24: Подключение по локальной сети 4 Internet Address Physical Address Type -------------------------------------------- ----------------- ----------- 2001: db8:0: 5::1 00–11–5c-1b-3d-49 Reachable (Router) fe80:: ffff: ffff: fffe Unreachable Unreachable fe80::211:5cff: fe1b:3d49 00–11–5c-1b-3d-49 Stale (Router) fe80::218: f3ff: fe73:33d7 Unreachable Unreachable fe80:: a541:1a9:3b2d:7734 Unreachable Unreachable ff02::1 33–33–00–00–00–01 Permanent ff02::2 33–33–00–00–00–02 Permanent ff02:: c 33–33–00–00–00–0c Permanent ff02::16 33–33–00–00–00–16 Permanent ff02::1:2 33–33–00–01–00–02 Permanent ff02::1:3 33–33–00–01–00–03 Permanent ff02::1: ff00:0 33–33-ff-00–00–00 Permanent ff02::1: ff00:1 33–33-ff-00–00–01 Permanent Похожим образом осуществляется поиск маршрутизаторов в локальном сегменте, правда, в этом случае отправка пакетов производится на адрес FF02::2. Заинтересованный узел отправляет сообщение RS (Router Solicitation), на которое получает ответ RA (Router Advertisement) от маршрутизатора. Указанный ответ содержит параметры работы IP-протокола в данной сети. Описанный процесс представлен на рисунке ниже.

image

Обнаружение маршрутизатора, подключённого к сегменту локальной сети, используется для получения узлом адреса IPv6 с помощью процедуры stateless address autoconfiguration (SLAAC), которую ещё называют Stateless DHCP.

(продолжение в виде маршрутизации, туннелирования и VRF — следует).Статья написана Максимом Климановым (foxnetwork.ru, я — соавтор), который попросил меня опубликовать ее для широкого круга читателей.

© Habrahabr.ru