Все больше офисов в своей работе ориентированны на интернет. Пусть
даже офис небольшой, но все равно нужен доступ к электронной почте, к
VoIP и т.д. и т.п. Организовать второе подключение к другому провайдеру
не сложно, но возникает вопрос, как реализовать работу, так что бы
переключение происходило с минимальными действиями со строны админа.
Для реализации резервного канала нам понадобится сервер с 3-мя сетевыми
картами.
Назначение у этих сетевых карт такое:
fxp0 – первая сетевая карта – к ней подключается офис(является шлюзом для локальной сети) – адрес 192.168.1.1/24
fxp1 – первое подключение – основной внешний канал – адрес 192.168.5.2/30 – шлюз 192.168.5.1
fxp2 – второе подключение – резервный внешний канал – адрес 192.168.6.2/30 – шлюз 192.168.6.1
При нормальной работе шлюз по умолдчанию(defaultrouter) смотрит в
192.168.5.1 и трафик идет через карту fxp1, при аварии на основном
канале шлюз должен переключится на 192.168.6.1 и трафик, соответсвенно,
переключится на fxp2.
В /etc/rc.conf внесем все настройки:
Я специально указал включенный named, кеширующий DNS, при
переключениях важно, что бы приходилось менять настройки минимально, и
то, чо мы не будем использовать ДНС провайдера упрощает переключение.
Следующим этапом нужно настроить nat, нам теперь понадобится 2
запущенных процесса natd, под каждый интерфейс. Для этого я применяю
такой скрипт(/usr/local/etc/rc.d/natd):
${ipfw} add 100 divert natd ip from 192.168.1.0/24 to not me out xmit fxp1 ${ipfw} add 110 divert natd ip from not me to 192.168.5.2 in recv fxp1 ${ipfw} add 120
divert 8669 ip from 192.168.1.0/24 to not me out xmit fxp2 ${ipfw} add 130 divert 8669 ip from not me to 192.168.6.2 in recv fxp2
В принципе на этом этапе резервный канал уже можно использовать. С
ручным приводом. То есть, при потере основного внешнего канала
выполнять такую команду:
route change default 192.168.6.1
и все побежит по резервному каналу.
При восстановлении основного канала переуключение опять таки в ручную:
route change default 192.168.5.1
Но ручное переключение это не совсем то, чего хотелось, а для того,
что бы как хотелось, переключалось все автоматом, я использую такой вот
скрипт:
Первый файл – состояние главного роутера(alive) и число проверок(0),
число проверок нужно для перепроверки статуса down, то есть, если у нас
произошел временный сбой по сети, сразу не переводить канал на
запасной, а проверить еще раз, если основной канал лежит, только тогда
переводить канал на резерв.
Скрипт нужно поставить на крон с периодом запуска раз в 5 минут и на этом вобщем то все.
Скрипт достаточно простой и у меня работает нормально. Единственное при
больших потерях на основном канале он иногда начинает переключать туда
и обратно. Поэтому следить за его работой все таки приходится.
Буду рад комментариям, постараюсь ответить на вопросы. Заходите на сайт http://www.hilik.org.ua/