При классической схеме подключения двух ISP к одному роутеру, есть возможность использовать сразу два канала для NATирования внутренних клиентов с балансировкой нагрузки, а не только для фейловера при отказе одного из провайдеров.
Осуществляется это следующим образом:
c использованием vrf:
Настройка интерфейсов:
Для проверки что балансировка маршрутов случилась, будем использовать команду traceroute:
как видно из приходящих ответов отвечают два провайдера.
Таблица NAT после этих ответов подтверждает созданные соответствия:
Таблица маршрутизации для клиентского vrf выглядит следующим образом:
без использования vrf:
!
Всем спасибо за внимание, жду ваших комментариев.
P.S.
ecmp фейл (спасибо vasilevkirill что обратил внимание) не случается благодаря алгоритму хеширования используемому в cef,
подробно об этом на официальном сайте
циско www.cisco.com/c/en/us/support/docs/ip/express-forwarding-cef/116376-technote-cef-00.html
Осуществляется это следующим образом:
c использованием vrf:
описание vrf для первого провайдера:
экспортируем нашу метку «100:0»,
импортируем метку из vrf второго провайдера «100:1»
импортируем метку из vrf второго провайдера «100:1»
ip vrf ISPA rd 100:0 route-target export 100:0 route-target import 100:1
описание vrf для второго провайдера:
экспортируем нашу метку «100:1»,
импортируем метку из vrf первого провайдера «100:0»
импортируем метку из vrf первого провайдера «100:0»
ip vrf ISPB rd 100:1 route-target export 100:1 route-target import 100:0
описание vrf для клиентской сети:
импортируем обе метки из vrf двух провайдеров «100:0» и «100:1»
ip vrf LAN rd 100:100 route-target import 100:0 route-target import 100:1
Настройка интерфейсов:
к первому провайдеру:
настраиваем правильный vrf
включаем нат
ip vrf forwarding ISPA
включаем нат
ip nat outside
interface FastEthernet0/0 ip vrf forwarding ISPA ip address 50.0.0.1 255.0.0.0 ip nat outside
ко второму провайдеру:
настраиваем правильный vrf
включаем нат
ip vrf forwarding ISPB
включаем нат
ip nat outside
interface FastEthernet1/0 ip vrf forwarding ISPB ip address 60.0.0.1 255.0.0.0 ip nat outside
интерфейс смотрящий в локальную сеть:
настраиваем правильный vrf
включаем нат
ip vrf forwarding LAN
включаем нат
ip nat inside
interface FastEthernet1/1 ip vrf forwarding LAN ip address 192.168.0.1 255.255.255.0 ip nat inside
Маршруты по умолчанию к провайдерам:
с указанием vrf для каждого маршрута
ip route vrf ISPA 0.0.0.0 0.0.0.0 50.0.0.2 ip route vrf ISPB 0.0.0.0 0.0.0.0 60.0.0.2
Настройка BGP для взаимной редистрибьюции маршрутов между vrf:
распространяем подключенные сети с интерфейсов:
распространяем статические дефолтные маршруты к провайдерам:
в клиентском vrf разрешаем распределение нагрузки:
redistribute connected
распространяем статические дефолтные маршруты к провайдерам:
redistribute static default-information originate
в клиентском vrf разрешаем распределение нагрузки:
maximum-paths 2
router bgp 65000 address-family ipv4 vrf ISPA redistribute connected redistribute static default-information originate address-family ipv4 vrf ISPB redistribute connected redistribute static default-information originate address-family ipv4 vrf LAN redistribute connected maximum-paths 2
Правила для NAT:
включаем NAT на оба внешних интерфейса в клиентском vrf
ip nat inside source route-map A interface FastEthernet0/0 vrf LAN overload ip nat inside source route-map B interface FastEthernet1/0 vrf LAN overload
Access list и route-map для правил NATирования:
используем route-map для двух целей:
— IOS не дал бы создать два разных правила NAT для одного access-list
— идентификация по исходяшему интерфейсу
— IOS не дал бы создать два разных правила NAT для одного access-list
— идентификация по исходяшему интерфейсу
route-map A permit 10 match ip address 1 match interface FastEthernet0/0 route-map B permit 10 match ip address 1 match interface FastEthernet1/0 access-list 1 permit 192.168.0.0 0.0.0.255
Для проверки что балансировка маршрутов случилась, будем использовать команду traceroute:
R1#traceroute vrf LAN 8.8.8.8 source fa 1/1 Type escape sequence to abort. Tracing the route to 8.8.8.8 VRF info: (vrf in name/id, vrf out name/id) 1 50.0.0.2 132 msec 60.0.0.2 44 msec 50.0.0.2 24 msec
как видно из приходящих ответов отвечают два провайдера.
Таблица NAT после этих ответов подтверждает созданные соответствия:
R1#show ip nat translations Pro Inside global Inside local Outside local Outside global udp 50.0.0.1:49162 192.168.0.1:49162 8.8.8.8:33434 8.8.8.8:33434 udp 60.0.0.1:49163 192.168.0.1:49163 8.8.8.8:33435 8.8.8.8:33435 udp 50.0.0.1:49164 192.168.0.1:49164 8.8.8.8:33436 8.8.8.8:33436
Таблица маршрутизации для клиентского vrf выглядит следующим образом:
R1#show ip route vrf LAN B* 0.0.0.0/0 [20/0] via 60.0.0.2 (ISPB), 00:00:20 [20/0] via 50.0.0.2 (ISPA), 00:00:20 50.0.0.0/8 is variably subnetted, 2 subnets, 2 masks B 50.0.0.0/8 is directly connected (ISPA), 00:00:22, FastEthernet0/0 L 50.0.0.1/32 is directly connected, FastEthernet0/0 60.0.0.0/8 is variably subnetted, 2 subnets, 2 masks B 60.0.0.0/8 is directly connected (ISPB), 00:00:20, FastEthernet1/0 L 60.0.0.1/32 is directly connected, FastEthernet1/0 192.168.0.0/24 is variably subnetted, 2 subnets, 2 masks C 192.168.0.0/24 is directly connected, FastEthernet1/1 L 192.168.0.1/32 is directly connected, FastEthernet1/1
без использования vrf:
#интерфейс к первому провайдеру interface FastEthernet0/0 ip address 50.0.0.1 255.0.0.0 ip nat outside #интерфейс ко второму провайдеру interface FastEthernet1/0 ip address 60.0.0.1 255.0.0.0 ip nat outside #интерфейс к клиентской сети interface FastEthernet1/1 ip address 192.168.0.1 255.255.255.0 ip nat inside #PBR для того чтобы при запросах снаружи наш роутер не путался куда отдавать пакеты ip local policy route-map PBR #NAT правила и маршруты по умолчанию с одинаковыми метриками ip nat inside source route-map A interface FastEthernet0/0 overload ip nat inside source route-map B interface FastEthernet1/0 overload ip route 0.0.0.0 0.0.0.0 50.0.0.2 ip route 0.0.0.0 0.0.0.0 60.0.0.2 #PBR если пакеты должны уйти через первый провайдер route-map PBR permit 10 match ip address 10 set ip next-hop 50.0.0.2 #PBR если пакеты должны уйти через второй провайдер route-map PBR permit 20 match ip address 11 set ip next-hop 60.0.0.2 #для NAT через первого провайдера route-map A permit 10 match ip address 1 match interface FastEthernet0/0 #для NAT через второго провайдера route-map B permit 10 match ip address 1 match interface FastEthernet1/0 #сопутствующие acl access-list 1 permit 192.168.0.0 0.0.0.255 access-list 10 permit 50.0.0.1 access-list 11 permit 60.0.0.1
!
ip cef обязателен в обоих случаях
Всем спасибо за внимание, жду ваших комментариев.
P.S.
ecmp фейл (спасибо vasilevkirill что обратил внимание) не случается благодаря алгоритму хеширования используемому в cef,
подробно об этом на официальном сайте
циско www.cisco.com/c/en/us/support/docs/ip/express-forwarding-cef/116376-technote-cef-00.html