Система 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.
Конфигурация динамических протоколов в контексте 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.
#Присвоение 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
Настройка сетевых клиентов:
Для компьютеров «Client1» и «Client2», функционирующих под управлением операционной системы семейства Windows, необходимо произвести конфигурацию сетевых адаптеров (см. Рисунок – Настройка IP-адреса).
По завершении процедуры настройки IP-адреса следует проверить доступность интернет-соединения на компьютере «Client1» посредством команды ICMP-запроса к DNS-серверу 8.8.8.8 (см. Рисунок – Проверка доступа к сети Интернет).