Автоматическое переключение каналов на роутере

Время на прочтение
4 мин

Количество просмотров 124K

В недавнем прошлом в связи с переходом с ADSL на Ethernet представилась отличная возможность попробовать оборудование от Mikrotik. В связи с чем был куплен роутер RB750GL. Железка оказалась превосходной как внешне, так и с точки зрения функционала и надёжности.
В итоге у меня осталось оба канала и было решено настроить резервирование с автоматическим переключением. Стандартные средства переключения шлюзов не покрывают всё многообразие сбоев, поэтому нужно писать свои скрипты.

Конфигурация сети

1. Канал Ehernet от NLink втыкается в первый порт роутера, получает IP по DHCP и поднимает pptp соединение, названное nlink. Это будет основное соединение.
2. Канал ADSL от провайдера Домолинк проходит через DLink-2500 в режиме моста и втыкается во второй порт роутера, поверх поднимается pppoe соединение, названное domolink. Это будет резервное соединение.
3. Порты 3-5 роутера используются для подключения устройств локальное сети.

Настройки роутера

Настройка подключений и маскарадинга для компьютеров локальное сети является тривиальной и детально описана в официальной вики.

При настройке ppp подключений нужно отключить добавление маршрутов по умолчанию, а затем создать статические маршруты разными метриками и подходящими комментариями:
/ip route
add comment=MainGW disabled=no distance=1 dst-address=0.0.0.0/0 gateway=nlink scope=30 target-scope=10
add comment=RsrvGW disabled=no distance=2 dst-address=0.0.0.0/0 gateway=domolink scope=30 target-scope=10

Теперь чтобы переключать каналы достаточно изменять параметр distance. Трафик пойдёт через канал с меньшим значением этого параметра.

Скрипты

Установка глобальных параметров при запуске роутера

Скрипт называется set_global_parameters
#Main interface name
:global MainIf nlink
#Reserve interface name
:global RsrvIf domolink
#Main interface ip address
:global MainIfAddress ""
#Reserve interface ip address
:global RsrvIfAddress ""

Определение IP-адресов интерфейсов

Определение IP-адреса основного интерфейса

Скрипт называется define_main_if_ip
:global MainIf
:global MainIfAddress ""
:set MainIfAddress [/ip address get [find interface=$MainIf] address]

Данный скрипт определяет IP-адрес основного интерфейса для доступа в интернет. Если этот интерфейс отсутствует, то скрипт будет завершаться с ошибкой, а в переменной MainIfAddress будет пустая строка.

Определение IP-адреса резервного интерфейса

Скрипт называется define_reserved_if_ip
:global RsrvIf
:global RsrvIfAddress ""
:set RsrvIfAddress [/ip address get [find interface=$RsrvIf] address]

Определение этих адресов вынесено в отдельные скрипты, т.к. эти значения я использую ещё в ряде скриптов на роутере (например, обновление записей в DynDNS), а пользовательские функции тут создавать нельзя. Следует заметить, что напрямую команды определения адресов нельзя использовать в других скриптах, т.к. в случае проблем с интерфейсом они генерируют ошибку и приводят к завершению скрипта.

Переключение каналов

Скрипт называется connection_check
:global MainIf
:global RsrvIf
:global MainIfAddress
:global RsrvIfAddress

:local PingCount 3

#www.ru
:local PingTarget1 194.87.0.50

#ya.ru
:local PingTarget2 87.250.250.203

#google dns
:local PingTarget3 8.8.8.8

#Check main internet connection
:local MainIfInetOk false;

if ($MainIfAddress="") do={delay 5}

if ($MainIfAddress!="") do={
:local PingResult1 [/ping $PingTarget1 count=$PingCount interface=$MainIf]
:local PingResult2 [/ping $PingTarget2 count=$PingCount interface=$MainIf]
:local PingResult3 [/ping $PingTarget3 count=$PingCount interface=$MainIf]

:set MainIfInetOk (($PingResult1 + $PingResult2 + $PingResult3) >= (2 * $PingCount))
}

#Check reserved internet connection
:local RsrvIfInetOk false;

if ($RsrvIfAddress="") do={delay 5}

if ($RsrvIfAddress!="") do={
:local PingResult1 [/ping $PingTarget1 count=$PingCount interface=$RsrvIf]
:local PingResult2 [/ping $PingTarget2 count=$PingCount interface=$RsrvIf]
:local PingResult3 [/ping $PingTarget3 count=$PingCount interface=$RsrvIf]

:set RsrvIfInetOk (($PingResult1 + $PingResult2 + $PingResult3) >= (2 * $PingCount))
}

:put "MainIfInetOk=$MainIfInetOk"
:put "RsrvIfInetOk=$RsrvIfInetOk"

if (!$MainIfInetOk) do={
/log error "Main internet connection error"
}

if (!$RsrvIfInetOk) do={
/log error "Reserve internet connection error"
}

:local MainGWDistance [/ip route get [find comment="MainGW"] distance]
:local RsrvGWDistance [/ip route get [find comment="RsrvGW"] distance]
:put "MainGWDistance=$MainGWDistance"
:put "RsrvGWDistance=$RsrvGWDistance"

#SetUp gateways
if ($MainIfInetOk && ($MainGWDistance >= $RsrvGWDistance)) do={
/ip route set [find comment="MainGW"] distance=1
/ip route set [find comment="RsrvGW"] distance=2
/log info "Switch to main internet connection"
}

if (!$MainIfInetOk && $RsrvIfInetOk && ($MainGWDistance <= $RsrvGWDistance)) do={
/ip route set [find comment="MainGW"] distance=2
/ip route set [find comment="RsrvGW"] distance=1
/log warning "Switch to reserve internet connection"
}

Обратите внимание на пинг через конкретный интерфейс, а так же на критерий признания канала неисправным. Я пингую три разных узла и считаю, что интернет на данном интерфейсе не работает, если приходит меньше 2/3 ответов.

Планировщик

1. Скрипт set_global_parameters запускается один раз при запуске роутера.
2. Скрипты определения IP-адресов запускаются каждые 27 секунд. Такое значение выбрано чтобы минимизировать количество одновременных запусков с основным скриптом.
3. Скрипт connection_check запускается каждую минуту.

Выводы

Полученное решение при минимуме затрат существенно повысило надёжность моей домашней сети и успешно справляется с самыми изощрёнными сбоями местных провайдеров, при этом оно в достаточной степени защищено от сбоев внешних узлов сети.

FAQ

[Беспроводное устройство] Как установить беспроводной Канал управления?

Что такое канал управления?

Радиоканал для работы Wi-Fi соединения. Каналы различаются в зависимости от страны.

По умолчанию роутер ASUS настроит канал управления автоматически, вы можете исправить это при необходимости.

Как отключить автоматический выбор канала DFS?

Шаг 1. Подключите компьютер или телефон к роутеру ASUS с помощью кабеля Wi-Fi или Ethernet.

             Откройте веб-браузер и перейдите в веб-интерфейс по LAN IP Вашего роутера или http://asusrouter.com).

Примечание: Для получения дополнительных сведений см. [Беспроводной маршрутизатор] Как войти в графический интерфейс маршрутизатора.

Шаг 2. Введите имя пользователя и пароль для входа на страницу входа и нажмите [Войти].

Примечание: Если вы забыли имя пользователя и / или пароль, восстановите маршрутизатор до заводского состояния по умолчанию. См. раздел Как сбросить маршрутизатор до заводских настроек по умолчанию?

Шаг 3. Перейдите в Wireless> General tab> Band (выберите 2.4GHz, 5GHz или 5G2)> Control Channel.

      а). Диапазон 2,4 ГГц

Выберите другой канал управления и нажмите Применить для сохранения.

b).  Диапазон 5GHz 

Выберите другой канал управления и нажмите Применить для сохранения.

c). Диапазон 5G-2 Гц, отмените [Автоматический выбор канала, включая каналы DFS].

Чтобы узнать, что такое каналы DFS, пожалуйста, обратитесь к [Беспроводной маршрутизатор] Что такое DFS (динамический выбор частоты) и как он работает на маршрутизаторе ASUS?

Выберите другой канал управления и нажмите Применить для сохранения.

Как скачать (Утилиту / Прошивку)?

Вы можете загрузить последние версии драйверов, программного обеспечения, прошивки и руководств пользователя в Центре загрузок ASUS.

Если вам нужна дополнительная информация о Центре загрузок ASUS, перейдите по этой ссылке.

Эта информация была полезной?

Yes
No

  • Приведенная выше информация может быть частично или полностью процитирована с внешних веб-сайтов или источников. Пожалуйста, обратитесь к информации на основе источника, который мы отметили. Пожалуйста, свяжитесь напрямую или спросите у источников, если есть какие-либо дополнительные вопросы, и обратите внимание, что ASUS не имеет отношения к данному контенту / услуге и не несет ответственности за него.
  • Эта информация может не подходить для всех продуктов из той же категории / серии. Некоторые снимки экрана и операции могут отличаться от версий программного обеспечения.
  • ASUS предоставляет вышеуказанную информацию только для справки. Если у вас есть какие-либо вопросы о содержании, пожалуйста, свяжитесь напрямую с поставщиком вышеуказанного продукта. Обратите внимание, что ASUS не несет ответственности за контент или услуги, предоставляемые вышеуказанным поставщиком продукта.

Mikrotik-2-ISP-Failover-000.pngЗависимость нормальной работы предприятия от доступа в сеть интернет сегодня приобретает критический характер и перебои в работе провайдера могут привести к реальным убыткам или простою рабочих процессов, поэтому многие подключают резервные каналы других поставщиков услуг, чтобы использовать их для резервирования или балансировки нагрузки. В данном цикле статей мы рассмотрим работу с несколькими провайдерами на оборудование Mikrotik и сегодня расскажем про различные способы резервирования, а также их достоинства и недостатки.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

В данной статье мы не будем рассматривать базовую настройку роутера: выход в интернет, правила брандмауэра и т.п., будем считать, что читатель владеет этими вещами и уделим внимание только обеспечению резервирования внешних каналов.

Данная статья предназначена для RouterOS 6.x

Ниже показана схема, реализованная в нашей лаборатории с указанием адресов и интерфейсов, подключенных к двум условным провайдерам, а также их шлюзы.

Mikrotik-2-ISP-Failover-002.pngДля правильной работы всех описанных ниже способов вам потребуется отключить динамическое добавление маршрутов, которое может быть включено если вы получаете сетевые настройки от провайдера по DHCP или используете PPPoE:

Mikrotik-2-ISP-Failover-003.png

Важно! Во время выполнения операций с настройкой маршрутов у вас кратковременно пропадет доступ в интернет. Поэтому все указанные действия следует выполнять имея физический доступ к устройству.

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

Резервирование на основе дистанции маршрута

Самый простой, можно даже сказать примитивный способ, в этом случае мы добавляем два маршрута с разной административной дистанцией и включаем проверку доступности шлюза для них.

Для этого перейдем в IP — Routes и добавим маршрут к первому провайдеру: Dst. Address — оставляем по умолчанию — 0.0.0.0/0, Gateway — указываем шлюз первого провайдера, в нашем случае 192.168.3.1, включаем механизм проверки доступности шлюза — Check Gateway — ping, и устанавливаем административную дистанцию маршрута — Distance — 1.

Mikrotik-2-ISP-Failover-004.png

Эти же действия в терминале:

/ip route
add check-gateway=ping distance=1 gateway=192.168.3.1

Аналогичным образом добавляем маршрут ко второму провайдеру, только указываем административную дистанцию Distance — 2. В данном случае абсолютные цифры не так важны, при наличии нескольких маршрутов к одному адресу назначения работать будет тот, у которого административная дистанция меньше.

Mikrotik-2-ISP-Failover-005.pngИли в терминале:

/ip route
add check-gateway=ping distance=2 gateway=192.168.233.2

После этого у вас появится интернет и будет активен маршрут через первого провайдера:

Mikrotik-2-ISP-Failover-006.pngТеперь имитируем аварию, в нашем случае мы просто отключим патч-корд от интерфейса ether1, через небольшое время роутер обнаружит недоступность шлюза и сделает маршрут не активным, после чего автоматически заработает маршрут через второго провайдера и трафик пойдет туда.

Mikrotik-2-ISP-Failover-007.pngПосле восстановления доступности шлюза провайдера обратное переключение произойдет автоматически.

Резервирование при помощи рекурсивной маршрутизации

Предыдущий способ имеет один серьезный недостаток, он проверяет доступность шлюза провайдера, но не проверяет наличие интернета за этим шлюзом, и вы можете оказаться в ситуации, когда интернет отсутствует, но переключения на резервный канал не произошло. Чтобы избежать такой ситуации следует проверять доступность не шлюза провайдера, а внешних высокодоступных узлов.

Один из методов, позволяющих это сделать, называется рекурсивной маршрутизацией, мы подробно рассматривали ее в отдельной статье, поэтому здесь просто покажем последовательность настройки, не вдаваясь в подробности.

Резервирование каналов в Mikrotik при помощи рекурсивной маршрутизации

Прежде всего выберем два высокодоступных узла, в нашем случае это будут 8.8.8.8 и 9.9.9.9 и пропишем к каждому из них маршрут через шлюзы первого и второго провайдеров.

Переходим в IP — Routes и создаем маршрут: Dst. Address — 8.8.8.8 — узел для проверки первого провайдера, Gateway — 192.168.3.1 — шлюз первого провайдера, Distance — 1, Scope — 10. Обратите внимание на значение области (Scope), если вы оставите там значение по умолчанию — 30, то рекурсивная маршрутизация работать не будет! Затем добавим второй аналогичный маршрут, но уже к узлу 9.9.9.9 через шлюз второго провайдера.

Mikrotik-2-ISP-Failover-008.pngТоже самое быстро в терминале:

/ip route
add distance=1 dst-address=8.8.8.8/32 gateway=192.168.3.1 scope=10
add distance=1 dst-address=9.9.9.9/32 gateway=192.168.233.2 scope=10

Теперь добавим рекурсивные маршруты для каждого из провайдеров со следующими настройками: Dst. Address оставляем по умолчанию — 0.0.0.0/0, Gateway — 8.8.8.8 — высокодоступный узел для первого провайдера, Check Gateway — ping — указываем проверку доступности шлюза, Distance — 1. Для второго провайдера все тоже самое, но Gateway — 9.9.9.9 и Distance — 2.

Mikrotik-2-ISP-Failover-009.pngВ терминале воспользуйтесь командами:

/ip route
add check-gateway=ping distance=1 gateway=8.8.8.8
add check-gateway=ping distance=2 gateway=9.9.9.9

Мы сейчас не будем вдаваться в подробности как это работает, для этого есть отдельная статья, но общий смысл заключается в том, что рекурсивные маршруты в итоге работают через реальные шлюзы провайдеров, но проверяют доступность не провайдерского шлюза, а высокодоступного узла за ним. Если связь пропала — маршрут деактивируется и начинает работать следующий, с большей дистанцией.

На рисунке ниже мы можем видеть, что активный маршрут переключился на резервный канал несмотря на то, что шлюз основного провайдера доступен:

Mikrotik-2-ISP-Failover-010.pngПри восстановлении работы первого провайдера обратное переключение произойдет автоматически.

Резервирование при помощи Netwatch

Прежде всего добавим маршруты к каждому из провайдеров с разными дистанциями, никаких проверок включать не надо, но обязательно следует добавить к каждому маршруту комментарий, в нашем случае это будут «ISP1» и «ISP2».

Mikrotik-2-ISP-Failover-011.pngВ терминале:

/ip route
add comment=ISP1 distance=1 gateway=192.168.3.1
add comment=ISP2 distance=2 gateway=192.168.233.2

Затем выбираем высокодоступный хост и добавляем к нему маршрут через первого провайдера:

Mikrotik-2-ISP-Failover-012.pngЭти же действия в терминале:

/ip route
add distance=1 dst-address=8.8.8.8/32 gateway=192.168.3.1

Затем переходим в Tools — Netwatch и добавляем там новый узел, на закладке Host указываем адрес выбранного высокодоступного узла, при необходимости меняем интервал опроса.

Mikrotik-2-ISP-Failover-013.pngНа закладе Up вводим следующий скрипт:

/ip route set [find comment="ISP1"] disabled=no
/ip route set [find comment="ISP2"] disabled=yes

Затем на закладке Down:

/ip route set [find comment="ISP1"] disabled=yes
/ip route set [find comment="ISP2"] disabled=no

Их смысл предельно прост, если узел через первого провайдера доступен, то включаем маршрут с меткой ISP1, а маршрут с меткой ISP2 выключаем, если недоступен — то делаем ровно наоборот.

В терминале все это можно быстро сделать при помощи «заклинания»:

/tool netwatch
add down-script="/ip route set [find comment=\"ISP1\"] disabled=yes\r\
\n/ip route set [find comment=\"ISP2\"] disabled=no" host=8.8.8.8 \
up-script="/ip route set [find comment=\"ISP1\"] disabled=no\r\
\n/ip route set [find comment=\"ISP2\"] disabled=yes"

Для проверки блокируем доступ через первого провайдера и убеждаемся, что переключение происходит:

Mikrotik-2-ISP-Failover-014.pngОбратное переключение произойдет автоматически после восстановления связи с высокодоступным узлом.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Переключения интернет каналов между двумя провайдерами чаще всего используется для резервирования в серьезных компаниях. Исходные данные таковы.

К роутеру Mikrotik подключены два провайдера.
Первый провайдер к порту ether1-WAN1 со шлюзом 192.168.0.1, второй провайдер к порту ether2-WAN2 — шлюз 192.168.1.1.
Нужно настроить так, что бы основной канал WAN1 работал всегда, но при его падении срабатывало автоматическое переключение на второй провайдер WAN2.
После того, как первый провайдер восстанавливается, система автоматически должна перестроиться обратно на первого провайдера WAN1.
Как настроить подключение к провайдеру в этой статье рассказывать не будем, почитать об этом можно тут  и тут.
В середине статьи можно будет посмотреть видео-обзор настройки на Mikrotik переключения каналов при падении одного из них.

1. Начнем с того, что нам нужно явно прописать маршруты для наших провайдеров, отдельно для каждого.
Переходим:

IP — ROUTE — «+»
Dst. Address: 0.0.0.0/0
Gateway: 192.168.0.1%ether1-WAN1
Distance:1
Scope:30
Target Scope:10
Comment: RWAN1

IP — ROUTE — «+»
Dst. Address: 0.0.0.0/0
Gateway: 192.168.1.1%ether2-WAN2
Distance:2
Scope:30
Target Scope:10
Comment: RWAN2

Тоже самое если настраиваете в терминале:

/ip route
add check-gateway=ping comment=RWAN1 distance=1 gateway=192.168.0.1%ether1-WAN1
add check-gateway=ping comment=RWAN2 distance=2 gateway=192.168.1.1%ether2-WAN2

Обратите внимание на Distance, чем меньше цифра , тем больше приоритет. То есть основной канал у нас первый провайдер.

2. Теперь добавим маршрут к ресурсу интернете, который постоянно пингуется, конечно же это google dns, по нему мы будет определять доступность интернет-каналов провайдеров.

Переходим:

IP — ROUTE — «+»
Dst. Address: 8.8.8.8
Gateway: 192.168.0.1
Distance:1
Scope:30
Target Scope:10
Comment: GOOGLE ROUTE

3. Далее добавим правило в firewall на запрет пинга google dns 8.8.8.8 через WAN2, то есть пинг будет проходить только через WAN1 — первый провайдер. Это делается для того, что бы MIkrotik понял, находятся на втором канале, что первый канал поднялся при появлении ping 8.8.8.8.

IP — Firewall — Filter Rules — «+»:

Вкладка General.
Chain — Output;
Dst. Address — 8.8.8.8;
Out. Interface выберите ether2-WAN2;

