К сожалению, провайдер интернета не всегда в состоянии обеспечить бесперебойную на 100% связь. В работу сети может вмешаться непогода, профилактические работы, сбои на головном оборудовании. И, в случае, если проблема касается домашнего интернета, пользователь может подождать или выйти в любимую социальную сеть с телефона, то касаемо бизнеса – любой незапланированный перерыв в работе несет убытки. В этой статье я рассмотрю подключение второго канала для роутеров Mikrotik на базе RouterOS и автоматическое переключение на него в случае проблем на основном канале связи.
В зависимости от следующих факторов вам может потребоваться дополнительный роутер:
- У вас нет второго проводного канала, вы хотите выходить в сеть с использованием 3G/4G модема и ваш Mikrotik не оснащен USB-портом.
- Второй канал является точкой доступа WiFi, а на вашем Mikrotik нет WiFi модуля – вам потребуется роутер с WiFi, который может работать в режиме клиента беспроводной сети.
В случае, если у вас есть проводной запасной канал от другого провайдера, то мы его подключаем к Mikrotik. Если вы используете второй роутер для запасного канала, то производим его настройку, чтобы можно было выходить в интернет, назначаем ему локальный IP адрес, отличный от IP адреса Mikrotik (в моем случае 192.168.1.1 – Mikrotik, 192.168.1.254 – роутер в режиме клиента беспроводной сети). В дальнейшем настройка Mikrotik для проводного запасного канала и для второго роутера практически одинакова.
Я опишу собственный случай, снабдив его пояснениями для понимания процесса.
Итак, в мой Mikrotik приходит проводной интернет в первый канал. Реквизиты провайдера, допустим, будут следующими:
- IP: 62.245.0.230
- Mask: 255.255.255.252
- GW: 62.245.0.229
В настройках DNS Mikrotik, кроме DNS провайдера еще прописаны: 8.8.8.8 и 8.8.4.4 (это Google DNS). Прописывать их необязательно, но желательно, в случае, если ваш провайдер разрешает доступ к своим DNS только из своей сети (а это так в большинстве случаев).
На портах Mikrotik прописаны следующие IP:
port1: 62.245.0.230/255.255.255.252
port2-5: 192.168.1.1/255.255.255.0
Маршруты выглядят так:
Цель: 0.0.0.0/0 (интернет), Шлюз: 62.245.0.229. Нужно поставить на нем метку (комментарий) – MainGW с помощью кнопки Comment при открытии маршрута.
Цель: 192.168.1.0/24 (локальная сеть), Шлюз: port2 master (это стандартный маршрут, в большинстве случаев он пропишется автоматически).
Настраиваем маршруты для второго канала:
Итак, нам потребуется прописать отдельный маршрут для 8.8.8.8, потому что связь на основном канале мы будем проверять, пингуя этот ip.
Создаем маршрут: Цель (Dst.address): 8.8.8.8, шлюз (gateway): 62.245.0.229, distance 1, scope 10, target scope 10.
Таким образом, теперь пакеты для 8.8.8.8 начнут ходить ТОЛЬКО через наш основной канал и никак иначе.
Создаем второй маршрут через запасной канал:
Предполагая, что на втором роутере у нас уже настроен интернет и он имеет IP 192.168.1.254, мы создаем маршрут
Цель (dst.address): 0.0.0.0/0, Шлюз (gateway): 192.168.1.254, distance 1, scope и target scope по 10. С помощью кнопки Comment называем маршрут RsrvGW. Сразу после создания делаем этот маршрут неактивным, нажав красный X.
Общая картина теперь такова: у нас есть 4 маршрута. Один – в локальную сеть, еще один до 8.8.8.8 через основной канал, один – собственно, сам основной канал, и последний – запасной канал.
Теперь в левом меню ищем пункт Tools – Netwatch. Создаем там новый пункт кнопкой +. Заполняем по следующему примеру:
Host: 8.8.8.8 (утилита будет проверять связь до 8.8.8.8 и действовать по следующим двум вкладкам). Interval: 00:00:05, Timeout 2000 ms. Означает, что раз в 5 секунд мы будем смотреть, доступны ли восьмерки. Если через 2 секунды мы не получаем ответ, то действуем по вкладке Down (хост лежит). Если восьмерки поднялись – то переходим на вкладку Up (хост поднялся). Теперь понятно, почему мы прописывали до восьмерок свой отдельный маршрут? Если упадут гугловские 8.8.8.8 – в 99% случаев это будет означать, что с нашим каналом проблемы, ведь пакеты ходят только через основной канал, а Google DNS – вещь довольно надежная. Переключаемся на вкладку Down и копируем следующий скрипт:
/ip route set [find comment=”MainGW”] disabled=yes
/ip route set [find comment=”RsrvGW”] disabled=no
/log error “Main ISP is down, failover is active”
При упавшем хосте скрипт сделает следующее: найдет основной маршрут по комментарию MainGW, отключит его, найдет по комментарию также маршрут RsrvGW и включит его, вдобавок, отметится в логах.
На вкладке Up вставляем следующий скрипт:
/ip route set [find comment=”MainGW”] disabled=no
/ip route set [find comment=”RsrvGW”] disabled=yes
/log info “Main ISP is up, failover turns off”
Здесь все ровно наоборот, если хост поднялся, значит заработал главный канал и нам надо активировать основной маршрут, а запасной – отключить. Нажимаем Ok. Мы закончили.
Таким образом, срабатывая раз в 5 секунд, утилита Netwatch будет действовать согласно написанным в ней скриптах и переключать маршруты. Отключив основной маршрут, в случае, если основной канал заработает, мы все равно сможем проверять 8.8.8.8 на доступность, ведь для них прописан свой маршрут и его мы не отключаем никогда.
Надеюсь, объяснил я понятно. В случае, если ваш роутер имеет USB-порт и 3G модем, скорее всего, также нужно будет редактировать маршруты, но вместо gateway на маршруте до запасного канала указывать не IP шлюза провайдера или второго роутера, а интерфейс с 3G модемом, в выпадающем списке gateway при создании маршрута.