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

Публикую продолжение вот этой статьи.Статические маршрутыТаблица маршрутизации протокола IPv6 по умолчанию содержит не только непосредственно подключённые сетки, но также и локальные адреса. Кроме того, в ней присутствует маршрут на групповые адреса. R1#show ipv6 routing IPv6 Routing Table — Default — 3 entries Codes: C — Connected, L — Local, S — Static, U — Per-user Static route HA — Home Agent, MR — Mobile Router, R — RIP, I1 — ISIS L1 I2 — ISIS L2, IA — ISIS interarea, IS — ISIS summary, D — EIGRP EX — EIGRP external C 2001: DB8::/64 [0/0] via GigabitEthernet0/0, directly connected L 2001: DB8::1/128 [0/0] via GigabitEthernet0/0, receive L FF00::/8 [0/0] via Null0, receive Привычным способом задаются статические маршруты в IPv6. Единственное, что хотелось бы отметить, что при использовании link-local адресов кроме самого адреса следующего перехода необходимо указать и интерфейс.

R1#conf t R1(config)#ipv6 route::/0 gi0/0 FE80:: C801:42FF: FEA4:8 R1(config)#^Z R1#show ipv6 routing IPv6 Routing Table — Default — 4 entries Codes: C — Connected, L — Local, S — Static, U — Per-user Static route HA — Home Agent, MR — Mobile Router, R — RIP, I1 — ISIS L1 I2 — ISIS L2, IA — ISIS interarea, IS — ISIS summary, D — EIGRP EX — EIGRP external S::/0 [1/0] via FE80:: C801:42FF: FEA4:8, GigabitEthernet0/0 C 2001: DB8::/64 [0/0] via GigabitEthernet0/0, directly connected L 2001: DB8::1/128 [0/0] via GigabitEthernet0/0, receive L FF00::/8 [0/0] via Null0, receive Динамическая маршрутизация Настройка динамической маршрутизации в IPv6 немногим сложнее. Во-первых, для добавления интерфейса в процесс маршрутизации команда network более не используется. Вместо этого на интерфейсе должна быть дана команда ipv6 eigrp 1 для включения EIGRP 1, либо ipv6 ospf 1 area 0 для добавления интерфейса в магистральную зону процесса OSPF 1. Процесс маршрутизации EIGRP для IPv6 по умолчанию выключен, поэтому его потребуется включить, но самой «приятной» особенностью является необходимость следить за назначением параметра router-id. При IPv4 маршрутизации данный параметр мог быть назначен вручную, либо выбран автоматически на основании IP-адресов, назначенных интерфейсам. Если на устройстве нет IPv4 адресов вовсе, то router-id для процессов динамической маршрутизации IPv6 может быть назначен только вручную.Для элементарной сети, представленной на схеме ниже, проведём настройку EIGRP. Маршрутизатор R1 на интерфейсе Gi0/0 имеет адрес 2001: db8::1/64, R2 — 2001: db8::2/64.

image

Сначала настроим маршрутизатор R1.

R1#conf t R1(config)#ipv6 router eigrp 1 R1(config-rtr)#no shut R1(config-rtr)#eigrp router-id 1.1.1.1 R1(config-rtr)#int gi0/0 R1(config-if)#ipv6 eigrp 1 R1(config-if)#^Z R1#show ipv6 eigrp interfaces EIGRP-IPv6 Interfaces for AS (1) Xmit Queue PeerQ Mean Pacing Time Multicast Pending Interface Peers Un/Reliable Un/Reliable SRTT Un/Reliable Flow Timer Routes Gi0/0 0 0/0 0/0 0 0/0 0 0 R1#show ipv6 eigrp neighbors EIGRP-IPv6 Neighbors for AS (1) Введём аналогичные команды на R2, после это EIGRP-соседство устанавливается между двумя маршрутизаторами.

R1# *Mar 21 12:01:13.763: %DUAL-5-NBRCHANGE: EIGRP-IPv6 1: Neighbor FE80:: C80E:21FF: FEE4:8 (GigabitEthernet0/0) is up: new adjacency R1#show ipv6 eigrp neighbors EIGRP-IPv6 Neighbors for AS (1) H Address Interface Hold Uptime SRTT RTO Q Seq (sec) (ms) Cnt Num 0 Link-local address: Gi0/0 11 00:00:15 40 240 0 2 FE80:: C80E:21FF: FEE4:8 На каждом из маршрутизаторов создадим интерфейс Loopback1, который будет эмулировать подключённые сети. На R1 интерфейсу Loopback1 назначим IPv6 адрес 2001: db8:1::1/64, на R2 — 2001: db8:2::1/64. Передать информацию о новых сетях в протокол динамической маршрутизации можно двумя способами: включить новый интерфейс в соответствующий протокол, либо выполнить перераспределение маршрутов (redistribute). Единственное, о чём следует помнить во втором случае, — о необходимости указания метрик. Метрика может быть указана либо в явном виде для каждого перераспределения, либо при помощи команды default-metric. Данное действие полностью аналогично IPv4, поэтому подробно останавливаться не будем.Вывод с маршрутизатора R1.

