Настройка маршрутизатора Cisco на работу с несколькими провайдерами.
Рассмотрим вариант настройки маршрутизаторов Cisco, с использованием нескольких провайдеров, в режиме резервирования каналов и с возможностью разделения трафика между провайдерами.
В настройке будет использоваться технологии VRF Lite
(Virtual Routing and Forwarding) в связке с EVN RR
(Easy Virtual Network Route Replicate).
Исходные данные:
- Маршрутизатор Cisco 2911/K9 версия прошивки 15.4(3)M9 (c2900-universalk9-mz.SPA.154-3.M9.bin)
- Первый провайдер ISP1 — VLAN100 (77.77.77.2/30)
- Второй провайдер ISP2 — VLAN200 (88.88.88.2/30)
- Служебная сеть VLAN9 (10.10.9.0/30)
- Локальные сети VLAN10 (10.10.10.0/24), VLAN11 (10.10.11.0/24)
Создание виртуальных интерфейсов (VRF)
Создаём виртуальные маршрутизаторы (VRF) и указываем кто с кем обменивается таблицами маршрутизации:
- LAN — обменивается маршрутами с обоими провайдерами (ISP1, ISP2)
- ISP1, ISP2 — обмениваются с LAN
vrf definition ISP1
address-family ipv4
route-replicate from vrf LAN unicast all
exit-address-family
vrf definition ISP2
address-family ipv4
route-replicate from vrf LAN unicast all
exit-address-family
vrf definition LAN
address-family ipv4
route-replicate from vrf ISP1 unicast all
route-replicate from vrf ISP2 unicast all
exit-address-family
Настройка физических интерфейсов
Настраиваем интерфейсы. Так как используются VLAN, то необходимо создать SUB-интерфейс для каждого VLAN, указать инкапсуляцию, привязывать виртуальные маршрутизаторы (VRF) к соответствующим интерфейсам, присвоить IP-адреса, указать NAT (inside — для локальной сети, outside — для внешней сети):
interface GigabitEthernet0/0.9
description LAN GATEWAY
encapsulation dot1Q 9
vrf forwarding LAN
ip address 10.10.9.1 255.255.255.252
ip nat inside
interface GigabitEthernet0/1.100
description PRIMARY INTERNET
encapsulation dot1Q 100
vrf forwarding ISP1
ip address 77.77.77.2 255.255.255.252
ip nat outside
interface GigabitEthernet0/2.200
description SECONDARY INTERNET
encapsulation dot1Q 200
vrf forwarding ISP2
ip address 88.88.88.2 255.255.255.252
ip nat outside
Проверка на доступность
Перед тем как прописать маршруты по-умолчанию, добавим проверку на доступность (IP SLA) провайдера (ISP1). Это необходимо для реализации резервирования каналов.
ip sla 10
icmp-echo 8.8.4.4 source-interface GigabitEthernet0/1.100
vrf ISP1
threshold 1000
timeout 1500
frequency 3
ip sla schedule 10 life forever start-time now
Настройка маршрутизации
Прописываем маршруты по-умолчанию, для каждого провайдера (ISP1, ISP2) и маршруты в локальные сети (10.10.10.0/24, 10.10.11.0/24).
Реализуем резервирование интернет канала, для этого маршрут по-умолчанию для второго провайдера (ISP2) укажем с дистанцией 10, а на маршрут по-умолчанию для первого провайдера (ISP1) повесим проверку доступности (IP SLA) канала. Так же добавим статический маршрут через первого провайдера (ISP1) до 8.8.4.4, для корректной работы проверки доступности (IP SLA):
ip route vrf ISP1 0.0.0.0 0.0.0.0 77.77.77.2 track 10
ip route vrf ISP1 8.8.4.4 255.255.255.255 77.77.77.1
ip route vrf ISP2 0.0.0.0 0.0.0.0 88.88.88.2 10
ip route vrf LAN 10.10.10.0 255.255.255.0 10.10.9.2
ip route vrf LAN 10.10.11.0 255.255.255.0 10.10.9.2
Настройка NAT
Выполним настройку NAT, так чтобы при необходимости было легко расширить, прим. добавить новые подсети в NAT и т.д.
Создадим две группы объектов, первая (NAT-DENY) для запрета NAT, вторая (NAT-PERMIT) для разрешения NAT:
object-group network NAT-DENY
object-group network NAT-PERMIT
10.10.9.0 255.255.255.252
10.10.10.0 255.255.255.0
10.10.11.0 255.255.255.0
Создаем список доступа, в который сперва добавляем запрещающее правило для группы объектов NAT-DENY, затем разрешающее правило правило для NAT-PERMIT:
ip access-list extended NAT
deny ip object-group NAT-DENY any
permit ip object-group NAT-PERMIT any
Делаем карты маршрутизации для каждого провайдера:
route-map ISP1-NAT permit 10
match ip address NAT
match interface GigabitEthernet0/1.100
route-map ISP2-NAT permit 10
match ip address NAT
match interface GigabitEthernet0/2.200
Добавляем NAT правила:
ip nat inside source route-map ISP1-NAT interface GigabitEthernet0/1.100 vrf LAN overload
ip nat inside source route-map ISP2-NAT interface GigabitEthernet0/2.200 vrf LAN overload
Очистка APR
При срабатывании (IP SLA) теста и переключении маршрута по-умолчанию, необходимо сбрасывать текущие NAT сессии, для этого добавим следующие правило:
event manager applet CLR_NAT_10
event track 10 state any
action 10 cli command "enable"
action 20 cli command "clear ip nat translation *"
На этом настройка маршрутизатора на работу с несколькими провайдера выполнена. Ниже общий листинг получившейся конфигурации:
vrf definition ISP1
!
address-family ipv4
route-replicate from vrf LAN unicast all
exit-address-family
!
vrf definition ISP2
!
address-family ipv4
route-replicate from vrf LAN unicast all
exit-address-family
!
vrf definition LAN
!
address-family ipv4
route-replicate from vrf ISP1 unicast all
route-replicate from vrf ISP2 unicast all
exit-address-family
!
object-group network NAT-DENY
!
object-group network NAT-PERMIT
10.10.9.0 255.255.255.240
10.10.10.0 255.255.255.0
10.10.11.0 255.255.255.0
!
track 10 ip sla 10 reachability
delay down 20 up 10
!
interface GigabitEthernet0/0.9
description LAN GATEWAY
encapsulation dot1Q 9
vrf forwarding LAN
ip address 10.10.9.1 255.255.255.240
ip nat inside
ip virtual-reassembly in
!
interface GigabitEthernet0/1.100
description PRIMARY INTERNET
encapsulation dot1Q 100
vrf forwarding ISP1
ip address 77.77.77.2 255.255.255.252
ip nat outside
ip virtual-reassembly in
!
interface GigabitEthernet0/2.200
description SECONDARY INTERNET
encapsulation dot1Q 200
vrf forwarding ISP2
ip address 88.88.88.2 255.255.255.252
ip nat outside
ip virtual-reassembly in
!
ip nat inside source route-map ISP1-NAT interface GigabitEthernet0/1.100 vrf LAN overload
ip nat inside source route-map ISP2-NAT interface GigabitEthernet0/2.200 vrf LAN overload
ip route vrf ISP1 0.0.0.0 0.0.0.0 77.77.77.1 track 10
ip route vrf ISP1 8.8.4.4 255.255.255.255 77.77.77.1
ip route vrf ISP2 0.0.0.0 0.0.0.0 88.88.88.1 10
!
ip access-list extended NAT
deny ip object-group NAT-DENY any
permit ip object-group NAT-PERMIT any
!
ip sla 10
icmp-echo 8.8.4.4 source-interface GigabitEthernet0/1.100
vrf ISP1
threshold 1000
timeout 1500
frequency 3
ip sla schedule 10 life forever start-time now
!
route-map ISP1-NAT permit 10
match ip address NAT
match interface GigabitEthernet0/1.100
!
route-map ISP2-NAT permit 10
match ip address NAT
match interface GigabitEthernet0/2.200
!
event manager applet CLR_NAT_10
event track 10 state any
action 10 cli command "enable"
action 20 cli command "clear ip nat translation *"
!
Разделение трафика между каналами
Рассмотрим как в приведенной выше конфигурации использовать не только резервирование канала, но и возможность разделать трафик между каналами. Для реализации данной задачи будем использовать PBR (Policy Base Routing).
Задача:
- Выход в интернет из подсети 10.10.10.0/24, осуществлять через ISP1
- Выход в интернет из подсети 10.10.11.0/24, осуществлять через ISP2
- Доступ в интерент с IP-адреса 10.10.11.5, осуществлять через ISP1
Создаем группы объектов, по каким портам мы будем разделять трафик. В примере мы будем разделять трафик по WEB портам (80, 8080, 443):
object group service WEB-PORTS
tcp eq www
tcp eq 8080
tcp eq 443
Создаем группы объектов, для определения принадлежности IP-адресации к тому или иному каналу.
ISP1-DENY, ISP2-DENY
— для запрета прохождения трафика через ISP1/ISP2ISP1-PERMIT, ISP2-PERMIT
— для разрешения прохождения трафика через ISP1/ISP2
object-group network ISP1-DENY
object-group network ISP1-PERMIT
10.10.10.0 255.255.255.0
host 10.10.11.5
object-group network ISP2-DENY
host 10.10.11.5
object-group network ISP2-PERMIT
10.10.11.0 255.255.255.0
Создаем списки доступа (ACL), для каждого провайдера (ISP1, ISP2) на основе ранее созданных групповых объектов. Сперва указывается запрещающее правило, затем разрешающее:
ip access-list extended ISP1
deny object-group WEB-PORTS object-group ISP1-DENY any
permit object-group WEB-PORTS object-group ISP1-PERMIT any
ip access-list extended ISP2
deny object-group WEB-PORTS object-group ISP2-DENY any
permit object-group WEB-PORTS object-group ISP2-PERMIT any
Добавим проверку на доступность (IP SLA) провайдера (ISP2). Это нужно для исключения ситуации, когда канал будет не доступен, а маршруты будут направляться через него.
ip sla 20
icmp-echo 8.8.4.4 source-interface GigabitEthernet0/2.200
vrf ISP2
threshold 1000
timeout 1500
frequency 3
ip sla schedule 20 life forever start-time now
Добавляем карты маршрутизации для каждого из каналов (ISP1, ISP2), с указанием проверки списков доступа (ACL) и на основе их, направлять запрос, через тот или иной канал (с проверкой его на доступность). В случае если один из каналов будет не доступен, то маршрутизация будет осуществятся на основании глобальных параметров маршрутизации.
route-map ROUTE-ISP permit 10
match ip address ISP1
set ip next-hop verify-availability 77.77.77.1 10 track 10
route-map ROUTE-ISP permit 20
match ip address ISP2
set ip next-hop verify-availability 88.88.88.1 10 track 20
Применяем карту маршрутизации на интерфейс который смотрит в локальную сеть.
interface GigabitEthernet0/0.9
ip policy route-map ROUTE-ISP
Добавим сбрасывать текущие NAT сессии, при срабатывании (IP SLA) теста на доступность второго канала (ISP2):
event manager applet CLR_NAT_20
event track 20 state any
action 10 cli command "enable"
action 20 cli command "clear ip nat translation *"
Ниже общий листинг получившейся конфигурации.
vrf definition ISP1
!
address-family ipv4
route-replicate from vrf LAN unicast all
exit-address-family
!
vrf definition ISP2
!
address-family ipv4
route-replicate from vrf LAN unicast all
exit-address-family
!
vrf definition LAN
!
address-family ipv4
route-replicate from vrf ISP1 unicast all
route-replicate from vrf ISP2 unicast all
exit-address-family
!
object-group network NAT-DENY
!
object-group network NAT-PERMIT
10.10.9.0 255.255.255.240
10.10.10.0 255.255.255.0
10.10.11.0 255.255.255.0
!
object group service WEB-PORTS
tcp eq www
tcp eq 8080
tcp eq 443
!
object-group network ISP1-DENY
!
object-group network ISP1-PERMIT
10.10.10.0 255.255.255.0
host 10.10.11.5
!
object-group network ISP2-DENY
host 10.10.11.5
!
object-group network ISP2-PERMIT
10.10.11.0 255.255.255.0
!
track 10 ip sla 10 reachability
delay down 20 up 10
!
interface GigabitEthernet0/0.9
description LAN GATEWAY
encapsulation dot1Q 9
vrf forwarding LAN
ip address 10.10.9.1 255.255.255.240
ip nat inside
ip virtual-reassembly in
ip policy route-map ROUTE-ISP
!
interface GigabitEthernet0/1.100
description PRIMARY INTERNET
encapsulation dot1Q 100
vrf forwarding ISP1
ip address 77.77.77.2 255.255.255.252
ip nat outside
ip virtual-reassembly in
!
interface GigabitEthernet0/2.200
description SECONDARY INTERNET
encapsulation dot1Q 200
vrf forwarding ISP2
ip address 88.88.88.2 255.255.255.252
ip nat outside
ip virtual-reassembly in
!
ip nat inside source route-map ISP1-NAT interface GigabitEthernet0/1.100 vrf LAN overload
ip nat inside source route-map ISP2-NAT interface GigabitEthernet0/2.200 vrf LAN overload
ip route vrf ISP1 0.0.0.0 0.0.0.0 77.77.77.1 track 10
ip route vrf ISP1 8.8.4.4 255.255.255.255 77.77.77.1
ip route vrf ISP2 0.0.0.0 0.0.0.0 88.88.88.1 10
!
ip access-list extended NAT
deny ip object-group NAT-DENY any
permit ip object-group NAT-PERMIT any
!
ip access-list extended ISP1
deny object-group WEB-PORTS object-group ISP1-DENY any
permit object-group WEB-PORTS object-group ISP1-PERMIT any
!
ip access-list extended ISP2
deny object-group WEB-PORTS object-group ISP2-DENY any
permit object-group WEB-PORTS object-group ISP2-PERMIT any
!
ip sla 10
icmp-echo 8.8.4.4 source-interface GigabitEthernet0/1.100
vrf ISP1
threshold 1000
timeout 1500
frequency 3
ip sla schedule 10 life forever start-time now
!
ip sla 20
icmp-echo 8.8.4.4 source-interface GigabitEthernet0/2.200
vrf ISP2
threshold 1000
timeout 1500
frequency 3
ip sla schedule 20 life forever start-time now
!
route-map ISP1-NAT permit 10
match ip address NAT
match interface GigabitEthernet0/1.100
!
route-map ISP2-NAT permit 10
match ip address NAT
match interface GigabitEthernet0/2.200
!
route-map ROUTE-ISP permit 10
match ip address ISP1
set ip next-hop verify-availability 77.77.77.1 10 track 10
!
route-map ROUTE-ISP permit 20
match ip address ISP2
set ip next-hop verify-availability 88.88.88.1 10 track 20
!
event manager applet CLR_NAT_10
event track 10 state any
action 10 cli command "enable"
action 20 cli command "clear ip nat translation *"
!
event manager applet CLR_NAT_20
event track 20 state any
action 10 cli command "enable"
action 20 cli command "clear ip nat translation *"
!
А при чем тут EVN?
все есть просто не надо было не выходить из address-family ipv4
vrf definition ISP1
address-family ipv4
route-replicate from vrf LAN unicast all
exit-address-family
в боевом маршрутизаторе нет строки route-replicate from vrf LAN unicast all
Быть может в вашем и нет, а в версии прошивки 15.4(3)M9 (c2900-universalk9-mz.SPA.154-3.M9.bin) она есть.