Cisco: Двойное WAN соединение на основе политик маршрутизации

Lumber room

Dual WAN connection on Cisco with Policy-based routing


Оригинал: pierky.wordpress.com/2009/03/28/dual-wan-connection-on-cisco-with-policy-based-routing-pbr
Статья изменена мной, т.к. последовательность действий, описанная в оригинальной статье не давала положительного результата.

Считаю, что эта статья может быть полезна людям, которые еще не знают что такое маршрутизация на основе политик (policy-based routing). Можно начать изучение данной темы с чтения официальной документации на сайте Cisco.com, но лично мне намного удобней начинать изучение новой технологии с конкретного примера её реализации. Это позволяет сразу же понять с чем ты имеешь дело и как это в дальнейшем можно будет использовать.

Имеем:
  1. Маршрутизатор Cisco с двумя WAN соединениями к провайдеру.
  2. «Бронзовый» линк — узкий канал, подсеть с маской /30.
  3. «Золотой» линк — широкий канал, имеется подсеть «точка-точка» с маской /30 и подсеть с маской /24 для своих нужд.


Заметим, что мы не можем посылать трафик подсети 1.1.1.0/24 через «бронзовый» линк.

Цели:
  1. Пользователи из LAN должны иметь доступ в Интернет.
  2. Важный для нас трафик должен передаваться через «золотой» линк.
  3. Наша серверная площадка должна быть доступна из-вне через «белые» IP адреса.

Для простоты, в нашем примере важным трафиком будет Telnet. В реальной жизни это может быть RTP, трафик баз данных и т.п.

В данной топологии присутствует 5 интересующих нас направлений движения трафика:
  • LAN -> Критически важные сервисы [«Золотой» линк]
  • LAN -> WAN [«Бронзовый» линк]
  • LAN -> Server farm
  • ServerFarm -> WAN [«Золотой» линк]
  • ServerFarm -> LAN


Трафик из LAN в направлении WAN или Критически важных сервисов необходимо транслировать через NAT, но помните, что трафик вначале маршрутизируется, а только потом транслируется NAT'ом. Так что в первую очередь обратим своё внимание на настройку маршрутизации пакетов. К настройке NAT'а вернемся позже.

Обычная маршрутизация просто пересылает пакеты основывась на адресе назначения, её не заботит информация 4го уровня (Транспортный уровень модели OSI) или IP-адрес источника. Как в этом случае организовать маршрутизацию основываясь на других параметрах, например на номере TCP порта места назначения? Для реализация такого функционала и создана маршрутизация на основе политик (Policy-based Routing). PBR может принимать решения на основе целого ряда параметров: адрес источника, порт назначения, QoS метки.

Приступим к конфигурированию.

Во-первых приведем начальную конфигурацию нашего маршрутизатора:
interface Serial2/0
description Bronze
ip address 2.2.2.2 255.255.255.252
!
interface Serial2/1
description Gold
ip address 3.3.3.2 255.255.255.252
!
interface FastEthernet0/0
description LAN
ip address 192.168.0.1 255.255.255.0
!
interface FastEthernet1/0
description ServerFarm
ip address 1.1.1.1 255.255.255.0


Просто назначаем IP-адреса интерфейсам и «поднимаем» их (no shutdown). Синхронизацию на Serial интерфейсах выдает ISP.

Устанавливаем маршрут по умолчанию для нашего маршрутизатора (GW) через «бронзовый» линк:
ip route 0.0.0.0 0.0.0.0 Serial2/0

Теперь приступим к развертыванию маршрутизации на основе политик (PBR).

Создадим расширенный именованный список управления доступом (ACL) в котором определим какой трафик будет являться приоритетным:
ip access-list extended GoldServices
deny ip any 1.1.1.0 0.0.0.255 //Запретить IP трафик в подсеть 1.1.1.0/24
permit tcp any any eq telnet //Разрешить TCP трафик где порт назначения 23(Telnet)
deny ip any any //Запретить весь IP трафик

Данный список доступа используется для того, чтобы выделить telnet трафик направленный не к серверной площадке.

Определим маршрутную карту (route-map) которая будет перехватывать интересующий нас трафик (telnet во внешнюю сеть) и направлять его на необходимый интерфейс («золотой» линк):
route-map PBR_LAN permit 10
match ip address GoldServices //Определяем какой трафик необходимо обрабатывать
set interface Serial2/1 Serial2/0 //Устанавливаем интерфейсы для маршрутизации трафика