R1#show ipv6 route IPv6 Routing Table — default — 6 entries Codes: C — Connected, L — Local, S — Static, U — Per-user Static route B — BGP, R — RIP, H — NHRP, I1 — ISIS L1 I2 — ISIS L2, IA — ISIS interarea, IS — ISIS summary, D — EIGRP EX — EIGRP external, ND — ND Default, NDp — ND Prefix, DCE — Destination NDr — Redirect, O — OSPF Intra, OI — OSPF Inter, OE1 — OSPF ext 1 OE2 — OSPF ext 2, ON1 — OSPF NSSA ext 1, ON2 — OSPF NSSA ext 2, l — LISP C 2001: DB8::/64 [0/0] via GigabitEthernet0/0, directly connected L 2001: DB8::1/128 [0/0] via GigabitEthernet0/0, receive C 2001: DB8:1::/64 [0/0] via Loopback1, directly connected L 2001: DB8:1::1/128 [0/0] via Loopback1, receive EX 2001: DB8:2::/64 [170/2560512] via FE80:: C80E:21FF: FEE4:8, GigabitEthernet0/0 L FF00::/8 [0/0] via Null0, receive R1#show run int loop 1 ! interface Loopback1 ipv6 address 2001: DB8:1::1/64 ipv6 eigrp 1 end R1#show run | sec router ipv6 router eigrp 1 eigrp router-id 1.1.1.1 Вывод с маршрутизатора R2.

R2#show ipv6 route IPv6 Routing Table — default — 6 entries Codes: C — Connected, L — Local, S — Static, U — Per-user Static route B — BGP, R — RIP, H — NHRP, I1 — ISIS L1 I2 — ISIS L2, IA — ISIS interarea, IS — ISIS summary, D — EIGRP EX — EIGRP external, ND — ND Default, NDp — ND Prefix, DCE — Destination NDr — Redirect, O — OSPF Intra, OI — OSPF Inter, OE1 — OSPF ext 1 OE2 — OSPF ext 2, ON1 — OSPF NSSA ext 1, ON2 — OSPF NSSA ext 2, l — LISP C 2001: DB8::/64 [0/0] via GigabitEthernet0/0, directly connected L 2001: DB8::2/128 [0/0] via GigabitEthernet0/0, receive D 2001: DB8:1::/64 [90/130816] via FE80:: C80D:1EFF: FE28:8, GigabitEthernet0/0 C 2001: DB8:2::/64 [0/0] via Loopback1, directly connected L 2001: DB8:2::1/128 [0/0] via Loopback1, receive L FF00::/8 [0/0] via Null0, receive R2#sho run int loop 1 interface Loopback1 ipv6 address 2001: DB8:2::1/64 end

R2#show run | sec router ipv6 router eigrp 1 eigrp router-id 2.2.2.2 redistribute connected default-metric 1000 1 100 100 1500 Если в сети используется протокол BGP, то для управления им придётся воспользоваться несколько иным подходом: в BGP не создаются различные процессы для IPv4 и IPv6. Вместо этого внутри одного «родительского» процесса деление на версии протокола IP производится с помощью команды address-family. Ниже приводится вывод с маршрутизатора R1. Настройка R2 выполнена аналогично.

