NetworkDoc.Ru В помощь системному администратору

EasyBlog

This is some blog description about this site

  • Home
    Home This is where you can find all the blog posts throughout the site.
  • Categories
    Categories Displays a list of categories from this blog.
  • Tags
    Tags Displays a list of tags that have been used in the blog.
  • Bloggers
    Bloggers Search for your favorite blogger from this site.
  • Team Blogs
    Team Blogs Find your favorite team blogs here.
  • Login
    Login Login form

Резервирование каналов: IPSLA+EEM

Posted by on in Сеть
  • Font size: Larger Smaller
  • Hits: 5517
  • 0 Comments
  • Subscribe to this entry
  • Print

Думаю каждый ИТ специалист когда-либо встречался с таким понятием как резервирование и отказоустойчивость. Представьте себе вы поддерживаете работу небольшого офиса, с одним маршрутизатором cisco в качестве шлюза в интернет и несколькими коммутаторами уровня доступа. Все у вас замечательно и тут упал провайдер, который выпускал ваших сотрудников в интернет (думаю ситуация знакома каждому)...

Через некоторое время после ваших продолжительных звонков провайдер героически поднимает канал и все у вас начинает работать замечательно. Тем не менее осадок остался и через день приходит начальник и спрашивает можем ли мы что-то сделать, что бы избежать таких ситуаций? К примеру пользоваться одновременно услугами двух провайдеров. Конечно можно, отвечаете вы (это ведь на самом деле возможно). А главное реализовать это при наличии второго шнурка от прова абсолютно не сложно, используя такие технологии как IP SLA и EEM (embedded event manager).

Для чего они вообще нужны и что нам дают? IP SLA позволяет нам проверить выполнение заданных нами условий, в то время как EEM поможет изменить конфигурацию исходя из этих условий. Подробнее можно найти в интернете, а мы сконцентрируем наше внимание на практическом применении. Итак, давайте вначале взглянем на нашу упрощенную схему (Рис.1)

b2ap3_thumbnail_ipsla.jpg

Рис.1

Перед нами очень упрощенная схема подключения офисных компьютеров в интернет. Дабы не нагружать статью не нужной информацией я не буду описывать настройку NAT-а, DHCP, списков доступа. Как это сделать можно прочитать в моих предыдущих статьях, а в данном примере мы будем предполагать, что все это уже настроено. Поэтому просто приведу ключевые параметры наших интерфейсов на маршрутизаторе (шлюзе):

Interface Gi0/0: 192.168.1.1 255.255.255.0 - адрес шлюза в локальной сети

Interface Gi0/1: 1.1.1.2 255.255.255.0 - адрес, выданный 1-м провайдером

Interface Gi0/2: 2.2.2.2 255.255.255.0 - адрес, выданный 2-м провайдером

ISP1-ROUTER: 1.1.1.1 255.255.255.0 - адрес маршрутизатора 1-го провайдера

ISP2-ROUTER: 2.2.2.1 255.255.255.0 - адрес маршрутизатора 2-го провайдера

 

Задача будет следующей: Интернет должен в первую очередь работать через 1-го провайдера, т.е. трафик должен идти через маршрутизатор 1.1.1.1.  В случае падения основного провайдера трафик должен пойти через резервный канал, т.е. через маршрутизатор 2.2.2.1.

Как будем это решать?

Для начала нам нужно создать IP SLA и сказать ему для проверки пинговать маршрутизатор провайдера 1.

Router>en

Router#conf t

Router(config)#ip sla 100 - создаем ip sla и указываем его уникальный номер. Мне захотелось использовать номер 100.

Router(config-ip-sla)#icmp-echo 1.1.1.1 source-interface Gi0/0 - говорим нашему ip sla пинговать адрес 1.1.1.1 (маршрутизатор провайдера 1) через интерфейс Gi0/0 (на который приходит провод от провайдера 1). Важно указывать порт, т.к. пропинговать адрес в интернете можно и через резервного провайдера. Важно что бы это было сделано именно через порт, к которому провайдер 1 приходит.

Router(config-ip-sla)#frequency 30 - задаем частоту пингов. Я задал 30, но значение можно менять.

Router(config-ip-sla)#exit - выходим из настройки ip sla и возвращемся в глобальный режим конфигурации.

