среда, 22 марта 2023 г.

Mikrotik и несколько провайдеров. Резервирование каналов

 Данная статья предназначена для 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/0Gateway - указываем шлюз первого провайдера, в нашем случае 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После восстановления доступности шлюза провайдера обратное переключение произойдет автоматически.

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

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

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


Прежде всего выберем два высокодоступных узла, в нашем случае это будут 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/0Gateway - 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Обратное переключение произойдет автоматически после восстановления связи с высокодоступным узлом.

четверг, 16 февраля 2023 г.

Unable to install mongodb in ubuntu 22.04/22.10

sudo apt install -y mongodb-org

Reading package lists... Done
Building dependency tree... Done
Reading state information... Done
Some packages could not be installed. This may mean that you have
requested an impossible situation or if you are using the unstable
distribution that some required packages have not yet been created
or been moved out of Incoming.
The following information may help to resolve the situation:

The following packages have unmet dependencies:
 mongodb-org-mongos : Depends: libssl1.1 (>= 1.1.1) but it is not installable
 mongodb-org-server : Depends: libssl1.1 (>= 1.1.1) but it is not installable
 mongodb-org-shell : Depends: libssl1.1 (>= 1.1.1) but it is not installable
E: Unable to correct problems, you have held broken packages.
  • I tried installing libssl1.1 package using apt but I was unable to do so it throws following error.
E: Package 'libssl1.1' has no installation candidate
sudo wget http://archive.ubuntu.com/ubuntu/pool/main/o/openssl/libssl1.1_1.1.1f-1ubuntu2_amd64.deb
sudo dpkg -i libssl1.1_1.1.1f-1ubuntu2_amd64.deb

понедельник, 5 декабря 2022 г.

Mikrotik посмотреть на каком порту mac адрес

ip arp print - выведет таблицу соответствия IP и MAC адресов

interface bridge host print - выдаст сооответствие MAC-а и физ.порта

вторник, 11 октября 2022 г.

Установка LXQT 1.1 в Lubuntu

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

sudo add-apt-repository ppa:lubuntu-dev/backports-staging
LXQT 1.1 в Lubuntu 22.04 2

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

sudo apt update 
sudo apt dist-upgrade

среда, 28 сентября 2022 г.

Работа с COM-портами в Mac OS X

 Периодически возникает надобность подключиться к какому-либо оборудованию через последовательный порт. И ладно, если есть на маке сам порт, тогда можно открыть терминал, посмотреть список устройств с помощью ls /dev, увидеть устройство, называющееся что-то типа tty.tty0 и выполнить команду:


screen /dev/tty.tty0 9600 (за командой screen идёт путь до устройства и скорость на порту).

Если же на маке последовательный порт отсутствует, то на помощь приходят так называемые адаптеры USB-COM. Один из самых распространённых типов подобных адаптеров - Prolific PL2303 USB serial adapter. Адаптер можно найти практически в любом компьютерном магазине, драйвера на него под мак есть на страничке проекта http://osx-pl2303.sourceforge.net/.

После установки драйвера и подключения адаптера к маку так же смотрим с помощью ls /dev название устройства (что-то навроде PL2303-00001004), и подключаемся ранее указанным способом:

screen /dev/tty.PL2303-00001004 9600