Friday, December 30, 2022

Настройка двух провайдеров на MikroTik, балансировка и автопереключение

 


Настройка нескольких провайдеров на MikroTik, балансировка и автопереключение

Инструкция по настройке 2-ух провайдеров на роутере MikroTik. В описании буду рассмотрены два распространённых типа работы двух провайдеров: резервирование и балансировка.

Резервирование(автопереключение) – при обрыве провайдера-1, весь интернет трафик переключается на провайдера-2;

Балансировка – тип настройки, когда две линии интернета работают одновременно. Распределение между провайдером-1 и провайдером-2 может быть в ручном или автоматическом режиме.

Настройка двух провайдеров в MikroTik, предварительная подготовка

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

В исходной настройке роутера MikroTik произведена базовая настройка и как минимум один интернет провайдер уже работает.

Начать нужно с того, что требуется физическое подключение 2-ого провайдера. Для этого нужно подготовить свободный порт и исключить его из Bridge(LAN).

Освободить порт для 2-ого провайдера

Настройка находится Bridge→Ports

Настройка 2 провайдеров в MikroTik, освободить порт

На данном примере, был удалён ether2 со списка портов, принадлежащих к Bridge-LAN.

Настроить 2-ого провайдера

Настройка находится IP→DHCP client

Настройка 2 провайдеров в MikroTik, DHCP  client

Add Default Route = no – статическая маршрутизация для 2-ого провайдера будет доставлена вручную.

Добавление 2-ого провайдера в список WAN

Настройка находится Interfaces→Interface List

Настройка 2 провайдеров в MikroTik, добавть провайдера в список WAN

Список WAN должен включать интерфейсы двух провайдеров для того, чтобы правило Masquerade в IP→Firewall→NAT работало сразу для двух провайдеров

Настроить masquerade для WireGuard клиента

Отключить добавление DNS серверов для провайдера-1

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

Настройка находится IP→DHCP client

Настройка 2 провайдеров в MikroTik, отключить DNS для dhcp client

Определить общедоступные DNS сервера

Настройка находится IP→DNS

Настройка 2 провайдеров в MikroTik, без динамических DNS

Отсутствие записей DNS серверов в разделе Dynamic Servers указывает на то, что роутер MikroTik не использует автоматические DNS сервера, которые назначаются в автоматическом режиме.

В Servers стоит указать общедоступные DNS сервера типа Cloudflare DNS и удалить любые другие DNS сервера.

Отключить автоматическое добавление маршрутов

Т.к. все маршруты будут добавлены в ручном режиме, следует отключить все динамические маршруты для основного провайдера. Такие маршруты помечены буквой D(Dynamic) в таблице маршрутизации:

Настройка находится IP→Routes

Настройка 2 провайдеров в MikroTik, пример диначеского маршрута

Настройка находится IP→DHCP client

Настройка 2 провайдеров в MikroTik, отключить маршрут по умолчанию для dhcp client

Добавление маршрутов для двух провайдеров

Для переключение между провайдерами, будет использоваться скрипт, который будет находить маршрут с комментарием ISP-1 или ISP-2 и выключать или включать его в зависимости от статуса работы интернета. Ниже будет описан метод, как это можно сделать для типов подключения: статический IPdhcp клиент, PPPoE подключение. Этим методом нужно воспользоваться для назначения комментария двух провайдеров.

Кроме обозначенных комментариев нужно определить distance = 2.

Настройка находится IP→Routes

Настройка 2 провайдеров в MikroTik, добавить комметарий для static IP

В случае с DHCP client значение Gateway можно взять с раздела Status самого DCHP клиента

Настройка находится IP→DCHP Client

Настройка 2 провайдеров в MikroTik, скопировать gateway для dchp client

Mangle маркировка ответов для двух провайдеров

Правила маркировки маршрутов нужно определять только для белых(постоянных) IP адресов! Этот набор правил будет гарантировать то, что если пришёл input запрос на порт второго(или первого) провайдера, через этот же порт будет отправлен ответ. При отсутствии этих правил, доступ к роутеру по внешним IP может сопровождаться непредсказуемой работой.

Маркировка будет состоять из двух каскадных правил: маркировки соединения и маркировки маршрута

