среда, 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

четверг, 8 сентября 2022 г.

Проброс портов в NAT Mikrotik на примере RDP

 

Проброс порта mikrotik в графическом интерфейсе программы Winbox

Для начинающих пользователей mikrotik наиболее простой и понятной будет настройка проброса портов, выполняемая в графическом оконном интерфейсе Winbox. Ниже приведены скриншоты winbox и дано подробное описание всех параметров NAT, необходимых для настройки проброса порта в Mikrotik.

1. Путь к настройкам NAT в Mikrotik:

Чтобы открыть таблицу правил NAT в Mikrotik пройдите в меню путь IP > Firewall > вкладка NAT.

путь к настройкам nat в mikrotik winbox

2. Настройки вкладки General NAT:

На вкладке General указываются параметры, по которым роутер будет понимать какие сетевые пакеты необходимо обработать. В общем случае достаточно будет указать параметры: Chain, Protocol, Dst. port, In. Interface. Остальные параметры могут быть использованы для более точной настройки.

В данном примере необходимо открыть tcp-порт 3389 для протокола удаленного рабочего стола RDP на интерфейсе ether1-GW, подключенному к интернету:

  • Chain: dstnat
  • Protocol: 6(tcp)
  • Dst. Port: 3389
  • In. Interface: ether1 (интерфейс, подключенный к интернету)

Когда открываете порт в сеть интернет лучше изменять его стандартное значение (вместо 3389 указать например 9743), чтобы снизить риски атак на этот порт. То есть из сети интернет, подключение по rdp будет приходить на этот нестандартный порт, а затем перенаправляться на стандартный порт.

настройки general для проброса порта 3389 mikrotik

Пояснение к параметрам вкладки General, при создании правила NAT:

  • Chain: цепочка, определяет этап прохождения пакета; dstnat - входящий пакет, идущий в nat, srcnat - исходящий пакет, покидающий nat;
  • Src. Address: ip-адрес источника (source) пакета;
  • Dst. Address: ip-адрес назначения (destination) пакета;
  • Protocol: протокол, доступны для выбора протоколы различных уровней OSI - канальные (l2tp), сетевые (icmp, ospf), транспортные (tcp, udp), прикладные (rdp) и другие;
  • Src. Port: порт источника пакета, в настройке проброса портов используется редко т.к. порт источника как правило динамический и может иметь разные значения;
  • Dst. port: порт, на который адресован пакет источника;
  • Any port: означает, что указанный номер порта может быть как источником так и назначением;
  • In. Interface: интерфейс, на который должен прийти пакет от источника (интерфейс, к которому подключен интернет);
  • Out. Interface: интерфейс, на который ушел пакет.

3. Настройки вкладки Action NAT:

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

Для перенаправления сетевых пакетов указываем Action: dst-nat и указываем на какой локальный ip-адрес и порт будем перенаправлять сетевой трафик To Addresses и To Ports. В данном случае это адрес и порт удаленного рабочего стола.

  • Action: dst-nat
  • To Addresses: 192.168.0.20 (адрес локального хоста, на который перенаправляются пакеты)
  • To Port: 3389 (порт локального хоста, но который перенапряются пакеты)
настройки Action NAT для проброса порта 3389 mikrotik

Пояснение к параметрам вкладки Action, при создании правила NAT:

  • Action: действие, которое нужно выполнить с пакетом; dst-nat - означает, что пакет пришедший в NAT нужно направить на указанный ниже адрес и порт (проброс порта);
  • To address: адрес, на который будет направлен пакет из NAT (адрес хоста, чей порт пробрасывается);
  • To port: порт, на который будет направлен пакет из NAT (порт, который пробрасывается).

Проброс порта mikrotik в терминале

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

1. Переходим в NAT:

ip firewall nat

2. Добавляем правило:

add chain=dstnat protocol=tcp dst-port=3389 in-interface=ether1-GW action=d
st-nat to-addresses=192.168.0.20 to-ports=3389