Pull to refresh

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

Reading time9 min
Views26K
Публикую продолжение вот этой статьи.

Статические маршруты

Таблица маршрутизации протокола 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 Получилось немного громоздко — хотел уложиться в две публикации.

Еще раз поблагодарю Максима Климанова (www.foxnetwork.ru) за альфа-авторство статьи и совместное развития наших ресурсов — foxnetwork и www.anticisco.ru!

PPS Кстати, как нынче инвайты выдают? Максим просил, а у меня — нет уже, все раздал…
Tags:
Hubs:
+14
Comments7

Articles