Настройка находится IP→Firewall→Mangle

Настройка 2 провайдеров в MikroTik, маркировка входящего соединения

Настройка 2 провайдеров в MikroTik, маркировка входящего соединения ISP-1

Настройка 2 провайдеров в MikroTik, маркировка исходящего маршрута

Настройка 2 провайдеров в MikroTik, маркировка исходящего маршрута ISP-1

/ip firewall mangle
add action=mark-connection chain=input in-interface=pppoe-out1 \
new-connection-mark=From-ISP-1
add action=mark-routing chain=output connection-mark=From-ISP-1 \
new-routing-mark=To-ISP-1
add action=mark-connection chain=input in-interface=ether2 \
new-connection-mark=From-ISP-2
add action=mark-routing chain=output connection-mark=From-ISP-2 \
new-routing-mark=To-ISP-2

Статическая маршрутизация для маркированных маршрутов

Кроме стандартных правил маршрутизации, нужно добавить маршруты для промаркированных ответов с раздела Mangle.

Настройка находится IP→Routes

Настройка 2 провайдеров в MikroTik, добавить статический маршрут для Mangle ISP-1

Настройка 2 провайдеров в MikroTik, добавить статический маршрут для Mangle ISP-2

И все текущие правила статической маршрутизации будут иметь вид:

Настройка 2 провайдеров в MikroTik, общий вид таблицы маршрутизации

/ip route
add distance=1 gateway=pppoe-out1 routing-mark=To-ISP-1
add distance=1 gateway=109.87.159.126 routing-mark=To-ISP-2
add comment=ISP-1 distance=1 gateway=pppoe-out1
add comment=ISP-2 distance=2 gateway=109.87.159.126

Настройка двух провайдеров MikroTik, режим резервирования(автопереключение)

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

Резервирование(автопереключение) это самый распространённый метод работы двух и более интернет провайдеров на роутере MikroTik.


Описание переключение на резервную линию условно такое: роутер MikroTik будет отправлять ICMP(ping) запросы на 8.8.8.8(Google DNS) и в случае отсутствия ответа или большой задержки, интернет будет переключаться с основной(провайдер-1) линии на резервную(провайдер-2).

Добавить статический маршрут для Google DNS

Настройка находится IP→Routes

Настройка 2 провайдеров в MikroTik, добавить статический маршрут для Google DNS

/ip route
add comment=Netwatch distance=1 dst-address=8.8.8.8/32 gateway=pppoe-out1

Запретить ICMP запросы через провайдера-2

Настройка находится IP→Firewall

Настройка 2 провайдеров в MikroTik, запретить ICMP запросы через провайдера-2

/ip firewall filter
add action=drop chain=output comment=Netwatch dst-address=8.8.8.8 \
out-interface=ether2 protocol=icmp

Этим правилом будет гарантирована диагностика статуса интернет канала только через провайдера-1. При попытке отправить аналогичный запрос через провайдера-2, Firewall роутера MikroTik будет это блокировать.

Добавить правило Netwatch для переключения

Настройка находится Tools→Netwatch

Настройка 2 провайдеров в MikroTik, добавить правило Netwatch

Настройка 2 провайдеров в MikroTik, скрипт при статусе интернета UP

Настройка 2 провайдеров в MikroTik, скрипт при статусе интернета DOWN

/tool netwatch
add down-script="/ip route disable [find comment=\"ISP-1\"]\r\
\n/ip route enable [find comment=\"ISP-2\"]\r\
\n:foreach i in=[/ip firewall connection find protocol~\"tcp\"] do={ /ip f\
irewall connection remove \$i }\r\
\n:foreach i in=[/ip firewall connection find protocol~\"udp\"] do={ /ip f\
irewall connection remove \$i }\r\
\nlog warning (\"ISP-1 IS DOWN\")" host=8.8.8.8 up-script="/ip route disab\
le [find comment=\"ISP-2\"]\r\
\n/ip route enable [find comment=\"ISP-1\"]\r\
\n:foreach i in=[/ip firewall connection find protocol~\"tcp\"] do={ /ip f\
irewall connection remove \$i }\r\
\n:foreach i in=[/ip firewall connection find protocol~\"udp\"] do={ /ip f\
irewall connection remove \$i }\r\
\nlog warning (\"ISP-1 IS UP\")"
  • Host – узел, на который будут отправляться ICMP(ping) запросы;
  • Interval – время, в течении которого будет производиться диагностика для смены статуса;
  • Timeout – задержка пакета, которая будет восприниматься как отсутствие связи;
  • Status – текущий статус узла;
  • Закладка Up – скрипт, который будет выполнен, если провайдер-1 восстановит связь, после её обрыва;
  • Закладка Down – скрипт, который будет выполнен, если связь с провайдером-1 будет прервана.

Представленными скриптами с помощью утилиты Netwatch будет происходить переключение между провайдерами. Все соединения, которые были установлены через провайлера-1 будут удалены. Это позволит гарантированно переключиться на провайдера-2.

Настройка 2 провайдеров в MikroTik, режим балансировки(одновременная работа)

Существует два метода распределения нагрузки между 2-мя провайдерами в MikroTik:

Ручная балансировка. Все узлы делятся в ручном режиме на 2-ве условные группы и каждая из групп направляется к выделенному ей провайдеру;

Автоматическая балансировка. Узлы роутера MikroTik будут поделены на группы с помощью внутренних инструментов RouterOS.

Настройка нескольких провайдеров на MikroTik, схема сети

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

Когда работают оба провайдеры, нагрузка распределяется согласно ручному распределению в Address list.

ISP-1=Down & ISP-2=Up  соединения To-ISP-1 очищаются и начинают работать через ISP-2. При этом соединения To-ISP-2 остаются не тронутыми. При восстановлении связи с ISP-1, соединения To-ISP-1 также очищаются и трафик вместо ISP-2 начинает проходить через ISP-1.

ISP-1=Up & ISP-2=Down → соединения To-ISP-2 очищаются и начинают работать через ISP-1. При этом соединения To-ISP-1 остаются не тронутыми. При восстановлении связи с ISP-2, соединения To-ISP-2 также очищаются и трафик вместо ISP-1 начинает проходить через ISP-2.

Ручная настройка балансировки 2 провайдеров в MikroTik

Как видно из названия, условную подсеть роутера MikroTik будет поделено на две группы: To-ISP-1 и To-ISP-2.

  • pppoe-out1 – это провайдер-1;
  • ether2 – это провайдер-2.

Настройка находится IP→Firewall→Address List

Настройка 2 провайдеров в MikroTik, разбиение узлов на группы для балансировки

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

Mangle маркировка соединений для балансировки 2 провайдеров

Настройка находится IP→Firewall→Mangle

Настройка 2 провайдеров в MikroTik, prerouting mark connection

Настройка 2 провайдеров в MikroTik, address list для маркировки

Настройка 2 провайдеров в MikroTik, исключить локальный трафик

Настройка 2 провайдеров в MikroTik, маркировка соединений

Mangle маркировка маршрута для балансировки двух провайдеров

Настройка находится IP→Firewall→Mangle

Настройка 2 провайдеров в MikroTik, prerouting для mark connection

Настройка 2 провайдеров в MikroTik, маркировка маршрута для address list

Настройка 2 провайдеров в MikroTik, маркировка маршрута

Аналогичные действия по маркировке соединений и маршрута нужно выполнить для Address List = To-ISP-2.

Общий вид раздела Mangle

Настройка 2 провайдеров в MikroTik, общий вид Mangle

/ip firewall address-list
add address=192.168.2.2-192.168.2.125 list=To-ISP-1
add address=192.168.2.126-192.168.2.254 list=To-ISP-2

/ip firewall mangle
add action=mark-connection chain=prerouting disabled=no dst-address-type=\
!local new-connection-mark=To-ISP-1-Connection src-address-list=To-ISP-1
add action=mark-routing chain=prerouting connection-mark=To-ISP-1-Connection \
disabled=no new-routing-mark=To-ISP-1 src-address-list=To-ISP-1
add action=mark-connection chain=prerouting disabled=no dst-address-type=\
!local new-connection-mark=To-ISP-2-Connection src-address-list=To-ISP-2
add action=mark-routing chain=prerouting connection-mark=To-ISP-2-Connection \
disabled=no new-routing-mark=To-ISP-2 src-address-list=To-ISP-2

