Настройка сети на базе IPv6 в EVE-NG

· 13 мин чтения

Протокол IPv4, разработанный в начале 1980-х годов, использует 32-битное адресное пространство, что теоретически позволяет создать около 4,3 миллиарда уникальных адресов. Из-за взрывного роста числа устройств, подключаемых к Интернету (компьютеры, смартфоны, IoT-устройства), а также из-за неэффективного распределения адресного пространства на заре Интернета, свободные блоки IPv4-адресов были полностью исчерпаны на уровне глобальных регистраторов в 2011 году (IANA).

Протокол IPv6 был разработан IETF как долгосрочное решение этой проблемы. Ключевым отличием является использование 128-битного адресного пространства, что дает 2128 (примерно 3.4*1038) уникальных адресов.

Характеристика IPv4 IPv6
Длина адреса 32 бита 128 бит
Формат записи Десятичный, разделенный точками (192.168.1.1) Шестнадцатеричный, разделенный двоеточиями (2001:db8:1::1)
NAT (Трансляция) Широко используется для экономии адресов, ломает сквозную связность (end-to-end). Не требуется. Принцип: «каждому устройству – глобальный адрес».
Широковещание (Broadcast) Есть (ARP, DHCP Discover). Отсутствует. Заменено на Multicast (групповая рассылка).
Автоконфигурация DHCP (опционально APIPA). SLAAC (Stateless Address Autoconfiguration) – получение префикса от маршрутизатора и самостоятельная генерация интерфейсной части.
ARP Address Resolution Protocol. NDP (Neighbor Discovery Protocol), использующий ICMPv6.
Структура заголовка Сложная, переменная длина, контрольная сумма. Упрощенная, фиксированная длина (40 байт), нет контрольной суммы (переложена на канальный и транспортный уровни).

В лабораторных работах и документации согласно RFC 3849 используется специально зарезервированный префикс 2001:db8::/32. Адреса из этого диапазона не маршрутизируются в публичном Интернете и предназначены исключительно для примеров конфигурации, тестирования и обучения.

В данной работе используется протокол OSPF версии 3 (OSPFv3). В отличие от OSPFv2 (для IPv4):

  • OSPFv3 изначально разработан для работы с IPv6 и активируется непосредственно на интерфейсе командой ipv6 ospf 1 area 0;
  • идентификация маршрутизатора (Router-ID) в OSPFv3 по-прежнему выполняется 32-битным числом в формате IPv4 (например, 1.1.1.1), даже если на устройстве не настроены IPv4-адреса.

Сеть состоит из трех маршрутизаторов, образующих транзитную зону (Area 0), одного коммутатора для левого сегмента LAN и трех конечных устройств (VPCS).

Параметры сетевых устройств

Template Name/prefix CPU RAM (MB) Ethernets
Cisco vIOS Router RTR-ISP 1 512 4
Cisco vIOS Router RTR-L 1 512 4
Cisco vIOS Router RTR-R 1 512 4
Cisco vIOS Switch SW-L 1 512 8
Virtual PC (VPCS) vPC-L0 – – –
Virtual PC (VPCS) vPC-L1 – – –
Virtual PC (VPCS) vPC-R – – –

Параметры сетевых устройств

Наименование узла Интерфейс IP-адрес Маска подсети Шлюз по умолчанию
RTR-ISP Gi0/0 2001:db8:12::2 /64 –
RTR-ISP Gi0/1 2001:db8:23::2 /64 –
RTR-L Gi0/0 2001:db8:12::1 /64 –
RTR-L Gi0/1 2001:db8:1::1 /64 –
RTR-R Gi0/0 2001:db8:23::3 /64 –
RTR-R Gi0/1 2001:db8:3::1 /64 –
SW-L Gi0/0 – – –
SW-L Gi0/1 – – –
SW-L Gi0/2 – – –
vPC-L0 NIC 2001:db8:1::10 /64 2001:db8:1::1
vPC-L1 NIC 2001:db8:1::11 /64 2001:db8:1::1
vPC-R NIC 2001:db8:3::20 /64 2001:db8:3::1

Параметры сетевых устройств

Настройка сети

Практически все действия выполняются на маршрутизаторах. Коммутатор SW-L работает в режиме L2 (неуправляемый) и передает трафик между портами Gi0/0, Gi0/1 и Gi0/2 прозрачно.

Настройка маршрутизатора RTR-L. Этот маршрутизатор отвечает за левый сегмент сети (локальная сеть 2001:db8:1::/64). Его задача – обеспечивать связность клиентов (vPC-L0, vPC-L1) с остальной сетью и передавать информацию о своей сети через OSPFv3 соседям.

На RTR-L:

Would you like to enter the initial configuration dialog? [yes/no]: no
Router>enable
Router#config terminal
Router(config)#hostname RTR-L
RTR-L(config)#ipv6 unicast-routing
RTR-L(config)#interface gi0/1
RTR-L(config-if)#description LAN_LEFT
RTR-L(config-if)#ipv6 address 2001:db8:1::1/64
RTR-L(config-if)#ipv6 nd managed-config-flag
RTR-L(config-if)#no shutdown
RTR-L(config-if)#exit
RTR-L(config)#interface gi0/0
RTR-L(config-if)#description TO_RTR-ISP
RTR-L(config-if)#ipv6 address 2001:db8:12::1/64
RTR-L(config-if)#no shutdown
RTR-L(config-if)#exit
RTR-L(config)#ipv6 router ospf 1
RTR-L(config-rtr)#router-id 1.1.1.1
RTR-L(config-rtr)#exit
RTR-L(config)#interface range gi0/0-1
RTR-L(config-if-range)#ipv6 ospf 1 area 0
RTR-L(config-if-range)#end
RTR-L#write

Команда «ipv6 unicast-routing» критически важна. Без нее устройство работает как обычный хост IPv6 (может иметь адрес, пинговать), но не будет пересылать пакеты между интерфейсами и не будет участвовать в протоколах маршрутизации, то есть маршрутизатор не станет маршрутизатором.

«ipv6 address 2001:db8:1::1/64» – назначение статического IPv6-адреса интерфейсу. В IPv6 можно назначить несколько адресов на один интерфейс, но здесь мы задаем основной (Link-local адрес FE80::... генерируется автоматически).

«ipv6 nd managed-config-flag» – включает флаг «Managed (M)» в рассылках Router Advertisement (RA). Это указывает подключенным клиентам (vPC), что адреса нужно получать не только через SLAAC, но и обращаться к DHCPv6-серверу для получения дополнительных параметров (например, DNS), или же полностью получать адрес через DHCPv6 (Stateful).

В нашей упрощенной схеме DHCPv6 не используется, адреса заданы статически, но флаг установлен для демонстрации возможностей NDP.

В OSPFv3, в отличие от OSPFv2, включение интерфейса в процесс происходит командой на самом интерфейсе, а не командой «network» в режиме конфигурации роутера. Команда «interface range» позволяет применить настройку сразу к двум портам, что ускоряет работу.

На RTR-R:

Would you like to enter the initial configuration dialog? [yes/no]: no
Router>enable
Router#config terminal
Router(config)#hostname RTR-R
RTR-R(config)#ipv6 unicast-routing
RTR-R(config)#interface gi0/1
RTR-R(config-if)#description LAN_RIGHT
RTR-R(config-if)#ipv6 address 2001:db8:3::1/64
RTR-R(config-if)#ipv6 nd managed-config-flag
RTR-R(config-if)#no shutdown
RTR-R(config-if)#exit
RTR-R(config)#interface gi0/0
RTR-R(config-if)#description TO_RTR-ISP
RTR-R(config-if)#ipv6 address 2001:db8:23::3/64
RTR-R(config-if)#no shutdown
RTR-R(config-if)#exit
RTR-R(config)#ipv6 router ospf 1
RTR-R(config-rtr)#router-id 3.3.3.3
RTR-R(config-rtr)#exit
RTR-R(config)#interface range gi0/0-1
RTR-R(config-if-range)#ipv6 ospf 1 area 0
RTR-R(config-if-range)#end
RTR-R#write

На RTR-ISP:

Would you like to enter the initial configuration dialog? [yes/no]: no
Router>enable
Router#config terminal
Router(config)#hostname RTR-ISP
RTR-ISP(config)#ipv6 unicast-routing
RTR-ISP(config)#interface gi0/0
RTR-ISP(config-if)#description TO_RTR-LEFT
RTR-ISP(config-if)#ipv6 address 2001:db8:12::2/64
RTR-ISP(config-if)#no shutdown
RTR-ISP(config-if)#exit
RTR-ISP(config)#interface gi0/1
RTR-ISP(config-if)#description TO_RTR-RIGHT
RTR-ISP(config-if)#ipv6 address 2001:db8:23::2/64
RTR-ISP(config-if)#no shutdown
RTR-ISP(config-if)#exit
RTR-ISP(config)#ipv6 router ospf 1
RTR-ISP(config-rtr)#router-id 2.2.2.2
RTR-ISP(config-rtr)#exit
RTR-ISP(config)#interface range gi0/0-1
RTR-ISP(config-if-range)#ipv6 ospf 1 area 0
RTR-ISP(config-if-range)#end
RTR-ISP#write

На vPC-L0:

VPCS>set pcname vPC-L0
vPC-L0>ip 2001:db8:1::10/64 2001:db8:1::1

На vPC-L1:

VPCS>set pcname vPC-L1
vPC-L0>ip 2001:db8:1::11/64 2001:db8:1::1

На vPC-R:

VPCS>set pcname vPC-R
vPC-L0>ip 2001:db8:3::20/64 2001:db8:3::1

Проверка на vPC-R: