Данная статья предназначена для RouterOS 6.x
Ниже показана схема, реализованная в нашей лаборатории с указанием адресов и интерфейсов, подключенных к двум условным провайдерам, а также их шлюзы.
Для правильной работы всех описанных ниже способов вам потребуется отключить динамическое добавление маршрутов, которое может быть включено если вы получаете сетевые настройки от провайдера по DHCP или используете PPPoE:
Важно! Во время выполнения операций с настройкой маршрутов у вас кратковременно пропадет доступ в интернет. Поэтому все указанные действия следует выполнять имея физический доступ к устройству.
Хотя можно обойтись и без этого, просто перед настройкой создайте дополнительный нулевой маршрут через основной шлюз и укажите ему самую меньшую административную дистанцию. Но помните, что любое неверное ваше действие грозит потерей сетевого доступа к устройству из внешней сети.
Резервирование на основе дистанции маршрута
Самый простой, можно даже сказать примитивный способ, в этом случае мы добавляем два маршрута с разной административной дистанцией и включаем проверку доступности шлюза для них.
Для этого перейдем в IP - Routes и добавим маршрут к первому провайдеру: Dst. Address - оставляем по умолчанию - 0.0.0.0/0, Gateway - указываем шлюз первого провайдера, в нашем случае 192.168.3.1, включаем механизм проверки доступности шлюза - Check Gateway - ping, и устанавливаем административную дистанцию маршрута - Distance - 1.
Эти же действия в терминале:
Аналогичным образом добавляем маршрут ко второму провайдеру, только указываем административную дистанцию Distance - 2. В данном случае абсолютные цифры не так важны, при наличии нескольких маршрутов к одному адресу назначения работать будет тот, у которого административная дистанция меньше.
После этого у вас появится интернет и будет активен маршрут через первого провайдера:
Теперь имитируем аварию, в нашем случае мы просто отключим патч-корд от интерфейса ether1, через небольшое время роутер обнаружит недоступность шлюза и сделает маршрут не активным, после чего автоматически заработает маршрут через второго провайдера и трафик пойдет туда.
После восстановления доступности шлюза провайдера обратное переключение произойдет автоматически.
Резервирование при помощи рекурсивной маршрутизации
Предыдущий способ имеет один серьезный недостаток, он проверяет доступность шлюза провайдера, но не проверяет наличие интернета за этим шлюзом, и вы можете оказаться в ситуации, когда интернет отсутствует, но переключения на резервный канал не произошло. Чтобы избежать такой ситуации следует проверять доступность не шлюза провайдера, а внешних высокодоступных узлов.
Один из методов, позволяющих это сделать, называется рекурсивной маршрутизацией, мы подробно рассматривали ее в отдельной статье, поэтому здесь просто покажем последовательность настройки, не вдаваясь в подробности.
Прежде всего выберем два высокодоступных узла, в нашем случае это будут 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 через шлюз второго провайдера.
Тоже самое быстро в терминале:
Теперь добавим рекурсивные маршруты для каждого из провайдеров со следующими настройками: Dst. Address оставляем по умолчанию - 0.0.0.0/0, Gateway - 8.8.8.8 - высокодоступный узел для первого провайдера, Check Gateway - ping - указываем проверку доступности шлюза, Distance - 1. Для второго провайдера все тоже самое, но Gateway - 9.9.9.9 и Distance - 2.
В терминале воспользуйтесь командами:
Мы сейчас не будем вдаваться в подробности как это работает, для этого есть отдельная статья, но общий смысл заключается в том, что рекурсивные маршруты в итоге работают через реальные шлюзы провайдеров, но проверяют доступность не провайдерского шлюза, а высокодоступного узла за ним. Если связь пропала - маршрут деактивируется и начинает работать следующий, с большей дистанцией.
На рисунке ниже мы можем видеть, что активный маршрут переключился на резервный канал несмотря на то, что шлюз основного провайдера доступен:
При восстановлении работы первого провайдера обратное переключение произойдет автоматически.
Резервирование при помощи Netwatch
Прежде всего добавим маршруты к каждому из провайдеров с разными дистанциями, никаких проверок включать не надо, но обязательно следует добавить к каждому маршруту комментарий, в нашем случае это будут "ISP1" и "ISP2".
Затем выбираем высокодоступный хост и добавляем к нему маршрут через первого провайдера:
Затем переходим в Tools - Netwatch и добавляем там новый узел, на закладке Host указываем адрес выбранного высокодоступного узла, при необходимости меняем интервал опроса.
На закладе Up вводим следующий скрипт:
Затем на закладке Down:
Их смысл предельно прост, если узел через первого провайдера доступен, то включаем маршрут с меткой ISP1, а маршрут с меткой ISP2 выключаем, если недоступен - то делаем ровно наоборот.
В терминале все это можно быстро сделать при помощи "заклинания":
Для проверки блокируем доступ через первого провайдера и убеждаемся, что переключение происходит:
Обратное переключение произойдет автоматически после восстановления связи с высокодоступным узлом.
Комментариев нет:
Отправить комментарий