Cisco. Автоматическое переключение на резервный канал
Входные данные
Внутренняя сеть: 192.168.250.0/24
Адрес внутреннего интерфейса (направленного в локальную сеть): 192.168.250.8
Провайдер 1:
Внешний интерфейс: 172.16.250.1/24 - FastEthernet 6/0
Шлюз провайдера: 172.16.250.8
Провайдер 2:
Внешний интерфейс: 172.17.250.1/24 - FastEthernet 5/0
Шлюз провайдера: 172.17.250.8
Настройка
Настройка для версии IOS 12.4
Настроим пинговалку внешнего адреса в сети интернет, который постоянно доступен - 8.8.8.8
Проверять будем только основной канал, маршруту через резервного провайдера поставим distance 254
Он будет включаться когда отключится основной канал
Cisco рекомендует эти значения по умолчанию при настройке IP SLA:
// 1. Порог (millisecs): 5000
// 2. Таймаут (millisecs): 5000
// 3. Частота (secs): 60
ip sla monitor 1
type echo protocol ipIcmpEcho 8.8.8.8 source-ipaddr 172.16.250.1
timeout 1000
threshold 1000
frequency 3
exit
// настраиваем задание, запускающее пинговалку
ip sla monitor schedule 1 life forever start-time now
// Настраиваем «переключатель» (track), от которого будет зависеть маршрут
// Если хост пингуется, то track будет в состоянии UP и маршрут будет в таблице маршрутизации. А
// если пинг пропадет, то через настроенный промежуток времени (по умолчанию 3*10 секунд) track
// поменяет состояние на DOWN и маршрут будет удален до тех пор, пока track вновь не изменит состояние.
// track {#} rtr {sla#} reachability
track 1 rtr 1 reachability
exit
// Настраиваем маршрут по умолчанию с трекингом
// ip route 0.0.0.0 0.0.0.0 <шлюз_основного_провайдера> <distance> track 1
ip route 0.0.0.0 0.0.0.0 172.16.250.8 1 track 1
// маршрут до адреса, который проверяет пинговалка (8.8.8.8) ТОЛЬКО ЧЕРЕЗ ОСНОВНОГО ПРОВАЙДЕРА
// чтобы он не пинговался через резерв
ip route 8.8.8.8 255.255.255.255 172.16.250.8
// Маршрут на второго провайдера мы напишем с большей административной
// дистанцией и тем самым заставим его работать только при пропадании основного
ip route 0.0.0.0 0.0.0.0 172.17.250.8 254
ПРОВЕРКА:
// успешно пингуем 8.8.8.8 через провайдера
ping 8.8.8.8
// смотрим что в маршрутах только один умолчальный маршрут через основного провайдера
sh ip route
Рвем линк между маршрутизатором и провайдером
// 8.8.8.8 не пингуется
ping 8.8.8.8
// смотрим что в маршрутах только один умолчальный маршрут через резервного провайдера
sh ip route
Восстанавливаем линк до провайдера,
умолчальный маршрут основного провайдера вернулся на место
NAT (!!!! НЕ ПРОВЕРЯЛ !!!!)
---
Тут на самом деле тоже 2 задачи: динамическая трансляция и статическая трансляция адресов. Первая нам нужна для выхода наружу, а вторая – для анонса сервисов. И в том и в другом случае нам понадобится конструкция, называющаяся route-map (создать надо будет по route-map на каждого провайдера)
// маркируем интерфейсы - входящие и исходящие
// пров 1
interface fasEthernet 6/0
ip nat outside
// пров 2
interface fasEthernet 6/0
ip nat outside
// локальный интерфейс
interface fasEthernet 1/0
ip nat inside
! Создаем route-map
route-map ISP1 permit 10
! Указываем критерий попадания в этот абзац route-map
match interface fasEthernet 6/0
! Создаем route-map
route-map ISP2 permit 10
! Указываем критерий попадания в этот абзац route-map
match interface fasEthernet 5/0
Тут есть тонкость: при указании слова interface в подсказке пишется
interface Match first hop interface of route
Т.е. вообще говоря, непонятно, что это за параметр. Плюс в зависимости от того, что написано на самом интерфейсе, этот критерий может означать как входящий интерфейс, так и исходящий! А зависит это от того, что написано в команде ip nat на интерфейсе:
ip nat inside – критерий будет означать входящий интерфейс
ip nat outside – критерий будет означать исходящий интерфейс
// Далее, нам понадобится пул адресов от каждого провайдера
// ip nat pool PoolX {start-ip(ISPX)} {end-ip(ISPX)}
ip nat pool PoolISP1 172.16.250.1 172.16.250.254
ip nat pool PoolISP2 172.17.250.1 172.17.250.254
// И можно уже писать правила NAT на каждого провайдера
ip nat inside source route-map ISP1 PoolISP1 overload
ip nat inside source route-map ISP2 PoolISP2 overload
// overload – ключевое слово, означающее использовать PAT (Port Address Translation, трансляцию с учётом порта источника)
// Если к надо добавить статические трансляции, то делаем почти так же (пусть серверу мы зарезервировали адрес Srv(ISPX) от каждого провайдера, а локальный адрес у сервера – Srv(LAN).)
ip nat inside source static Srv(LAN) Srv(ISPX) route-map ISPX