Router(config)#

Теперь необходимо привязать его к track, который будет использоваться EEM-ом для определения статуса.

Router(config)#track 100 ip sla 100 - создаем track с номером и привязываем его к созданному ранее ip sla 100

Далее запускаем наш ip sla

Router(config)#ip sla schedule 100 life forever start-time now

Что ж, теперь у нас есть процесс который постоянно мониторит доступен ли у нас маршрутизатор провайдера с ip адресом 1.1.1.1. Осталось понять как мы можем это использовать для переключения на резервного провайдера в случае падения основного. На самом деле есть два способа:

1) Для достижения данной цели этот способ является наиболее оптимальным и простым в конфигурации. Можно создать два дефолтных маршрута одновременно на оба провайдера. При этом маршрут через резервного провайдера у нас будет с худшей метрикой, а маршрут через основного провайдера будет указан у нас с параметром track 100, т.е. в случае когда будут выполняться условия в ip sla 100 (будет пинговаться маршрутизатор 1-го провайдера). Выглядеть это все будет приблизительно так:

Router(config)#ip route 0.0.0.0 0.0.0.0 1.1.1.1 name ISP1 track 100 - маршрут через основного провайдера, который будет активен в случае если выполняется наше условие в ip sla 100, т.е. пингуется 1.1.1.1

Router(config)#ip route 0.0.0.0 0.0.0.0 2.2.2.1 name ISP2 20 - маршрут через резервного провайдера с метрикой 20. Т.е. у этого маршрута метрика хуче чем у основного и он будет появляться в таблице маршрутизации только когда не будет активен основной маршрут.

2) Второй способ сложнее и объемней в конфигурировании, но при этом дает нам намного больше гибкости. Мы можем использовать функции EEM, который, исходя из статуса IP SLA позволит нам в прямом смысле изменить конфиг на лету. Давайте взглянем на конфиг

Router(config)#event manager applet ISP1-DOWN

Router(config-applet)#event track 100 state down

Router(config-applet)#action 1.0 cli command "enable"

Router(config-applet)#action 1.1 cli command "conf t"

Router(config-applet)#action 1.2 cli command "no ip route 0.0.0.0 0.0.0.0 1.1.1.1 name ISP1"

Router(config-applet)#action 1.3 cli command "ip route 0.0.0.0 0.0.0.0 2.2.2.1 name ISP2"

Router(config-applet)#exit

Router(config)#event manager applet ISP1-UP

Router(config-applet)#event track 100 state up

Router(config-applet)#action 1.0 cli command "enable"

Router(config-applet)#action 1.1 cli command "conf t"

Router(config-applet)#action 1.2 cli command "no ip route 0.0.0.0 0.0.0.0 2.2.2.1 name ISP2"

Router(config-applet)#action 1.3 cli command "ip route 0.0.0.0 0.0.0.0 1.1.1.1 name ISP1"

Что делает этот конфиг? В самом начале мы создаем applet по имени ISP1-DOWN, который смотрит состояние track-а 100 и в случае если он падает заходит в режим конфигурирования, удаляет маршрут по умолчанию на основного провайдера и добавляет маршрут по умолчанию на резервного провайдера.

В обратную сторону applet по имени ISP1-UP так же смотрит за состоянием track 100 и в случае если он в up-е, т.е. маршрутизатор прова пингуется, то переписывает все обратно, т.е. удаляет маршрут на резервного провайдера и добавляет маршрут на основного.

 

Я думаю вы поняли ключевую разницу между этими 2-я способами. Для выполнения нашей задачи лучше конечно подходит 1-й. Он проще и не такой громоздкий, при этом полностью соответствует требованиям нашей задачи. При этом мне хотелось показать возможности EMM. В случае более сложной и интересной задачи вы можете воспользоваться им и переделать на лету свой конфиг до неузнаваемости :) Какой полет для фантазии ;)

Ну вроде бы все. Надеюсь данный пост был вам интересен, а еще лучше еслии он пригодятся вам на практике. Спасибо за внимание и до новых постов ;)

 

 

0

Comments

  • No comments made yet. Be the first to submit a comment

Leave your comment

Guest Sunday, 02 February 2025
Loading ...

Joomla! Debug Console

Session

Profile Information

Memory Usage

Database Queries