Технология 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.
Настройка DHCP:
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
Настройка NAT:
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).
Ну вот и всё — настройка завершена. Можно пользоваться!