VRF

Система ARMA Стена поддерживает использование VRF (Virtual Routing and Forwarding), что позволяет создавать изолированные домены маршрутизации в пределах одного устройства. Одним из вариантов использования является решение задачи мультиарендности (multi-tenancy), когда требуется обеспечить изоляцию трафика между различными клиентами или отделами внутри одной организации. Каждый VRF-домен имеет собственную таблицу маршрутов, собственный набор интерфейсов и собственный шлюз по умолчанию.

Конфигурация

Необходимо создать устройство VRF с соответствующей таблицей маршрутов. Затем сетевые интерфейсы подключаются к устройству VRF.

Создание VRF-экземпляра

Для создания нового VRF-экземпляр необходимо ввести следующие команды:

set vrf name <vrf_name> table <100-65535>

где:

  • <vrf_name> – имя VRF-экземпляра. Имя экземпляра VRF должно начинаться с буквы латинского алфавита, содержать не более 15 символов, не совпадать с именами стандартных сетевых интерфейсов (например, eth0, lo, wlan1 и т.п.) и может включать только латинские буквы, цифры и символ подчёркивания «_»;

  • <100-65535> – идентификатор таблицы маршрутизации. Возможно указание значения в диапазоне от «100» до «65535».

Примечание

Идентификатор таблицы маршрутов не может быть изменён после создания. Для изменения необходимо удалить и заново создать VRF-экземпляр.

Назначение интерфейса VRF

Назначить сетевой интерфейс VRF-экземпляру с помощью следующий команды:

set interfaces <type_interfaces> <name_interfaces> vrf <vrf_name>

где:

  • <type_interfaces> – тип сетевого интерфейса. Возможно указание следующих типов интерфейсов: «bonding», «bridge», «dummy», «ethernet», «l2tpv3», «macsec», «openvpn», «pppoe», «pseudo-ethernet», «sstpc», «tunnel», «virtual-ethernet», «vti», «vxlan», «wireguard», «wireless», «wwan».

  • <name_interfaces> – имя сетевого интерфейса в соответствии с его типом.

Глобальная привязка портов

По умолчанию сетевые сервисы (например, SSH, SNMP и др.), запущенные в контексте основной VRF, могут принимать соединения только через интерфейсы, принадлежащие этой же VRF. Это ограничение связано с тем, что непривязанные сокеты по умолчанию не соответствуют пакетам, приходящим через интерфейсы, принадлежащие другим VRF.

Для изменения этого поведения и обеспечения возможности приёма трафика из всех VRF-доменов используется следующая команда:

set vrf bind-to-all

Включение данной опции позволяет TCP- и UDP-сервисам, работающим в контексте основной VRF (т.е. не привязанные ни к одному устройству VRF), работать во всех VRF-доменов.

Фильтрация маршрутов ядра/Zebra

Демон Zebra в FRRouting (FRR) поддерживает использование префиксных списков (prefix-lists) и маршрутных политик (route-maps) для фильтрации маршрутов, полученных от других компонентов FRR. Эти механизмы позволяют точно контролировать, какие маршруты будут установлены в ядре операционной системы.

Для применения маршрутной политики к маршрутам определённого протокола, используйте следующую команду в конфигурационном режиме:

set vrf name <vrf_name> ip|ipv6 protocol <protocol> route-map <route-map>

где:

  • <protocol> – протокол, маршруты которого будут фильтроваться. Поддерживаются следующие значения: «any», «babel», «bgp», «connected», «eigrp», «isis», «kernel», «ospf», «rip», «static», «table».

  • <route-map> - имя применяемой маршрутной политики.

Если указано значение «any», маршрутная политика будет применена ко всем протоколам, отправляющим маршруты в Zebra.

Отслеживание следующего хопа (Nexthop Tracking)

По умолчанию отслеживание следующего хопа (Nexthop Tracking) разрешает адреса через маршрут по умолчанию. Эта функция включена по умолчанию в типовой конфигурации FRR, используемой в системе ARMA Стена. Её возможно отключить, если требуется, например, запретить BGP устанавливать соседство через маршрут по умолчанию.

Команда отключения разрешения IPv4|IPv6-хопов через маршрут по умолчанию:

set vrf name <vrf_name> ip|ipv6 nht no-resolve-via-default

Настройка применяется индивидуально для каждого VRF.

Поддержка динамической маршрутизации

В Системе ARMA Стена реализована поддержка динамической маршрутизации внутри VRF.

Поддерживаемые протоколы динамической маршрутизации:

  • BGP

  • IS-IS

  • OSPF

  • OSPFv3 (IPv6)

  • Static

Конфигурация динамических протоколов в контексте VRF выполняется аналогично стандартной. Единственное различие состоит в том, что для каждого применяемого протокола маршрутизации необходимо указывать префикс с соответствующей командой «vrf name <vrf_name>»:

set vrf name <vrf_name> protocols bgp ...
set vrf name <vrf_name> protocols isis ...
set vrf name <vrf_name> protocols ospf ...
set vrf name <vrf_name> protocols ospfv3 ...
set vrf name <vrf_name> protocols static ...