Применим созданную карту на интерфейс подключенный к сегменту LAN:
interface FastEthernet0/0
description LAN
ip policy route-map PBR_LAN //"Привязываем" маршрутную карту к интерфейсу

Если пакет не подпадает ни под одну маршрутную карту, то он просто маршрутизируется исходя из стандартных правил (в нашем случае будет направлен в «бронзовый» линк).

Необходимо отметить что мы указали два интерфейса в комманде set interface Serial2/1 Serial2/0 — в этом случае, если канал через Serial2/1 откажет, маршрутизатор начнет использовать интерфейс Serial2/0 для пересылки важного трафика. Это дает нам некоторую избыточность и отказоустойчивость по отношению к важному трафику.
Существует возможность обеспечить резервирование и для трафика, который не является приоритетным (трафик идущий через «бронзовый» линк):
ip route 0.0.0.0 0.0.0.0 Serial2/1 10 //Добавляем статический маршрут с метрикой 10, он будет адействован только если "бронзовый" линк откажет

Те же шаги повторим для трафика между серверной площадкой и внешней сетью.
ip access-list extended ServerFarm-To-WAN
deny ip 1.1.1.0 0.0.0.255 192.168.0.0 0.0.0.255 //Запретить IP трафик из подсети 1.1.1.0/24 в подсеть 192.168.0.0/24
permit ip any any //Разрешить весь IP трафик
!
route-map PBR_ServerFarm permit 10
match ip address ServerFarm-To-WAN //Определяем какой трафик необходимо обрабатывать
set interface Serial2/1 //Устанавливаем интерфейсы для маршрутизации трафика
!
interface FastEthernet1/0
description ServerFarm
ip policy route-map PBR_ServerFarm //"Привязываем" маршрутную карту к интерфейсу

Эти комманды позволят нам направлять трафик от серверов к внешним узлам исключительно через «золотой» линк. Трафик же идущий от серверов к нашим локальным пользователям не попадет во внешние каналы. К сожалению мы не сможем добавить второй интерфес для обеспечения отказоустойчивости, т.к. наш провайдер не примет трафик из подсети 1.1.1.0/24 на своем «броновом» линке.

На этом настройка маршрутизации завершена. Приступим к настройке NAT'а.

У нас есть 1 внутренний интерфейс (inside) и два внешних (outside):
interface FastEthernet0/0
description LAN
ip nat inside
!
interface Serial2/0
description Bronze
ip nat outside
!
interface Serial2/1
description Gold
ip nat outside


Создадим пул адресов для трансляции пакетов идущих в «зололтой» линк:
ip nat pool LAN-to-Gold 1.1.1.20 1.1.1.20 netmask 255.255.255.0 //Пул состоит из одного адреса 1.1.1.20/24

Создадим список управления доступом для того, чтобы выделить трафик идущий из LAN во внешнюю сеть.
ip access-list extended Trivial
permit ip 192.168.0.0 0.0.0.255 any //Разрешить трафик из подсети 192.168.0.0/24
deny ip any any //Запретить весь IP трафик


Определим две маршрутные карты, которые будут использоваться в трансляции адресов:
route-map NAT_Gold permit 10
match ip address GoldServices //Определяем какой трафик необходимо обрабатывать
match interface Serial2/1 //Устанавливаем интерфейс для маршрутизации трафика
!
route-map NAT_Bronze permit 15
match ip address Trivial //Определяем какой трафик необходимо обрабатывать
match interface Serial2/0 //Устанавливаем интерфейсы для маршрутизации трафика


И последнее:
ip nat inside source route-map NAT_Gold pool LAN-to-Gold overload //Трафик смаршрутизированный на "золотой" линк подвергается трансляции через пул NAT_Gold
ip nat inside source route-map NAT_Bronze interface Serial2/0 overload //Трафик смаршрутизированный на "бронзовый" линк пересылается через интерфейс Serial2/0
Tags:ciscopolicy routingмаршрутизацияполитики маршрутизацииroute-map
Hubs: Lumber room
+9
1.7k 13
Comments 5

Popular right now

Сетевой инженер
to 200,000 ₽Sportmaster LabМосква
Администратор Linux
from 80,000 ₽ProCloudМосква
Middle or Senior Fullstack or backend developer (PHP/JS)
from 130,000 to 230,000 ₽SGMsoftRemote job
Tech Lead DevOps Engineer
from 5,000 to 5,600 $Atto Trading Technologies LLCКиев