Исходные данные:
Основной 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
tunnel lt 1:
- ip address 172.16.10.1/30
tunnel lt 2:
- ip address 172.16.10.2/30
- vrf - VRF-Uplink
Проблема:
На оборудовании 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-адресом, не принадлежащим этому интерфейсу, что приводит к потере связности, пока пользователь не установит новую сессию.
Решение:
1.Создаем зоны безопасности для интерфейсов в GRT и VRF.
security zone Trusted exit security zone Untrusted exit security zone Trusted-VRF ip vrf forwarding VRF-Uplink exit security zone Untrust-VRF ip vrf forwarding VRF-Uplink exit
2 Добавим зоны безопасности к интерфейсам и lt туннелям.
interface gigabitethernet 1/0/5 security-zone Trusted exit interface gigabitethernet 1/0/7 security-zone Untrusted exit interface gigabitethernet 1/0/8 ip vrf forwarding VRF-Uplink security-zone Untrust-VRF exit tunnel lt 1 security-zone Untrusted exit tunnel lt 2 ip vrf forwarding VRF-Uplink security-zone Trusted-VRF exit
3.Для пропуска трафика из зоны «Trusted» в зону «Untrusted» создадим пару зон и добавим правило, разрешающее проходить всему трафику и добавим "check output-interface".
check output-interface - Данной командой разрешается очистка Firewall-сессий, в случае если выходной интерфейс изменен.
security zone-pair Trusted Untrusted
rule 10
action permit
check output-interface
enable
exit
exit
4. Для пропуска трафика из зоны «Trusted-VRF» в зону «Untrusted-VRF» создадим ещё пару зон и добавим правило, разрешающее проходить всему трафику.
security zone-pair Trusted-VRF Untrust-VRF
rule 1
action permit
enable
exit
exit
Проверяем:
После того как была добавлена команда "check output-interface", при изменение выходного интерфейса, принудительно сбрасывается сессия(отправляется TCP Reset) .
17:01:11.354279 10:ff:e0:63:c8:39 > ec:b1:e0:d0:cb:cc, ethertype IPv4 (0x0800), length 66: 192.168.1.25.54810 > 192.0.2.35.22: Flags [.], ack 3437, win 572, options [nop,nop,TS val 2684240234 ecr 650065], length 0 17:01:11.354380 10:ff:e0:63:c8:39 > ec:b1:e0:d0:cb:cc, ethertype IPv4 (0x0800), length 114: 192.168.1.25.54810 > 192.0.2.35.22: Flags [P.], seq 2812:2860, ack 3437, win 572, options [nop,nop,TS val 2684240234 ecr 650065], length 48 17:01:11.392070 ec:b1:e0:d0:cb:cc > 10:ff:e0:63:c8:39, ethertype IPv4 (0x0800), length 66: 192.0.2.35.22 > 192.168.1.25.54810: Flags [.], ack 2860, win 29, options [nop,nop,TS val 650075 ecr 2684240234], length 0 17:01:21.139857 10:ff:e0:63:c8:39 > ec:b1:e0:d0:cb:cc, ethertype IPv4 (0x0800), length 130: 192.168.1.25.54810 > 192.0.2.35.22: Flags [P.], seq 2860:2924, ack 3437, win 572, options [nop,nop,TS val 2684250019 ecr 650075], length 64 17:01:21.355224 10:ff:e0:63:c8:39 > ec:b1:e0:d0:cb:cc, ethertype IPv4 (0x0800), length 130: 192.168.1.25.54810 > 192.0.2.35.22: Flags [P.], seq 2860:2924, ack 3437, win 572, options [nop,nop,TS val 2684250235 ecr 650075], length 64 17:01:21.355658 ec:b1:e0:d0:cb:cc > 10:ff:e0:63:c8:39, ethertype IPv4 (0x0800), length 60: 192.0.2.35.22 > 192.168.1.25.54810: Flags [R], seq 3188760302, win 0, length 0