Как вы знаете, иногда на блоге публикуются статьи наших хороших знакомых.
Сегодня Евгений расскажет нам о виртуализации маршрутизатора 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:
VLAN ID: 1000
Сеть: 172.16.200.0 /30
Интерфейс на 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
Задача по разделению трафика клиентских сетей на разные шлюзы решена. Из минусов принятого решения хотелось бы отметить увеличение нагрузки на аппаратную часть маршрутизатора и ослабление безопасности, так как маршрутизатор, подключенный к глобальной сети, имеет прямое подключение к локальной сети в обход аппаратного брандмауэра.
А почему бы не использовать эмулятор маршрутизатора Cisco в виртуальной машине/выделенном сервере?
Или еще какой-нибудь софтовый маршрутизатор с поддержкой PBR?
Избавились бы от минусов 😉
Очень справедливый вопрос.
Ответ банальный – нет технической возможности! 🙂
А проблему с минусами мы решим путем приобретения маршрутизатора.