R1#show run | sec router bgp router bgp 65001 bgp router-id 1.1.1.1 bgp log-neighbor-changes neighbor 2001: DB8::2 remote-as 65002 ! address-family ipv4 no neighbor 2001: DB8::2 activate exit-address-family ! address-family ipv6 network 2001: DB8:1::/64 neighbor 2001: DB8::2 activate exit-address-family ! R1#show bgp ipv6 unicast summary BGP router identifier 1.1.1.1, local AS number 65001 BGP table version is 3, main routing table version 3 2 network entries using 336 bytes of memory 2 path entries using 208 bytes of memory 2/2 BGP path/bestpath attribute entries using 272 bytes of memory 1 BGP AS-PATH entries using 24 bytes of memory 0 BGP route-map cache entries using 0 bytes of memory 0 BGP filter-list cache entries using 0 bytes of memory BGP using 840 total bytes of memory BGP activity 2/0 prefixes, 2/0 paths, scan interval 60 secs Neighbor V AS MsgRcvd MsgSent TblVer InQ OutQ Up/Down State/PfxRcd 2001: DB8::2 4 65002 12 12 3 0 0 00:07:34 1 ! ! R1#show bgp ipv6 unicast BGP table version is 3, local router ID is 1.1.1.1 Status codes: s suppressed, d damped, h history, * valid, > best, i — internal, r RIB-failure, S Stale, m multipath, b backup-path, f RT-Filter, x best-external, a additional-path, c RIB-compressed, Origin codes: i — IGP, e — EGP, ? — incomplete RPKI validation codes: V valid, I invalid, N Not found Network Next Hop Metric LocPrf Weight Path *> 2001: DB8:1::/64:: 0 32768 i *> 2001: DB8:2::/64 2001: DB8::2 0 0 65002 i На момент написания статьи (конец марта 2014 года) в глобальной таблице маршрутизации (BGP full view или BGP full table) насчитывалось примерно 500000 префиксов для IPv4 и около 17000 записей для IPv6.Конфигурирование протокола OSPF для работы в сети IPv6 производится схожим образом. Протокол, который надо включать и настраивать, называется OSPFv3. Он полностью независим от IPv4. Третья версия протокола содержит ряд изменений и дополнений по сравнению с предыдущей реализацией OSPF.

interface GigabitEthernet0/0 ipv6 enable ipv6 ospf 1 area 0 router ospfv3 1 router-id 1.1.1.1 address-family ipv6 unicast redistribute connected exit-address-family Списки доступа В списках доступа также есть небольшие изменения. Так, например, установка листа на интерфейс производится командой ipv6 traffic-filter, например, ipv6 traffic-filter TEST in. R2#show run | section access ipv6 access-list TEST deny icmp any any echo-reply deny icmp any any echo-request permit ipv6 any any ! R2#show ipv6 access-list IPv6 access list test deny icmp any any echo-reply sequence 10 deny icmp any any echo-request (5 matches) sequence 20 permit ipv6 any any (28 matches) sequence 30 interface GigabitEthernet0/0 ipv6 address 2001: DB8::2/64 ipv6 eigrp 1 ipv6 traffic-filter TEST in После установки листа TEST на интерфейс Gi0/0 в приведённой выше схеме маршрутизатор R2 перестаёт отвечать на эхо-запросы по протоколу ICMP.

R1#ping 2001: db8::2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 2001: DB8::2, timeout is 2 seconds: AAAAA Success rate is 0 percent (0/5)

Туннелирование в среде IPv4 и IPv6 Не менее интересный вопрос связан с работой туннелей, поддерживающих IPv6. Самыми простыми туннелями в среде IPv4 были IPIP (IP-in-IP) и GRE. При использовании GRE с введением IPv6 для администратора практически ничего не меняется, однако поддержки IPv6 в IPIP нет. Вместо IPIP можно использовать IPv6IP. Приятной возможностью GRE является его универсальность, благодаря которой можно переносить протоколы IPv4 и IPv6 как поверх транспортной сети с IPv4, так и поверх сети IPv6. За выбор протокола транспортной сети отвечают ключевые слова ip или ipv6 после команды tunnel mode gre.Вернёмся к нашей схеме и настроим между двумя маршрутизаторами туннель GRE так, чтобы поверх него работал протокол IPv4, а сам туннель существовал в существующей сети IPv6. Листинг ниже представляет настройку туннельного интерфейса маршрутизатора R1. Устройство R2 конфигурируется аналогично. R1#show run int tunnel 1 interface Tunnel1 ip address 192.168.0.1 255.255.255.252 tunnel source GigabitEthernet0/0 tunnel mode gre ipv6 tunnel destination 2001: DB8::2 tunnel path-mtu-discovery end R1#ping 192.168.0.2 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.0.2, timeout is 2 seconds: !!! Success rate is 100 percent (5/5), round-trip min/avg/max = 48/87/120 ms На сегодняшний день, скорее всего, администратор столкнётся с противоположной ситуацией: потребуется передавать IPv6 трафик поверх сети IPv4. Конфигурация в этом случае симметрична: настройки IPv4 и IPv6 меняются местами.Кроме перечисленных туннелей существует ещё несколько распространённых типов: 6to4, 6in4, 6rd, Teredo, ISATAP, однако их рассмотрение выходит далеко за рамки данного материала. Сосуществование сетей IPv4 и IPv6 может происходить по одному из трёх сценариев: использование разнообразных туннелей, о которых упоминалось выше, в режиме dual stack, при котором всеми устройствами одновременно поддерживаются обе версии протокола IP, либо при помощи трансляций, например, NAT-PT.Виртуальные процессы маршрутизации (VRF)Ещё одна тема, которой хотелось бы коснуться в рамках беглого рассмотрения IPv6 — VRF. Конфигурирование VRF в многопротокольной среде производится немного иначе — без указания ключевого ip в начале. Здесь также используется подход с address-family, который мы видели при настройки BGP. При создании VRF используется ключевое слово definition.