На вкладке Action.
Action: drop.

4. Настраиваем саму логику переключения между провайдерами, при падении одного из них.
Переходим Tools — Netwatch — «+»:
Вкладка Host.
Host: 8.8.8.8
Interval: 00:00:05 (время, через которое проверяется данное правило)
Timeout: 1000 ms

Вкладка Up прописываем:
/ip route disable [find comment=»RWAN2″]

Даем понять, что маршрут второго провайдера с комментарием RWAN2 отключается, если ping до host 8.8.8.8 начинают ходить.

Вкладка Down:
/ip route enable [find comment=»RWAN2″]

Маршрут второго провайдера с комментарием RWAN2 включается, если ping до host 8.8.8.8 начинают ходить.

На этом настройка завершена.

Эта статья подходит для: 

TL-ER6120 , TL-ER6020 , TL-ER5120 , TL-R480T+ , TL-R470T+ , TL-ER604W

С помощью функции Link Backup (резервирование канала) маршрутизатор сможет переключать все сессии с разорванного соединения на другой канал, обеспечивая постоянно работающую сеть. Вы можете настроить функцию Link Backup (резервирование канала) при фактической необходимости уменьшить загруженность определённого порта WAN и улучшить производительность сети.

Шаг 1 Выберите Load Balance (Балансировка нагрузки) в меню Advanced (Дополнительные настройки) и выберите Link Backup (Резервирование канала):

Шаг 2 Наведите курсор на иконку WAN, и перед вами появится две кнопки: +позволит сделать данный порт основным портом WAN (primary WAN). +B позволит сделать данный порт резервным портом WAN (backup WAN). Вам просто требуется назначить соответствующему порту соответствующее значение, и после чего они будут отображены в графе WAN Config (Настройка WAN):

Шаг 3 Вы можете выбрать режим резервирования канала: Timing (Выбор времени) или Failover (Переключение при сбое). Выбрав режим timing вы сможете настроить фактическое время резервирования канала, в режиме failover вы сможете обеспечить резервирование канала, когда с основным портом WANпроисходит сбой: 

Шаг 4 После завершения настроек нажмите Add (Добавить), чтобы сохранить правило резервирования канала. По завершении оно будет отображено в таблице: 

После того, как вы выполните вышеуказанные шаги, маршрутизатор сможет создать резервный канал и перенаправлять передачу данных на различные каналы WAN согласно вашим настройкам.

Примечание:

1. После создания правила резервирования канала в режиме timing (выбора времени) резервное WAN-соединение будет отключено вне данного промежутка времени. В режиме failover (переключение при сбое) резервное WAN-соединение будет отключено, когда состояние основного WAN-соединения определяется как нормальное.

2. Функция Link Backup (резервирование канала) должна использоваться с функцией Online Detection. При использовании Online Detection в автоматическом режиме будут использоваться инструменты PING (отправка эхо-запроса) и DNSlookup (DNS-поиск) для определения маршрута к шлюзу WAN-порта. Если Вы хотите проверить работу определённого маршрута, рекомендуется использовать режим Manual mode (Ручной режим).

Был ли этот FAQ полезен?

Ваш отзыв поможет нам улучшить работу сайта.

Что вам не понравилось в этой статье?

  • Недоволен продуктом
  • Слишком сложно
  • Неверный заголовок
  • Не относится к моей проблеме
  • Слишком туманное объяснение
  • Другое

Как мы можем это улучшить?

Спасибо

Спасибо за обращение
Нажмите здесь, чтобы связаться с технической поддержкой TP-Link.

Другие наши интересноые статьи:

  • Zyxel управление роутером через интернет
  • Автоматическая перезагрузка роутера keenetic при пропадании интернета
  • Автоматическое подключение к интернету на роутере
  • Zyxel роутер как подключить провода
  • Zyxel роутеры wifi для дома

  • 0 0 голоса
    Рейтинг статьи
    Подписаться
    Уведомить о
    guest

    0 комментариев
    Старые
    Новые Популярные
    Межтекстовые Отзывы
    Посмотреть все комментарии