Для каждой группы узлов To-ISP-1 и To-ISP-2 будет создано по два маршрута, чтобы обеспечить плавное переключение согласно первоначальным условиям по балансировке 2 провайдеров.

Общий вид таблицы маршрутизации при балансировке 2 провайдеров

Настройка находится IP→Route

Настройка 2 провайдеров в MikroTik, общий вид таблицы маршрутизациия при балансировке

/ip route
add comment=Group-1-1 distance=1 gateway=pppoe-out1 routing-mark=To-ISP-1
add comment=Group-2-1 disabled=yes distance=2 gateway=109.87.159.126 \
routing-mark=To-ISP-1
add comment=Group-2-2 distance=1 gateway=109.87.159.126 routing-mark=To-ISP-2
add comment=Group-1-2 disabled=yes distance=2 gateway=pppoe-out1 \
routing-mark=To-ISP-2
add comment=Netwatch-2 distance=1 dst-address=8.8.4.4/32 gateway=109.87.159.126
add comment=Netwatch-1 distance=1 dst-address=8.8.8.8/32 gateway=\
pppoe-out1

Контроль ICMP запросов через нужный интерфейс

Эти правила обеспечат контроль статуса интернет соединения для каждого из провайдера. Диагностика статуса интернета будет осуществляться только через те интерфейсы, которые обозначены в таблице маршрутизации с комментариями Netwatch-1 и Netwatch-2.

Настройка находится IP→Firewall→Filter Rules

Настройка 2 провайдеров в MikroTik, контроль icmp запросов для балансировке

/ip firewall filter
add action=drop chain=output comment=Netwatch-1 dst-address=8.8.8.8 \
out-interface=ether2 protocol=icmp
add action=drop chain=output comment=Netwatch-2 dst-address=8.8.4.4 \
out-interface=!ether2 protocol=icmp

Настройка Netwatch для переключения провайдеров

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

Настройка находится Tools→Netwatch

Настройка 2 провайдеров в MikroTik, netwatch для балансировки

/tool netwatch
add down-script="/ip route disable [find comment=\"ISP-2\"]\r\
\n/ip route disable [find comment=\"Group-2-2\"]\r\
\n/ip route enable [find comment=\"Group-1-2\"]\r\
\nlog warning (\"ISP-2 IS DOWN\")\r\
\n:foreach i in=[/ip firewall connection find connection-mark~\"To-ISP-2-C\
onnection\"] do={ /ip firewall connection remove \$i }" host=8.8.4.4 \
up-script="/ip route enable [find comment=\"ISP-2\"]\r\
\n/ip route enable [find comment=\"Group-2-2\"]\r\
\n/ip route disable [find comment=\"Group-1-2\"]\r\
\nlog warning (\"ISP-2 IS UP\")\r\
\n:foreach i in=[/ip firewall connection find connection-mark~\"To-ISP-2-C\
onnection\"] do={ /ip firewall connection remove \$i }"
add down-script="/ip route disable [find comment=\"ISP-1\"]\r\
\n/ip route disable [find comment=\"Group-1-1\"]\r\
\n/ip route enable [find comment=\"Group-2-1\"]\r\
\nlog warning (\"ISP-1 IS DOWN\")\r\
\n:foreach i in=[/ip firewall connection find connection-mark~\"To-ISP-1-C\
onnection\"] do={ /ip firewall connection remove \$i }" host=8.8.8.8 \
up-script="/ip route enable [find comment=\"ISP-1\"]\r\
\n/ip route enable [find comment=\"Group-1-1\"]\r\
\n/ip route disable [find comment=\"Group-2-1\"]\r\
\nlog warning (\"ISP-1 IS UP\")\r\
\n:foreach i in=[/ip firewall connection find connection-mark~\"To-ISP-1-C\
onnection\"] do={ /ip firewall connection remove \$i }"

Балансировка и резервирование в MikroTik используя настройки NTH раздела Mangle

Можно также применить схему, в которой каждое соединение будет промаркировано по принципу:

четный-пакет = провайдер-1

нечетный-пакет = провайдер-2

Настройка находится IP→Firewall→Mangle

/ip firewall mangle
add action=mark-connection chain=prerouting disabled=yes dst-address-type=\
!local new-connection-mark=To-ISP-1-Connection src-address-list=To-ISP-1 nth=2,1
add action=mark-routing chain=prerouting connection-mark=To-ISP-1-Connection \
disabled=yes new-routing-mark=To-ISP-1 src-address-list=To-ISP-1
add action=mark-connection chain=prerouting disabled=yes dst-address-type=\
!local new-connection-mark=To-ISP-2-Connection src-address-list=To-ISP-2 nth=2,2
add action=mark-routing chain=prerouting connection-mark=To-ISP-2-Connection \
disabled=yes new-routing-mark=To-ISP-2 src-address-list=To-ISP-2

Балансировка между двумя провайдерами будет производиться в соотношении 50:50, это определяется параметрами nth=2,1 и nth=2,2.

Все остальные действия по настройке маршрутизации, Firewall и Netwatch будут аналогичны описанных в разделе “Ручная балансировка 2 провайдеров в MikroTik “.

Настройка балансировки двух провайдеров Per Connection Classifier (PCC) раздела Mangle

Per Connection Classifier (PCC) позволят разделить трафик на равные потоки с возможностью держать пакеты с определенным набором параметров в одном потоке (определяется в наборе параметров из src-addresssrc-portdst-addressdst-port)

Настройка находится IP→Firewall→Mangle

/ip firewall mangle
add action=mark-connection chain=prerouting dst-address=\
!192.168.2.0/24 new-connection-mark=To-ISP-1-Connection \
per-connection-classifier=both-addresses-and-ports:2/0 src-address=\
192.168.2.0/24
add action=mark-routing chain=prerouting connection-mark=To-ISP-1-Connection \
new-routing-mark=To-ISP-1 src-address=192.168.2.0/24
add action=mark-connection chain=prerouting dst-address=\
!192.168.2.0/24 new-connection-mark=To-ISP-2-Connection \
per-connection-classifier=both-addresses-and-ports:2/1 src-address=\
192.168.2.0/24
add action=mark-routing chain=prerouting connection-mark=To-ISP-2-Connection \
new-routing-mark=To-ISP-2 src-address=192.168.2.0/24

Все остальные действия по настройке маршрутизации, Firewall и Netwatch будут аналогичны описанных в разделе “Ручная балансировка 2 провайдеров в MikroTik “.

Провайдер меняет шлюз в DHCP клиенте, не работает переключение или балансировка

DHCP клиент это один из самых распространённых типов настроек WAN интерфейса. Все настройки проходят в автоматическом режиме и не требуют ни каких дополнительных усилий. Однако в варианте с балансировкой двух провайдеров, используемая настройка требует явного определения шлюза(Gateway) в таблице маршрутизации. А если IP адрес серый(динамический), то правила с балансировкой перестанут работать при его изменении.

Для того, чтобы в правиле статической маршрутизации указывался текущий шлюз(Gateway) провайдера, в свойствах DHCP клиента следует укатать скрипт

Настройка находится IP→DHCP client

Провайдер меняет шлюз в DHCP клиенте, не работает переключение или балансировка

{
:local rmark "ISP-2"
:local count [/ip route print count-only where comment="ISP-2"]
:if ($bound=1) do={
:if ($count = 0) do={
/ip route add gateway=$"gateway-address" comment="ISP-2" distance=2
} else={
:if ($count = 1) do={
:local test [/ip route find where comment="ISP-2"]
:if ([/ip route get $test gateway] != $"gateway-address") do={
/ip route set $test gateway=$"gateway-address"
}
} else={
:error "Multiple routes found"
}
}
} else={
/ip route remove [find comment="ISP-2"]
}
}

И аналогичный пример, только для первого провайдера с добавлением маршрута к 8.8.4.4.

{
:local rmark "ISP-1"
:local count [/ip route print count-only where comment="ISP-1"]
:if ($bound=1) do={
:if ($count = 0) do={
/ip route add gateway=$"gateway-address" comment="ISP-1" distance=1
/ip route add gateway=$"gateway-address" comment="Netwatch" distance=1 dst-address=8.8.4.4
} else={
:if ($count = 1) do={
:local test [/ip route find where comment="ISP-1"]
:if ([/ip route get $test gateway] != $"gateway-address") do={
/ip route set $test gateway=$"gateway-address"
}
} else={
:error "Multiple routes found"
}
}
} else={
/ip route remove [find comment="ISP-1"]
/ip route remove [find comment="Netwatch"]
}
}

Скрипт может быть дополнен добавлениями(и удалениями) маршрутов для Routing-mark и Netwatch.

Одновременный проброс с двух провайдеров в MikroTik настройка Mangle

Входящая задача: сделать проброс портов таким образом, чтобы сервер отвечал с того провайдера, с которого пришёл запрос. На практике это может быть Web сервер(443\https), у которого объявлены две DNS записи с двумя внешними IP роутера MikroTik.

Настройка находится IP→Firewall→Mangle

/ip firewall mangle 
add chain=forward action=mark-connection new-connection-mark=From-ISP-1 in-interface=pppoe-out1
add chain=prerouting action=mark-routing new-routing-mark=To-ISP-1 passthrough=no connection-mark=From-ISP-1 in-interface=bridge
add chain=forward action=mark-connection new-connection-mark=From-ISP-2 in-interface=ether2
add chain=prerouting action=mark-routing new-routing-mark=To-ISP-2 passthrough=no connection-mark=From-ISP-2 in-interface=bridge

где

  • pppoe-out1 – это провайдер-1;
  • ether2 – это провайдер-2;
  • bridge – локальный bridge интерфейс.

Настройка OpenVPN сервера в MikroTik, защищенный удаленный доступ

Настройка OpenVPN сервера в MikroTik, защищенный удаленный доступ


Настройка OpenVPN сервера в MikroTik, защищенный удаленный доступ

В данной статье будет рассмотрена очередная разновидность VPN сервера – OpenVPN. Его исключительной особенностью является использование сертификатов SSL для шифрования VPN туннеля. Скорость соединения при этом остаётся на максимуме, а такой метод шифрования позволяет занимать лидирующие места среди надежных и защищенных VPN серверов современности.

Настройка OpenVPN в MikroTik

С выходом версии RouterOS 7 появилась долгожданная поддержка UDP протокола, которая кроме вопроса совместимости VPN клиентов повышала и быстродействие. Это предоставляет возможность корректно подключить клиентов на ОС:

  • Linux;
  • Windows;
  • Android;
  • IOS.

В качестве RouterOS будет использоваться актуальная версия 7.6.

Создание корневого сертификата(CA)

Настройка находится System→Certificates

Настройка OpenVPN MikroTik, создание корневого сертификатаНастройка OpenVPN MikroTik, создание корневого сертификата key usageНастройка OpenVPN MikroTik, подпись корневого сертификата CA

Создание сертификата OpenVPN сервера

Настройка OpenVPN MikroTik, создание сертификата сервера

Настройка OpenVPN MikroTik, создание сертификата сервера key usage

Настройка OpenVPN MikroTik, подпись сертификата сервера

Создание сертификата OpenVPN клиента

Настройка OpenVPN MikroTik, cоздание сертификата VPN клиента

Настройка OpenVPN MikroTik, cоздание сертификата VPN клиента key usage

Настройка OpenVPN MikroTik, подпись сертификата VPN клиента

Общий список сертификатов для OpenVPN

Настройка OpenVPN MikroTik, список сертификатов

Создание IP пула для OpenVPN клиентов

Настройка находится IP→Pool

Настройка OpenVPN MikroTik, создание IP пула для OpenVPN клиентов

Создание OpenVPN профиля

Настройка находится PPP→Profiles

Настройка OpenVPN MikroTik, создание OpenVPN профиля

Добавление учетной записи для OpenVPN пользователя

Настройка находится PPP→Secrets

Настройка OpenVPN MikroTik, добавление учетной записи для OpenVPN пользователя

Параметры OpenVPN сервера

Настройка находится PPP→Interface→OVPN Server

Настройка OpenVPN MikroTik, параметры сервера

Разрешение в Firewall для OpenVPN подключений

Настройка находится IP→Firewall→Filter Rules

Настройка OpenVPN MikroTik, правила Firewall

/ip pool
add name=Ip-Pool-VPN ranges=192.168.254.100-192.168.254.254

/ppp profile
add local-address=192.168.254.1 name=VPN-Profile remote-address=Ip-Pool-VPN

/ppp secret
add name=OpenVPNUser1 profile=VPN-Profile service=ovpn

/interface ovpn-server server
set auth=sha1,md5,sha256 certificate=46.33.53.183 cipher=\
blowfish128,aes128,aes256 default-profile=VPN-Profile enabled=yes \
protocol=udp

/ip firewall filter
add action=accept chain=input dst-port=1194 in-interface-list=WAN protocol=\
udp

Выгрузка сертификата для OpenVPN клиента

/certificate export-certificate Nastroika-MikroTik.ukr-CA export-passphrase=""
/certificate export-certificate OpenVPNUser1 export-passphrase=10203040

Сгенерированные файлы сертификатов будут помещены во внутреннюю память устройства, откуда их нужно скопировать.
Настройка OpenVPN MikroTik, выгрузка сертификатов

Создание config файла для OpenVPN клиента

Конфигурация для OpenVPN клиента будет генерироваться вручную. Для этого нужно создать пустой файл Open-VPN.ovpn и заполнить его данными на основании шаблона:

client
dev tun
remote 192.192.192.192 1194 udp
nobind
persist-key
persist-tun
remote-cert-tls server
cipher AES-128-CBC
auth SHA1
auth-user-pass
redirect-gateway def1
verb 3
<ca>

</ca>
<cert>

</cert>
<key>

</key>

Далее заполненный файл Open-VPN.ovpn нужно скопировать на устройство, которое будет использовать OpenVPN клиент.

Подключение к OpenVPN MikroTik в Windows

Со стороны Windows клиента нужно установить приложение с официального сайта(ссылка) и скопировать файл Open-VPN.ovpn в папку OpenVPN\config каталога пользователя или  «Programm Files».

Настройка OpenVPN MikroTik, подлючение Windows

При подключении нужно ввести ключ, который был указан при экспорте сертификата пользователя(10203040), после чего следует успешное подключение к OpenVPN серверу, работающему на MikroTik.

Настройка OpenVPN MikroTik, статус подлючения Windows

Android OpenVPN подключение к MikroTik

Настройка OpenVPN MikroTik, подлючение Android

Настройка OpenVPN MikroTik, статус подлючения Android

Friday, March 25, 2022

How To Install a Let’s Encrypt SSL Certbot for Apache

 Certbot is part of EFF’s effort to encrypt the entire Internet. Secure communication over the Web relies on HTTPS, which requires the use of a digital certificate that lets browsers verify the identity of web servers (e.g., is that really google.com?). Web servers obtain their certificates from trusted third parties called certificate authorities (CAs). Certbot is an easy-to-use client that fetches a certificate from Let’s Encrypt—an open certificate authority launched by the EFF, Mozilla, and others—and deploys it to a web server.

Anyone who has gone through the trouble of setting up a secure website knows what a hassle getting and maintaining a certificate is. Certbot and Let’s Encrypt can automate away the pain and let you turn on and manage HTTPS with simple commands. Using Certbot and Let’s Encrypt is free, so there’s no need to arrange payment.

Installation of CertBot:

sudo apt update && sudo apt install certbot python-certbot-apache

Now lets get our new CertBot certificate

sudo certbot --apache

You will be asked some questions like your email, do agree to the Terms of Service and so on. Please fill them for your needs.

Enter email address (used for urgent renewal and security notices) (Enter 'c' to cancel): Enter an email address where you can be contacted in case of urgent renewal and security notices. Please read the Terms of Service at https://letsencrypt.org/documents/LE-SA-v1.2-November-15-2017.pdf. You must agree in order to register with the ACME server at https://acme-v02.api.letsencrypt.org/directory ------------------------------------------------------------------------------- (A)gree/(C)ancel: Press a and ENTER to agree to the Terms of Service. Would you be willing to share your email address with the Electronic Frontier Foundation, a founding partner of the Let's Encrypt project and the non-profit organization that develops Certbot? We'd like to send you email about EFF and our work to encrypt the web, protect its users and defend digital rights. ------------------------------------------------------------------------------- (Y)es/(N)o: Press n and ENTER to not share your email address with EFF. Which names would you like to activate HTTPS for? - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 1: example.com 2: www.example.com - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Select the appropriate numbers separated by commas and/or spaces, or leave input blank to select all options shown (Enter 'c' to cancel):
Code language: PHP (php)