R1#conf t R1(config)#vrf definition test R1(config-vrf)#rd 1:1 R1(config-vrf)#address-family? ipv4 Address family ipv6 Address family R1(config-vrf)#address-family ipv6 R1(config-vrf-af)#? R1(config-vrf-af)#int loop 2 R1(config-if)#vrf forwarding test R1(config-if)#^Z R1#show vrf Name Default RD Protocols Interfaces test 1:1 ipv6 Lo2 Добавление протокола маршрутизации в VRF производится также с использованием опции address-family. Добавить в VRF можно не только поименованные процессы, но и пронумерованные.

R1#show run | sec router router eigrp test address-family ipv6 unicast vrf test autonomous-system 1 topology base exit-af-topology eigrp router-id 1.1.1.1 exit-address-family ! R1#show run int gi0/0 interface GigabitEthernet0/0 vrf forwarding test ipv6 address 2001: DB8::1/64 end ! R1#sho ipv route vrf test IPv6 Routing Table — test — 4 entries Codes: C — Connected, L — Local, S — Static, U — Per-user Static route B — BGP, R — RIP, H — NHRP, I1 — ISIS L1 I2 — ISIS L2, IA — ISIS interarea, IS — ISIS summary, D — EIGRP EX — EIGRP external, ND — ND Default, NDp — ND Prefix, DCE — Destination NDr — Redirect, O — OSPF Intra, OI — OSPF Inter, OE1 — OSPF ext 1 OE2 — OSPF ext 2, ON1 — OSPF NSSA ext 1, ON2 — OSPF NSSA ext 2, l — LISP C 2001: DB8::/64 [0/0] via GigabitEthernet0/0, directly connected L 2001: DB8::1/128 [0/0] via GigabitEthernet0/0, receive D 2001: DB8:2::/64 [90/2570240] via FE80:: C80E:21FF: FEE4:8, GigabitEthernet0/0 L FF00::/8 [0/0] via Null0, receive ! R1#show eigrp address-family ipv6 vrf test neighbors EIGRP-IPv6 VR (test) Address-Family Neighbors for AS (1) VRF () H Address Interface Hold Uptime SRTT RTO Q Seq (sec) (ms) Cnt Num 0 Link-local address: Gi0/0 10 00:01:53 56 336 0 3 FE80:: C80E:21FF: FEE4:8 Завершая этот вводный кусочек хочется отметить следующее.

1. Администраторам стало сложнее запоминать адресацию своих сетей.2. Требуется освоиться с длиннющей записью сетей/хостов в IPv6.3. Нужно привыкнуть и освоить автоматический поиск и исследование соседей (маршрутизаторов и конечных станций), смириться с отсутствием широковещания.4. Наличие канальной информации об узле сразу в IP-адресе. Протокол ARP (или иные) в большинстве случаев более не требуются — вполне достаточно использования EUI-64 для определения хоста.5. Не так страшен черт, как его малюют: IP и есть IP — идеологически все очень близко, замена транспорта не существенно влияет на идеологию современных сетей передачи данных.6. Использование в IPv6 трансляции сетевых адресов NAT/PAT, довольно ресурсоёмкой операции, в большинстве ситуаций более не требуется.7. В сети могут существовать несколько хостов с абсолютно идентичными валидными маршрутизируемыми IPv6 адресами. Это так называемый anycast. Также стоит привыкнуть к наличию на разных интерфейсах маршрутизаторов адресов из одной и той же подсети не маршрутизируемых link-local адресов. 8. Можно постепенно мигрировать от IPv4 к IPv6, либо поддерживать оба протокола в течение времени, необходимого на глобальный переход к IPv6.9. Компания Cisco и другие производители сетевого оборудования уже давно готовы к переходу на IPv6. Дело за администраторами.

PS Получилось немного громоздко — хотел уложиться в две публикации.

© Habrahabr.ru