В этой короткой статье я опишу процесс настройки функций для переключения маршрутов между двумя провайдерами в случае, если физический линк присутствует и даже есть наличие локальной сети провайдера, но нет самого интернета.
Рассмотрим пример с 2 провайдерами:
Конфигурирование будет состоять из двух этапов:
Как правило выбираются хосты изначально постоянно доступные для icmp-ping в моем примере. Для примера, а не для подражания возьмем для мониторинга IP крупных провайдеров: 213.180.193.3, 209.85.148.104. Я беру 2 IP для мониторинга так как по одному возможны ложные срабатывания. В реальной обстановке можно мониторить и сеть провайдера и хопы после его граничных маршрутизаторов.
Заходим в режим редактирования конфигурации из командной строки.
Итак:
Делаем новый раздел теста серверов с именем Probe-Servers и новое имя ya-test для теста сервера. Устанавливаем тип тестирования icmp-ping
Назначаем целевой IP адрес для пинга.
Внимание! Убедитесь, что люди которых вы пингуете не против или не заметят ваших тестов в общем потоке траффика и не закроют вам этот протокол.
Устанавливаем количество тестовых посылок на один цикл проверки.
Интервал между тестами(циклами проверки).
Сколько пакетов должно потеряться чтобы тест считался не пройденным.
Через какой интерфейс посылать пакеты для проверки — в нашем случае это будет интерфейс основного провайдера через который идет весь траффик.
Ну и рутинг на следующий хоп для тестового пакета.
Аналогично настраиваем следующий сервер go-test:
Кстати в таблице маршрутизации должен быть указан статический рутинг по-умолчанию на первого провайдера с метрикой ниже метрики по-умолчанию. В моем случае стоит метрика 50:
Настройка переключения рутинга в случае недоступности тестовых серверов.
Установка слежения за тестами с именем приведенным выше на Этапе 1.
И в случае падения обоих серверов переключение рутинга на другого провайдера.
Загружаем конфигурацию и наблюдаем за состоянием командой:
Результат вывода команды должен быть примерно такой:
Мы настроили переключение провайдеров по результатам доступности определенных хостов в сети интернет. Многие читатели реализовывали это посредством скриптов на perl или bash. И конечно же я не беру ситуацию когда вместе с провайдером настраивается BGP, так как в моем примере я не завишу от провайдера и к томуже очень часто нужно иметь услуги от двух разных конкурирующих провайдеров имеющих разные каналы во внешний мир.
Рассмотрим пример с 2 провайдерами:
- ISP1
interface IP 1.1.1.100
gateway IP 1.1.1.1
netmask 255.255.255.0
interface name ge-0/0/2.0 - ISP2
interface IP 2.2.2.200
gateway IP 2.2.2.1
netmask 255.255.255.0
interface name ge-0/0/2.0
Конфигурирование будет состоять из двух этапов:
- Настройка rpm — который проверяет доступность выбранных хостов
- Настройка ip-monitoring — который непосредственно выполняет переключения рутинга
Этап 1
Как правило выбираются хосты изначально постоянно доступные для icmp-ping в моем примере. Для примера, а не для подражания возьмем для мониторинга IP крупных провайдеров: 213.180.193.3, 209.85.148.104. Я беру 2 IP для мониторинга так как по одному возможны ложные срабатывания. В реальной обстановке можно мониторить и сеть провайдера и хопы после его граничных маршрутизаторов.
Заходим в режим редактирования конфигурации из командной строки.
Итак:
set services rpm probe Probe-Servers test ya-test probe-type icmp-ping
Делаем новый раздел теста серверов с именем Probe-Servers и новое имя ya-test для теста сервера. Устанавливаем тип тестирования icmp-ping
set services rpm probe Probe-Servers test ya-test target address 213.180.193.3
Назначаем целевой IP адрес для пинга.
Внимание! Убедитесь, что люди которых вы пингуете не против или не заметят ваших тестов в общем потоке траффика и не закроют вам этот протокол.
set services rpm probe Probe-Servers test ya-test probe-count 5
Устанавливаем количество тестовых посылок на один цикл проверки.
set services rpm probe Probe-Servers test ya-test probe-interval 1
Интервал между тестами(циклами проверки).
set services rpm probe Probe-Servers test ya-test thresholds successive-loss 3
Сколько пакетов должно потеряться чтобы тест считался не пройденным.
set services rpm probe Probe-Servers test ya-test destination-interface ge-0/0/1.0
Через какой интерфейс посылать пакеты для проверки — в нашем случае это будет интерфейс основного провайдера через который идет весь траффик.
set services rpm probe Probe-Servers test ya-test next-hop 1.1.1.1
Ну и рутинг на следующий хоп для тестового пакета.
Аналогично настраиваем следующий сервер go-test:
set services rpm probe Probe-Servers test go-test probe-type icmp-ping
set services rpm probe Probe-Servers test go-test target address 209.85.148.104
set services rpm probe Probe-Servers test go-test probe-count 5
set services rpm probe Probe-Servers test go-test probe-interval 1
set services rpm probe Probe-Servers test go-test thresholds successive-loss 3
set services rpm probe Probe-Servers test go-test destination-interface ge-0/0/1.0
set services rpm probe Probe-Servers test go-test next-hop 1.1.1.1
Кстати в таблице маршрутизации должен быть указан статический рутинг по-умолчанию на первого провайдера с метрикой ниже метрики по-умолчанию. В моем случае стоит метрика 50:
set routing-options static route 0.0.0.0/0 next-hop 1.1.1.1
set routing-options static route 0.0.0.0/0 metric 50
Этап 2
Настройка переключения рутинга в случае недоступности тестовых серверов.
set services ip-monitoring policy Server-Tracking match rpm-probe Probe-Servers
Установка слежения за тестами с именем приведенным выше на Этапе 1.
set services ip-monitoring policy Server-Tracking then preferred-route route 0.0.0.0/0 next-hop 2.2.2.1
И в случае падения обоих серверов переключение рутинга на другого провайдера.
Загружаем конфигурацию и наблюдаем за состоянием командой:
show services ip-monitoring status
Результат вывода команды должен быть примерно такой:
Policy - Server-Tracking
RPM Probes:
Probe name Address Status
---------------------- ---------------- ---------
Probe-Servers 213.180.193.3 PASS
Probe-Servers 209.85.148.104 PASS
Route-Action:
route-instance route next-hop State
----------------- ----------------- ---------------- -------------
inet.0 0.0.0.0 2.2.2.1 NOT-APPLIED
Итог
Мы настроили переключение провайдеров по результатам доступности определенных хостов в сети интернет. Многие читатели реализовывали это посредством скриптов на perl или bash. И конечно же я не беру ситуацию когда вместе с провайдером настраивается BGP, так как в моем примере я не завишу от провайдера и к томуже очень часто нужно иметь услуги от двух разных конкурирующих провайдеров имеющих разные каналы во внешний мир.