Now lets test our certificate

The site ssllabs.com/ssltest/ is perfect for testing

Auto Renewal

As Let’s Encrypt certs expire after 90 days, they need to be checked for renewal periodically. Certbot will automatically run twice a day and renew any certificate that is within thirty days of expiration.

To test that this renewal process is working correctly, you can run:

sudo certbot renew --dry-run

CONFIGURING AUTO RENEWING LETSENCRYPT SSL CERTS WITH APACHE AND CERTBOT

 

INSTALLING THE SOFTWARE

As with the Nginx setup, you'll first want to ensure you have a clean environment before installing and configuring the Certbot software. If you've previously setup Certbot or had issues configuring it this step will wipe the slate clean to set you up for the instructions below:

sudo apt-get remove letsencrypt
sudo apt-get remove certbot

This software removal will leave your certificate configuration in place so don't worry if you already had a version installed but couldn't get renewal to work etc. The new version of Certbot will pick up your old certificates no problem.

Next, add the LetsEncrypt software repo and update your system to use it:

sudo apt-get install software-properties-common
sudo apt-get update

Now you can go ahead and install the latest version of certbot:

sudo apt-get install certbot

The following step is the one which differs between setting up on Apache and Nginx. Here you will add the Apache plugin for Certbot, which is used to automate the renewals:

sudo apt-get install python-certbot-apache

Now the software is installed you can begin configuring your sites to use SSL allowing them to serve content over HTTPS. The newly installed Certbot command will allow you to both generate and renew certificates at any time.

GENERATING SSL CERTIFICATES FOR APACHE

Certificates are generated based on the Apache vHosts you have setup on your server. As always we suggest you backup your existing vhosts before starting, as Certbot may modify the contents based on the options provided. At their most basic you will want to have the following added to each vHost:

<
VirtualHost
*:443>

ServerName examplesite.com; DocumentRoot /var/www/examplesite.com </VirtualHost>

You can now start the Certbot Apache wizard to generate the certificates.

sudo certbot --apache

You should now be presented with a list of sites detected by the Apache vhost entries:

Certbot with Apache plugin generate cert site list

Enter the number of each site you'd like to be included in the certificate you are creating, comma separated.

You will now be given the option to make the site entirely HTTPS secure by forcing a redirect to the secure URL:

Certbot with Apache plugin force SSL

Once you make your selection the vhost will be updated accordingly to use the new certificate and to redirect to the HTTPS URL if desired. You can now test this immediately by loading up your site on the https:// domain.

For more information about LetsEncrypt with Apache checkout the official documentation on the LetsEncrypt website: https://letsencrypt.readthedocs.io/en/latest/using.html#apache

RENEWING SSL CERTIFICATES FOR APACHE

To renew certificates at any time, you may run the following command:

sudo certbot renew --apache

This will take you through the manual steps of renewal. LetsEncrypt will only allow renewal when the certificate is within 30 days of expiry. Once renewed the new certificate will be valid for 90 days from the date of renewal.

Renewing the certificate in this manner will not require you to stop and start Apache so that the config is reloaded on a successful renewal allowing visitors to the site to automatically be served the new certificate.

AUTOMATING THE SSL CERTIFICATE RENEWAL FOR APACHE

Finally, the most important step of this process, is to allow the certificate to auto renew, so that you as a server admin or not don't have to log in to the server to renew all your certs.

The renewal is run by cron. You should find a cronfile that was automatically added on installation to /etc/cron.d/certbot. If the file is not there you can create it.

Update the content of the cron file as follows:

SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

0 */12 * * * root certbot -q renew --apache

This will run the renew process twice daily, exactly as above when you ran it manually. The -q flag is provided to prevent any output being logged.

So there you have it, auto renewing LetsEncrypt certificates running on Apache.