Исходные данные:
Основной uplink - в глобальной таблице маршрутизации (не в VRF), с настроенным SNAT:
- interface gigabitethernet 1/0/7
- ip address 203.0.113.2/30
- next-hop 203.0.113.1
Резервный uplink - находится в VRF:
- interface gigabitethernet 1/0/8
- ip address 198.51.100.2/30
- next-hop 198.51.100.1
- vrf - VRF-Uplink
Локальная сеть:
- interface gigabitethernet 1/0/5
- ip address 192.168.1.1/24
Исходная конфигурация:
Задача:
Сделать резервирование uplink, при котором:
- В штатном режиме трафик идет через основной uplink с SNAT в глобальной таблице.
- При недоступности основного uplink — трафик переходит на резервный uplink в VRF, с сохранением SNAT.
Решение:
1. Для организации связности между таблицами маршрутизации Global Routing Table(GRT) и VRF настроим lt-туннели c адресацией 172.16.10.0/30.
tunnel lt 1 - Создаем туннель для GRT; peer lt 2 - Задаем номер противоположный LT туннель; ip firewall disable - В данном примере не используется firewall, поэтому выключаем его; ip address 172.16.10.1/30 - Задаем IP-адрес туннеля, адреса туннелей должны быть в одной подсети; enable - Включаем туннель. exit tunnel lt 2 - Создаем туннель для VRF-Uplink peer lt 1 - Задаем номер противоположный LT туннель; ip vrf forwarding VRF-Uplink - Задаем VRF в котором будет работать туннель; ip firewall disable - В данном примере не используется firewall, поэтому выключаем его; ip address 172.16.10.2/30 - Задаем IP-адрес туннеля, адреса туннелей должны быть в одной подсети; enable - Включаем туннель. exit
2. Создадим и настроим ip sla для отслеживания next-hop uplink в GRT.
ip sla ip sla test 1 icmp-echo 203.0.113.1 source-ip 203.0.113.2 enable exit ip sla schedule 1 life forever start-time now
3. Создадим и настроим track.
track 1 track sla test 1 enable exit
4. Добавим маршруты.
ip route 0.0.0.0/0 203.0.113.1 track 1 - Маршрут по умолчанию в GRT; ip route 0.0.0.0/0 172.16.10.2 10 - Резервный маршрут по умолчанию в VRF-Uplink через lt tunnel; ip route vrf VRF-Uplink 0.0.0.0/0 203.0.110.1 - Маршрут по умолчанию в VRF-Uplink; ip route vrf VRF-Uplink 192.168.1.0/24 172.16.10.1 - Обратный маршрут из VRF-Uplink до LAN сети через lt tunnel.
Пояснение
- Когда ip sla test 1 в состоянии "Successful" данный маршрут "ip route 0.0.0.0/0 203.0.113.1" будет активен в таблице маршрутизации.
- Как только sla test 1 переходит в состояние fail, маршрут "ip route 0.0.0.0/0 203.0.113.1" удаляется и становится активным маршрут "ip route 0.0.0.0/0 172.16.10.2" в VRF через lt tunnel.
В данном примере рассматриваются статические маршруты между LT-туннелями, однако также возможно использование протоколов динамической маршрутизации.
5. Создаем еще один ruleset c настройками SNAT для VRF.
ruleset to_VRF-Uplink
ip vrf forwarding VRF-Uplink
to interface gigabitethernet 1/0/8
rule 1
match source-address prefix 192.168.1.0/24
action source-nat interface
enable
exit
exit
На оборудовании ESR трансляция адресов (NAT) применяется только в момент установления firewall-сессии и привязывается к ней статически. В процессе существования сессии параметры NAT не пересчитываются, даже если изменилась маршрутная информация или произошла смена активного канала.
Таким образом, имеет место следующий сценарий:
- Исходная сессия проходит через firewall, маршрутизируется через интерфейс "gi1/0/7" и подвергается SNAT с преобразованием исходного IP-адреса в "203.0.113.2".
- При отказе основного канала трафик начинает перенаправляться через резервный интерфейс "gi1/0/8", находящийся в отдельном VRF.
- Поскольку сессия в firewall не пересоздаётся, трансляция адреса остаётся прежней — но так как ip адрес(203.0.113.2) с "gi1/0/7" недоступен, через резервный канал начинают отправляться не натированные пакеты.
- В результате пакеты уходят через "gi1/0/8(VRF)" с IP-адресом, не принадлежащим этому интерфейсу, что приводит к потере связности, пока пользователь не установит новую сессию.
Чтобы устранить данное поведение, рекомендуется настроить механизм принудительного сброса сессий при изменении маршрутизации(ссылка на след статью).