Настройка VRF Cisco — описание и примеры
Технология VRF (Virtual Routing and Forwarding) позволяет реализовать на базе одного физического маршрутизатора иметь несколько виртуальных маршрутизаторов. Каждый из них будет со своей независимой таблицей маршрутизации.
Главное преимущество виртуальной маршрутизации заключается в полной изоляции маршрутов как между двумя виртуальными, так и между виртуальным маршрутизаторами и реальным .
Давайте, для наглядности, рассмотрим пример.
Есть некая большая сеть, в которой есть EIGRP маршрутизация и присутствует маршрутизатор R1. Если зайти на R1 и выполнить там команду show ip route для вывода таблицы маршрутизации, то можно увидеть некое множество маршрутов, которые приходят со всех концов этой сети. Давайте предположим, что появился некий клиент, для которого нужно сделать какие-то особые специфичные настройки, в именно особую маршрутизацию: особый шлюз, свой отдельный DHCP или отдельный NAT. И вот тут на помощь администратору сети приходит технология vrf cisco.
Нужно будет создать виртуальный маршрутизатор, затем выделить из всех интерфейсов те из них, которые будут к нему относиться и указать все необходимые настройки для него. Важно: никакие параметры, которые мы зададим для созданного виртуального маршрутизатора, на работе реального не отразятся.
На практике это выглядит следующим образом. Смотрим таблицу на реальном маршрутизаторе:
Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route Gateway of last resort is 88.162.128.177 to network 0.0.0.0 88.162.129.0/24 is variably subnetted, 7 subnets, 3 masks D 88.162.129.144/28 [90/28416] via 88.162.128.186, 7w0d, GigabitEthernet0/0.10 D 88.162.129.128/28 [90/28416] via 88.162.128.186, 7w0d, GigabitEthernet0/0.10 D 88.162.129.160/27 [90/28416] via 88.162.128.186, 7w0d, FGigabitEthernet0/0.10 D 88.162.129.192/27 [90/28416] via 88.162.128.190, 7w0d, GigabitEthernet0/0.10 S 88.162.129.224/27 is directly connected, GigabitEthernet0/0.60 D 88.162.129.0/26 [90/28416] via 88.162.128.186, 7w0d, GigabitEthernet0/0.10
Создадим виртуальный маршрутизатор вот таким образом:
configure terminal ip vrf VirtualRouter1 description VRF for nat from 10.0.0.0 to 22.22.22.22
Следующим шагом надо выбрать те интерфейсы устройства, мы хотим отнести к этому vrf. В этом примере задача будет заключаться в том, что надо трафик с интерфейса Ge0/0.2 (ip 10.0.0.1) пустить на НАТ и маршрутизировать через интерфейс Ge0/0.5 (ip 22.22.22.22) таким образом, чтобы всё это никак не влияло на остальные функции маршрутизатора.
interface Ge0/0.2 encapsulation dot1q 2 ip vrf forwarding VirtualRouter1 ip address 10.0.0.1 255.255.255.0 ip nat inside interface Ge0/0.5 encapsulation dot1q 5 ip vrf forwarding VirtualRouter1 ip address 22.22.22.22 255.255.255.0 ip nat outside
Итак мы создали интерфейсы и для каждого из них сделали так, что этот трафик будет обрабатываться не по общим правилам роутера а в соответствии с правилами виртуального маршрутизатора VirtualRouter1 .
То, что в моём примере интерфейсы логические в виде саб-интерфесов особой роли не играет. В Вашем случае это могут быть и обычные физические интерфейсы — не суть важно!
Для каждого интерфейса мы указали, что трафик должен обрабатываться не по общим правилам а в соответствии с правилами VirtualRouter1. Интерфейсы выходят из области влияния основной маршрутизации роутера. Если снова написать команду: show ip route, то среди непосредственно подключенных мы не увидим сетей 10.0.0.0/24 и 22.22.22.0/24. Где они? А их мы сможем увидеть, если выведем таблицу маршрутизации созданного виртуального роутера командой:
show ip route vrf VirtualRouter1
Вывод команды будет выглядеть вот так:
Routing Table: MyRouter Codes: C - connected, S - static, R - RIP, M - mobile, B - BGP D - EIGRP, EX - EIGRP external, O - OSPF, IA - OSPF inter area N1 - OSPF NSSA external type 1, N2 - OSPF NSSA external type 2 E1 - OSPF external type 1, E2 - OSPF external type 2 i - IS-IS, su - IS-IS summary, L1 - IS-IS level-1, L2 - IS-IS level-2 ia - IS-IS inter area, * - candidate default, U - per-user static route o - ODR, P - periodic downloaded static route Gateway of last resort is not set 10.0.0.0/24 is subnetted, 1 subnets C 10.0.0.0 is directly connected, GigabitEthernet0/0.2 22.22.22.0/24 is subnetted, 1 subnets C 22.22.22.0 is directly connected, GigabitEthernet0/0.5
В итоге мы видим простую чистую таблицу маршрутизации, согласно которой трафик, пришедший на ge0/0.2 и ge0/0.5, будет обрабатываться только по этой таблице и никак иначе. Общая таблица маршрутизации роутера с его множеством маршрутов приниматься во внимание не будет.
Теперь добавим для созданного vrf так называемый «дефолт» — статический маршрут по умолчанию, благодаря чему всё будет уходить в сеть через ge0/0.5. Пусть он будет в нашем случае внешним. При добавлении нового маршрута обязательно надо указать, что его надо добавить именно в vrf VirtualRouter1, а не в общую таблицу маршрутизации.
ip route vrf VirtualRouter1 0.0.0.0 0.0.0.0 22.22.22.21
здесь IP 22.22.22.21 – будет адресом следующего прыжка (хопа). Вот таким нехитрым способом можно в эту таблицу добавлять нужные статические и динамические маршруты.
Теперь добавим на наш виртуальный маршрутизатор сервисы DHCP и NAT. Схема работы будет такая: клиенты из внутренней сети получают адреса с помощью DHCP, а на выходе они транслируются в 22.22.22.22.
ip dhcp excluded-address 10.0.0.1 10.0.0.10 ip dhcp pool DHCPServer vrf VirtualRouter1 network 10.0.0.0 255.255.255.0 domain-name test.group dns-server 1.1.1.1 default-router 10.0.0.1
access list 1 permit ip 10.0.0.0 0.0.0.255 any ip nat inside source list 1 interface FastEthernet0/0.5 vrf VirtualRouter1 overload
Заметьте, что параметры DHCP пула и конфигурация NAT относятся уже не к основному, а к виртуальному маршрутизатору (vrf MyRouter).
Ну вот и всё — настройка завершена. Можно пользоваться!
Виртуализация маршрутизатора Cisco
Как вы знаете, иногда на блоге публикуются статьи наших хороших знакомых.
Сегодня Евгений расскажет нам о виртуализации маршрутизатора Cisco.
Имеется классическая схема организации сети: уровень доступа (SW1, SW2, SW3), уровень распределения (R1) и присоединение к глобальной сети (R2). На маршрутизаторе R2 организован сбор статистики и настроен NAT. Между R2 и R3 установлен аппаратный брандмауэр с функциями фильтрации трафика и маршрутизации (схема 1)
Не так давно была поставлена задача по миграции всей сети на альтернативный шлюз (R4). Новый шлюз обладает кластерным функционалом и способен горизонтально масштабироваться за счет увеличения количества нод кластера. Согласно плану введения в эксплуатацию, требовалось, чтобы в определенный период времени в сети было одновременно два шлюза – старый (R2) – для всех клиентских сетей, и новый (R4) – для сетей, участвующих в тестировании нового шлюза (схема 2).
Попытки реализовать PBR (Policy-based routing) на внутреннем маршрутизаторе (R1) не увенчались успехом – трафик зацикливался. Руководство на просьбы дополнительного оборудования ответило отказом. Время шло, маршрутизатора не было, задача буксовала…
И тут на глаза попалась статья из Интернета, которая рассказывала об изоляции таблиц маршрутизации на маршрутизаторах Cisco.
Я решил получить дополнительный маршрутизатор с независимой таблицей маршрутизации на базе существующего оборудования. Для решения задачи был составлен новый проект (Схема 3), подразумевающий наличие дополнительного маршрутизатора с возможностью PBR.
Соединительная сеть между R1 и R5:
Интерфейс на R1: 172.16.200.2 /30
Интерфейс на R5: 172.16.200.1 /30
VLANID: 100 – старый маршрутизатор
VLANID: 101 – новый маршрутизатор
Замечание: в качестве R5 используется виртуальный маршрутизатор, созданный на базе R3 (Cisco IOS Software, C2900 Software (C2900-UNIVERSALK9_NPE-M), Version 15.0(1)M1, RELEASE SOFTWARE (fc1)).
Маршрутизатор R3 оснащен тремя гигабитными портами Ethernet, интерфейс Gi0/0 – используется для внутренней маршрутизации, Gi0/1 – для подключения к аппаратному файерволу, а Gi0/2 – для подключения к внешнему провайдеру.
Перейдем к настройке маршрутизатора R5.
Переходим в режим конфигурирования:
R3(config)#ip vrf zone1
этой командой на маршрутизаторе создается изолированная таблица маршрутизации. Название zone1 выбирается администратором самостоятельно. Так же можно назначить идентификатор и описание. Более подробно можно прочитать в документации. По завершению возвращаемся в режим конфигурирования с помощью команды exit.
Настраиваем сетевые интерфейсы:
R3(config)#interface GigabitEthernet0/0.100
R3(config-subif)#ip vrf forwarding zone1
R3(config-subif)#encapsulation dot1Q 100
R3(config-subif)#ip address 172.16.100.2 255.255.255.252
R3(config-subif)#exit
R3(config)#interface GigabitEthernet0/0.101
R3(config-subif)#ip vrf forwarding zone1
R3(config-subif)#encapsulation dot1Q 101
R3(config-subif)#ip address 172.16.100.6 255.255.255.252
R3(config-subif)#exit
R3(config)#interface GigabitEthernet0/0.1000
R3(config-subif)#ip vrf forwarding zone1
R3(config-subif)#encapsulation dot1Q 1000
R3(config-subif)#ip address 172.16.200.1 255.255.255.252
R3(config-subif)#exit
Сейчас необходимо настроить PBR. Для этого составим ACL, руководствуясь следующим правилом: все, кто попадает в ACL – маршрутизируются через старый шлюз, а остальные – через новый.
R3(config)#access-list 101 deny ip host 192.168.3.24 any
R3(config)#access-list 101 deny ip host 192.168.3.25 any
R3(config)#access-list 101 deny ip host 192.168.3.26 any
R3(config)#access-list 101 permit ip any any
Создаем Route-Map:
R3(config)#route-map gw1 permit 50
R3(config-route-map)#match ip address 101
R3(config-route-map)#set ip vrf zone1 next-hop 172.16.100.1
R3(config-route-map)#exit
И применяем его на интерфейс:
R3(config)#interface GigabitEthernet0/0.1000
R3(config-subif)#ip policy route-map gw1
R3(config-subif)#exit
Добавляем маршрут по умолчанию в таблицу маршрутизации zone1:
R3(config)#ip route vrf zone1 0.0.0.0 0.0.0.0 GigabitEthernet0/0.101 172.16.100.5
и проверяем таблицу маршрутизации для zone1
R3#show ip route vrf zone1
Routing Table: zone1
Codes: L — local, C — connected, S — static, R — RIP, M — mobile, B — BGP
D — EIGRP, EX — EIGRP external, O — OSPF, IA — OSPF inter area
N1 — OSPF NSSA external type 1, N2 — OSPF NSSA external type 2
E1 — OSPF external type 1, E2 — OSPF external type 2
i — IS-IS, su — IS-IS summary, L1 — IS-IS level-1, L2 — IS-IS level-2
ia — IS-IS inter area, * — candidate default, U — per-user static route
o — ODR, P — periodic downloaded static route, + — replicated route
Gateway of last resort is 172.16.100.5 to network 0.0.0.0
S* 0.0.0.0/0 [1/0] via 172.16.100.5, GigabitEthernet0/0.101
172.16.0.0/16 is variably subnetted, 6 subnets, 2 masks
C 172.16.100.0/30 is directly connected, GigabitEthernet0/0.100
L 172.16.100.2/32 is directly connected, GigabitEthernet0/0.100
C 172.16.100.4/30 is directly connected, GigabitEthernet0/0.101
L 172.16.100.6/32 is directly connected, GigabitEthernet0/0.101
C 172.16.200.0/30 is directly connected, GigabitEthernet0/0.1000
L 172.16.200.1/32 is directly connected, GigabitEthernet0/0.1000
Задача по разделению трафика клиентских сетей на разные шлюзы решена. Из минусов принятого решения хотелось бы отметить увеличение нагрузки на аппаратную часть маршрутизатора и ослабление безопасности, так как маршрутизатор, подключенный к глобальной сети, имеет прямое подключение к локальной сети в обход аппаратного брандмауэра.
2 thoughts on “Виртуализация маршрутизатора Cisco”
А почему бы не использовать эмулятор маршрутизатора Cisco в виртуальной машине/выделенном сервере?
Или еще какой-нибудь софтовый маршрутизатор с поддержкой PBR?
Избавились бы от минусов 😉
Очень справедливый вопрос.
Ответ банальный – нет технической возможности! 🙂
А проблему с минусами мы решим путем приобретения маршрутизатора.