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