URL: https://www.opennet.me/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID6
Нить номер: 16650
[ Назад ]

Исходное сообщение
"NAT with IP SLA Object Tracking"

Отправлено Sergey_Taurus , 03-Июл-08 11:41 
Здравствуйте.

Есть задача: резервирование Интернет-каналов.

Описание: есть 3 Интернет-канала.
xxx.xxx.xxx.1 - шлюз 1-го провайдера
yyy.yyy.yyy.1 - шлюз 2-го провайдера
yyy.yyy.yyy.2 - шлюз 3-го провайдера

Настраиваю IP SLA Object Tracking:

ip sla 1
  icmp-echo 1.1.1.1 source-ip xxx.xxx.xxx.2
  timeout 1000
  frequency 3
ip sla schedule 1 life forever start-time now
ip sla 2
  icmp-echo 1.1.1.1 source-ip yyy.yyy.yyy.12
  timeout 1000
  frequency 3
ip sla schedule 2 life forever start-time now
ip sla 3
  icmp-echo 1.1.1.1 source-ip yyy.yyy.yyy.13
  timeout 1000
  frequency 3
ip sla schedule 3 life forever start-time now
!
track 1 rtr 1 reachability
!
track 2 rtr 2 reachability
!
track 3 rtr 3 reachability
!
interface FastEthernet0/0
  ip address xxx.xxx.xxx.2 255.255.255.248
  ip nat outside
!
interface FastEthernet0/1
  ip address yyy.yyy.yyy.12 255.255.255.0 secondary
  ip address yyy.yyy.yyy.13 255.255.255.0 secondary
  ip address yyy.yyy.yyy.10 255.255.255.0
  ip nat outside
!
interface FastEthernet0/1
  ip address aaa.bbb.ccc.ddd 255.255.255.0
  ip nat inside
!

ip local policy route-map GW_SLA
!
ip access-list standard SLA_1
  permit xxx.xxx.xxx.2
ip access-list standard SLA_2
  permit yyy.yyy.yyy.12
ip access-list standard SLA_3
  permit yyy.yyy.yyy.13
!
route-map GW_SLA permit 10
  match ip address SLA_1
  set ip next-hop xxx.xxx.xxx.1
!
route-map GW_SLA permit 20
  match ip address SLA_2
  set ip next-hop yyy.yyy.yyy.1
!
route-map GW_SLA permit 30
  match ip address SLA_3
  set ip next-hop yyy.yyy.yyy.2

Все нормально, все работает. Каналы мониторятся пингами на 1.1.1.1 (выбранный адрес в Интернет), состояние объектов анализируется.

Далее, есть 3 ACL в которых находятся списки хостов, которые должны ходить в нормальном режиме по своему каналу, и в аварийном переключатся на живые. Те хосты, которых ни в одном списке нет - выхода в Интернет не имеют.

!
ip access-list extended CUST1
  permit ip host yyy.yyy.yyy.101 any
ip access-list extended CUST2
  permit ip host yyy.yyy.yyy.102 any
ip access-list extended CUST3
  permit ip host yyy.yyy.yyy.103 any
!
route-map GW_SELECT permit 10
  match ip address CUST1
  set ip next-hop verify-availability xxx.xxx.xxx.1 10 track 1
  set ip next-hop verify-availability yyy.yyy.yyy.1 20 track 2
  set ip next-hop verify-availability yyy.yyy.yyy.2 30 track 3

!
route-map GW_SELECT permit 20
  match ip address CUST2
  set ip next-hop verify-availability yyy.yyy.yyy.1 10 track 2
  set ip next-hop verify-availability yyy.yyy.yyy.2 20 track 3
  set ip next-hop verify-availability xxx.xxx.xxx.1 30 track 1
!
route-map GW_SELECT permit 30
  match ip address CUST3
  set ip next-hop verify-availability yyy.yyy.yyy.2 10 track 3
  set ip next-hop verify-availability yyy.yyy.yyy.1 20 track 2
  set ip next-hop verify-availability xxx.xxx.xxx.1 30 track 1

!
route-map GW_SELECT permit 40
  set default interface Null0


Все нормально, все работает. При падении какого канала все маршрутизируется в следующий по списку next-hop если он живой.

Теперь собственно проблема: все провадеры дают блок из 4 белых адресов . Хостов внутри сети очень много. Соответсветнно нужен NAT на внешних интерфейсах fa0/0 и fa0/1. Попытки включить трансляцию приводят к отказу IP SLA (либо sla1 либо sla2-3 перестают корректно определять состояния) в результате того, что пакеты с source sla1 или из блока допустим 1-го провайдера начинают идти в канал 2-го и наоборот. Точной закономерности не устанавливал. Т.е. необходима работа NAT на всех каналах + резервирование с использованием тех же IP SLA.

Трансляцию пробовал включать по разному, в том числе и так:

ip nat inside source route-map ISP_MAIN interface FastEthernet0/0 overload
ip nat inside source route-map ISP_EXTRA interface FastEthernet0/1 overload

!
route-map ISP_EXTRA permit 10
  match ip address CUST1 CUST2 CUST3
!
route-map ISP_EXTRA permit 10
  match ip address CUST1 CUST2 CUST3
!

Понятно, что этот вариант это совсем не правильно. Как правильно?

Заранее спасибо за ответы.


Содержание

Сообщения в этом обсуждении
"NAT with IP SLA Object Tracking"
Отправлено Sergey_Taurus , 03-Июл-08 11:51 
Сейчас еще попробовал через pool'ы.

ip nat pool ISP_MAIN_POOL xxx.xxx.xxx.2 xxx.xxx.xxx.2 netmask 255.255.255.252
ip nat pool ISP_EXTRA_POOL yyy.yyy.yyy.10 yyy.yyy.yyy.10 netmask 255.255.255.0
ip nat inside source route-map ISP_MAIN pool ISP_MAIN_POOL overload
ip nat inside source route-map ISP_EXTRA pool ISP_MAIN_EXTRA overload

ip access-list extended CUST1
  permit ip host yyy.yyy.yyy.101 any
ip access-list extended CUST2
  permit ip host yyy.yyy.yyy.102 any
ip access-list extended CUST3
  permit ip host yyy.yyy.yyy.103 any

route-map ISP_EXTRA permit 10
  match ip address CUST1 CUST2 CUST3
!
route-map ISP_EXTRA permit 10
  match ip address CUST1 CUST2 CUST3

Теперь в NAT трансляциях вообще пусто. Клиентам отдается Host Unreachable.


"NAT with IP SLA Object Tracking"
Отправлено Sergey_Taurus , 03-Июл-08 15:01 
Задачу решил.

Неверно были описаны правила трансляции, поэтому пакеты попадали в первый же удобный NAT-интерфейс. Сделал так:

ip nat inside source route-map ISP_EXTRA int fa0/1 overload
ip nat inside source route-map ISP_MAIN int fa0/0 overload

!
route-map ISP_EXTRA permit 10
  match ip address CUST1 CUST2 CUST3
  match interface fa0/1
!
route-map ISP_MAIN permit 10
  match ip address CUST1 CUST2 CUST3
  match interface fa0/0

Всем спасибо за внимание :)