Обслуживание VRF

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

  1. Отобразить список всех созданных VRF-устройств с информацией о состоянии, MAC-адресе, флагах и назначенных интерфейсах (см. Рисунок – Cписок всех созданных VRF-устройств):

admin@ngfwos:~$ show vrf
../../../_images/ngfw.rp.vrf_2.1.png

Рисунок – Cписок всех созданных VRF-устройств

  1. Отобразить детальную информацию по указанному VRF (см. Рисунок – Детальная информация по VRF):

admin@ngfwos:~$ show vrf <vrf_name>
../../../_images/ngfw.rp.vrf_2.2.png

Рисунок – Детальная информация по VRF

  1. Вывести IPv4-таблицу маршрутов, связанную с указанным VRF (см. Рисунок – IPv4-таблица маршрутов VRF):

admin@ngfwos:~$ show ip route vrf <vrf_name>
../../../_images/ngfw.rp.vrf_2.3.png

Рисунок – IPv4-таблица маршрутов VRF

  1. Вывести IPv6-таблицу маршрутов, связанную с указанным VRF (см. Рисунок – IPv6-таблица маршрутов VRF):

admin@ngfwos:~$ show ipv6 route vrf <vrf_name>
../../../_images/ngfw.rp.vrf_2.4.png

Рисунок – IPv6-таблица маршрутов VRF

  1. Проверить доступность удалённого хоста в контексте указанного VRF (см. Рисунок – Проверка доступность удалённого хоста):

admin@ngfwos:~$ ping <host> vrf <vrf_name>

Команда может быть прервана в любой момент с помощью комбинации клавиш <Ctrl>+C.

../../../_images/ngfw.rp.vrf_2.5.png

Рисунок – Проверка доступность удалённого хоста

  1. Переключение в контекст VRF:

admin@ngfwos:~$ force vrf <vrf_name>

Переключает текущую оболочку в контекст указанного VRF. Все последующие команды будут выполняться в этом контексте до выхода из подоболочки.

При переключении командная строка обновляется, чтобы отразить текущий VRF:

admin@ngfwos:~$ force vrf red
admin@ngfwos(red):~$

Пример конфигурирования VRF

В качестве примера настройки VFR используется схема стенда, представленная на рисунке (см. Рисунок – Пример схемы сети VRF).

../../../_images/ngfw.rp.vrf_3.1.png

Рисунок – Пример схемы сети VRF

  1. Настройки системы ARMA Стена:

#Присвоение IP-адресов и ассоциация интерфейсов с VRF:
set interfaces ethernet eth0 address '172.16.80.1/24'
set interfaces ethernet eth1 address '192.168.1.1/24'
set interfaces ethernet eth1 vrf 'vrf1'
set interfaces ethernet eth2 address '192.168.2.1/24'
set interfaces ethernet eth2 vrf 'vrf2'

#Обеспечение выхода трафика во внешнюю сеть через трансляцию адресов:
set nat source rule 10 outbound-interface name 'eth0'
set nat source rule 10 translation address 'masquerade'

#Добавление локального маршрута в основную таблицу маршрутизации для сети vrf1:
set protocols static route 192.168.1.0/24 interface eth1 vrf 'vrf1'

#Настройка маршрута по умолчанию для vrf1 через шлюз в основном VRF:
set vrf name vrf1 protocols static route 0.0.0.0/0 next-hop 172.16.80.1 vrf 'default'

#Каждому VRF назначается уникальный номер таблицы маршрутизации:
set vrf name vrf1 table '200'
set vrf name vrf2 table '300'

#Применить и сохранить конфигурацию:
commit
save

Данная конфигурация реализует сегментацию сетевого трафика с использованием VRF. Обеспечивается полная изоляция между двумя внутренними сегментами (vrf1 и vrf2) и предоставление доступа в интернет только для компьютера «Client1», подключённого к сети 192.168.1.0/24.

Вывести информации о текущем состоянии VRF:

admin@ngfwos# run show vrf
Name    State    MAC address        Flags                     Interfaces
------  -------  -----------------  ------------------------  ---------------
vrf1    up       aa:9c:df:35:8a:5e  noarp,master,up,lower_up  eth1,pim6reg200
vrf2    up       b2:6b:d5:c4:d2:34  noarp,master,up,lower_up  eth2,pim6reg300
  1. Настройка сетевых клиентов:

Для компьютеров «Client1» и «Client2», функционирующих под управлением операционной системы семейства Windows, необходимо произвести конфигурацию сетевых адаптеров (см. Рисунок – Настройка IP-адреса).

../../../_images/ngfw.rp.vrf_3.2.png

Рисунок – Настройка IP-адреса

По завершении процедуры настройки IP-адреса следует проверить доступность интернет-соединения на компьютере «Client1» посредством команды ICMP-запроса к DNS-серверу 8.8.8.8 (см. Рисунок – Проверка доступа к сети Интернет).

../../../_images/ngfw.rp.vrf_3.3.png

Рисунок – Проверка доступа к сети Интернет