Здравствуйте.Есть задача: резервирование Интернет-каналов.
Описание: есть 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
!Понятно, что этот вариант это совсем не правильно. Как правильно?
Заранее спасибо за ответы.
Сейчас еще попробовал через 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 overloadip 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 anyroute-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-интерфейс. Сделал так:
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Всем спасибо за внимание :)