Windows server openvpn server mikrotik

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

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

Доброго!

Каждому предприятию рано или поздно, внезапно, становится необходим удаленный доступ.
С необходимостью организовать удаленный доступ к своим сетям на предприятии сталкивается практический каждый АйТишник.
Меня, как и многих, эта потребность накрыла с грифом “вчера”. Проанализировав все «за» и «против», а также перелопатив тонны информации и поковырявшись немного в теории, я решил приступить к установке.

В целях безопасности, был выбрал OpenVPN в следующей реализации: на сервер с операционной системой Windows Server 2012 была установлена виртуальная машина, на ней также, Windows Server 2012, а на нем, в свою очередь, сервер OpenVPN, который выпускал и подписывал сертификаты.

Для удобства обзовем его «сервер сертификации». Далее, взял сертификат сервера, затолкнул его в Mikrotik, а на самом маршрутизаторе Mikrotik поднял OpenVPN с учетными записями, профилями. Для выпуска сертификата клиента также использовал сервер сертификации.

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

Данная связка поработала какое-то время и мне была выдана новая вводная: перенести сервер сертификации на Linux, при этом связь с Mikrotik сохранить — клиенты не должны пострадать.

Мои знания по Linux на тот момент заканчивались на Ubuntu 16.04LTS с графическим интерфейсом, которая использовалась как терминал для подключения по RDP к серверу Windows. То есть, sudo apt-get -f install -y, и ни сантиметра больше.

Изучив вопрос, какая OS из Linux семейства более устойчива и перспективна для моей организации, я остановился на CentOS 7 Minimal.

Для начала я решил немного покопаться в теории, понять как это вообще устроено и работает. Посмотрел видео уроки на канале www.youtube.com/channel/UCKdRgZWgy42YxoFcTJ30LTA (Вообще не реклама, просто они попались мне первыми). Девушка с приятным голосом ознакомила меня с основами работы в выбранной OS.

Для начала я запустил на своем компе Hyper-V, установил туда CentOS 7 Minimal, во время установки создал пользователя Admin и полностью закрыл ssh для root. Попрощавшись с красивым разноцветным экраном, погрузился в черно-белый мир терминала.

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

В скрипте я постарался автоматизировать установку минимально необходимых утилит для сервера, отключить Selinux, подключить репозиторий Epel, установить OpenVPN, и пр. Ниже сам скрипт, он простой, но его можно использовать. Разбирать его не буду, но если кому-то потребуется, пишите отвечу.

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

UPD: Внес некоторые коррективы в скрипт, сделав выводы из комментариев. Удалять свои ошибки не стал, а просто закомментил, чтобы не терялась нить комментариев. Добавленные строки отодвинул для видимости.

#!/bin/bash
cd /etc/sysconfig/
sudo sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' selinux
sudo setenforce 0
cd /home/Admin
sudo yum update -y
sudo yum install epel-release -y
sudo yum install mc -y
sudo yum install nano -y
sudo cp /usr/share/mc/syntax/sh.syntax /usr/share/mc/syntax/unknown.syntax
sudo yum install chrony -y
sudo systemctl start chronyd
sudo systemctl enable chronyd
sudo yum install net-tools -y
sudo yum install iftop -y
sudo yum install htop -y
sudo yum install lsof -y
sudo yum install dos2unix -y
sudo yum install wget -y
sudo yum install tcpdump -y
sudo yum install openvpn -y
wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.3/EasyRSA-3.0.3.tgz
sudo tar -xvzf EasyRSA-3.0.3.tgz
	#sudo chown -R Admin:Admin /var/log
	#sudo chmod 755 /var/log
sudo mkdir /var/log/openvpn
sudo mkdir /etc/openvpn/ccd	
sudo chown -R Admin:Admin /etc/openvpn/ccd
sudo chown -R Admin:Admin /var/log/openvpn
chmod 755 /etc/openvpn/ccd
chmod 755 /var/log/openvpn
echo >/var/log/openvpn/openvpn-status.log
echo >/var/log/openvpn/openvpn.log
#sudo chown -R Admin:Admin /etc/resolv.conf
	sudo chmod 777 /etc/resolv.conf
echo  nameserver 8.8.8.8 >>/etc/resolv.conf
	chmod 755 /etc/resolv.conf
cd /etc/openvpn/ 
sudo /home/Admin/EasyRSA-3.0.3/easyrsa init-pki
sudo chown -R Admin:Admin /etc/openvpn
chmod 755 /etc/openvpn
 echo  set_var EASYRSA_DN "org" >/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_REQ_COUNTRY "RU" >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_KEY_SIZE 4096 >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_REQ_PROVINCE "LIP" >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_REQ_CITY "Lipetsk" >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_REQ_ORG "Cool-Admin" >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_REQ_EMAIL "xxx.ru" >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_REQ_OU "Our_ORG" >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_REQ_CN "changeme" >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_CERT_EXPIRE 3650 >>/home/Admin/EasyRSA-3.0.3/test
 echo	set_var EASYRSA_DH_KEY_SIZE=2048 >>/home/Admin/EasyRSA-3.0.3/test
sudo /home/Admin/EasyRSA-3.0.3/easyrsa build-ca nopass
sudo /home/Admin/EasyRSA-3.0.3/easyrsa build-server-full Serv nopass
sudo /home/Admin/EasyRSA-3.0.3/easyrsa build-client-full Client1 nopass
sudo /home/Admin/EasyRSA-3.0.3/easyrsa --vars=vars gen-dh
sudo /home/Admin/EasyRSA-3.0.3/easyrsa --vars=vars gen-crl
 mkdir keys
sudo chown -R Admin:Admin /etc/openvpn/keys
chmod 755 /etc/openvpn/keys
sudo cp /etc/openvpn/pki/ca.crt /etc/openvpn/keys
sudo cp /etc/openvpn/pki/dh.pem /etc/openvpn/keys
sudo cp /etc/openvpn/pki/crl.pem /etc/openvpn/keys
sudo cp /etc/openvpn/pki/issued/Serv.crt /etc/openvpn/keys
sudo cp /etc/openvpn/pki/private/Serv.key /etc/openvpn/keys
echo port 443 						>/etc/openvpn/server.conf
echo proto udp					>>/etc/openvpn/server.conf
echo dev tun						>>/etc/openvpn/server.conf
echo ca /etc/openvpn/keys/ca.crt			>>/etc/openvpn/server.conf		
echo cert /etc/openvpn/keys/Serv.crt			>>/etc/openvpn/server.conf
echo key /etc/openvpn/keys/Serv.key		>>/etc/openvpn/server.conf
echo dh /etc/openvpn/keys/dh.pem			>>/etc/openvpn/server.conf
echo crl-verify /etc/openvpn/keys/crl.pem		>>/etc/openvpn/server.conf
echo client-config-dir /etc/openvpn/ccd		>>/etc/openvpn/server.conf
echo topology subnet					>>/etc/openvpn/server.conf
echo server 172.21.0.0 255.255.255.0		>>/etc/openvpn/server.conf
echo route 172.21.0.0 255.255.255.0			>>/etc/openvpn/server.conf
echo push \"dhcp-option DNS 8.8.8.8\"		>>/etc/openvpn/server.conf
echo push \"dhcp-option DNS 8.8.4.4\"		>>/etc/openvpn/server.conf
echo keepalive 10 120				>>/etc/openvpn/server.conf
echo persist-key					>>/etc/openvpn/server.conf
echo persist-tun					>>/etc/openvpn/server.conf
echo status /var/log/openvpn/openvpn-status.log	>>/etc/openvpn/server.conf
echo log-append /var/log/openvpn/openvpn.log	>>/etc/openvpn/server.conf
echo verb 2						>>/etc/openvpn/server.conf
echo mute 20						>>/etc/openvpn/server.conf
echo daemon						>>/etc/openvpn/server.conf
echo mode server					>>/etc/openvpn/server.conf
echo user nobody					>>/etc/openvpn/server.conf
echo group nobody					>>/etc/openvpn/server.conf
#sudo chown -R Admin:Admin /etc/sysctl.conf
	chmod 777 /etc/sysctl.conf
echo net.ipv4.ip_forward=1 >>/etc/sysctl.conf
	chmod 755 /etc/sysctl.conf
sudo sysctl -p /etc/sysctl.conf
sudo systemctl enable openvpn@server
sudo systemctl start openvpn@server
sudo systemctl status openvpn@server

Установка OpenVPN прошла не совсем успешно.

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

Когда кнопка OpenVPN стала зеленой, я очень обрадовался, но как оказалось, это было только начало. По простоте душевной, я рассчитывал подменить корневые сертификаты и файл crl.pem, надеясь, что все заработает. В итоге, мне понадобилось перенести с сервера на Windows следующие файлы:

Serv.crt — Сертификат сервера
Serv.key — Ключ сервера
Ca.crt — Корневой сертификат
Ca.key — Корневой ключ
Crl.pem — Файл отозванных сертификатов
Dh.pem — ключ Диффи-Хеллмана
Index.txt — Файл с информацией об актуальных сертификатах
Serial — он тоже отвечает за актуальность сертификатов

Также потребовалась папка certs_by_serial, файл vars, и все клиентские ключи и сертификаты.
На Mikrotik сертификаты оставались на месте, поэтому все заработало.

Проблемы появились, когда я попытался отозвать сертификат, это не работало от слова совсем — файл index.txt нужно было перевести в формат unix, а я этого сразу не сделал. Воспользовался утилитой dos2unix.

Теперь сертификаты отзывались, но продолжали работать без каких-либо проблем, потому что Mikrotik не знал о том, что они отозваны и ему нужно было как-то об этом сообщить.

Прочитав инструкции, а также проконсультировавшись с Александром ЭРИ (огромное спасибо!), я поднял на сервере сертификации простой http сервер Apache и опубликовал на нем файл отозванных сертификатов. Полностью закрыл к нему доступ, кроме как к опубликованному файлу с одного ip.

В терминале Mikrotik, во вкладке /System/Certificates/CRL указал путь к опубликованному crl.pem. Тут следует уточнить, что Mikrotik принимает для вкладки CRL только http и абсолютный адрес, т.е. выглядеть должно было приблизительно вот так: 127.0.0.1/crl/1.crl
Все заработало, по крайней мере для версий 6.4.2.х RouterOS, но клиентские конфигурации приходилось создавать руками, и это для меня было прискорбно и вызывало массу неудобств. Когда через неделю мне потребовалось создать конфигурации для порядка 50 клиентов, я решил ускорить этот процесс и для этого использовал кусочек чужого скрипта, найденного на просторах интернета.

Скрипт работает так: после запуска указываем «имя клиента», отвечаем на вопрос «установить пароль или нет», после этого забираем уже готовый файл конфигурации «клиент.ovpn», с интегрированными в него сертификатами и настройками. Чтобы его использовать, надо находиться /etc/openvpn. Я подпишу коментами строки, в которых путь необходимо заменить на свой. Также необходимо создать файл с настройками клиента, что-бы скрипт подставлял их в процессе создания конфигурации.

#!/bin/bash
function newClient () {
	echo ""
	echo "Tell me a name for the client."
	echo "Use one word only, no special characters."

	until [[ "$CLIENT" =~ ^[a-zA-Z0-9_]+$ ]]; do
		read -rp "Client name: " -e CLIENT
	done

	echo ""
	echo "Do you want to protect the configuration file with a password?"
	echo "(e.g. encrypt the private key with a password)"
	echo "   1) Add a passwordless client"
	echo "   2) Use a password for the client"

	until [[ "$PASS" =~ ^[1-2]$ ]]; do
		read -rp "Select an option [1-2]: " -e -i 1 PASS
	done

	#cd /etc/openvpn/easy-rsa/ || return
	case $PASS in
		1)
		sudo /home/admin/EasyRSA-3.0.3/easyrsa build-client-full "$CLIENT" nopass
		;;
		2)
		echo "You will be asked for the client password below"
			./easyrsa build-client-full "$CLIENT"
		;;
	esac
# Generates the custom client.ovpn
	cp /etc/openvpn/client-template.txt "$home/home/admin/IT/Temp/$CLIENT.ovpn" 
#Директория в которой хранится файл с настройками клиента.
#Директория, в которой сформируется файл конфигурации
	{
		echo "<ca>"
		cat "/etc/openvpn/pki/ca.crt" #Директория хранения корневого сертификата
		echo "</ca>"

		echo "<cert>"
		awk '/BEGIN/,/END/' "/etc/openvpn/pki/issued/$CLIENT.crt" #Директория с созданным #сертификатом клиента
		echo "</cert>"

		echo "<key>"
		cat "/etc/openvpn/pki/private/$CLIENT.key" #Директория с созданным ключом клиента
		echo "</key>"

} >> "$home/home/admin/IT/Temp/$CLIENT.ovpn" #Директория, в которой сформируется файл #конфигурации

	echo ""
	echo "Client $CLIENT added, the configuration file is available at $home/admin/IT/OVPN/Temp/$CLIENT.ovpn."
	echo "Download the .ovpn file and import it in your OpenVPN client."
exit 0;
}
newClient

Через некоторое время новая вводная на запрет удаленного доступа вынудила убить и этот сервер, и работающую связку с Mikrotik. Был создан новый сервер OpenVPN, для сотрудников IT-отдела, который теперь работает полностью на CentOS. Но это уже совсем другая история.

Выражаю огромную благодарность Ивану и Павлу за помощь в редакции статьи.

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

Содержание

  1. Настройка OpenVPN сервера
  2. Создание конфигурации для OpenVPN клиента
  3. Настройка OpenVPN Windows клиента
  4. Настройка OpenVPN Android клиента
  5. Задать вопрос по настройке OpenVPN

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

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

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

OpenVPN актуален ещё в том случае, если смартфон на Android или IOS перестал поддерживать ранее популярный протокол L2TP+Ipsec. Решением в данном случае будет в переходе на использование IKEv2, Wireguard или OpenVPN. Все эти протоколы поддерживаются и могут быть настроены на роутере MikroTik.

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

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

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

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

Нужно настроить OpenVPN в MikroTik?

VPN сервер на базе OpenVPN: шифрование трафика с помощью SSL, высокая скорость работы, поддержка Android, IOS, Windows, Linux.

Настройка 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
data-ciphers AES-256-CBC
cipher AES-256-CBC
auth-user-pass
auth SHA256
# Весь трафик OpenVPN клиента будет заворачиваться на OpenVPN сервер
redirect-gateway def1
# Если нужно добавить маршрут в подсеть за OpenVPN сервером
#route 192.168.1.0 255.255.255.0
verb 3
<ca>
##**********Сюда нужно вставить содержимое файла cert_export_Nastroika-MikroTik.ukr-CA.crt
</ca>
<cert>
##**********Сюда нужно вставить содержимое файла cert_export_OpenVPNUser1.crt
</cert>
<key>
##**********Сюда нужно вставить содержимое файла cert_export_OpenVPNUser1.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

Есть вопросы или предложения по настройке VPN типа OpenVPN MikroTik? Активно предлагай свой вариант настройки! Оставить комментарий

MikroTik OpenVPN is an amazing VPN solution. IT provides a secure and encrypted VPN tunnel across public network. Unlike PPTP and L2TP VPN Services which are poorly designed and can easily be blocked, OpenVPN can highly be customized and even can be run on so popular TCP Port 443. So, OpenVPN cannot easily be blocked. OpenVPN uses SSL/TLS Certificates. So, OpenVPN Tunnel is a trusted tunnel to send and receive data across public network. OpenVPN is a site to site VPN technology in nature even in NAT network. But MikroTik OpenVPN has limitation to use PPP username and password although a site to site VPN does not require username and password.

The goal of this article is to configure an OpenVPN Server on so popular TCP Port 443 in MikroTik Router and configure OpenVPN Client in Windows Operating System so that a Windows user can connect to a remote office network and can be able to access remote network resources (Servers, Printers etc.) across public network safely.

Network Diagram

To configure OpenVPN Server in MikroTik Router on TCP Port 443, we are following the below network diagram.

MikroTik OpenVPN Network Diagram
MikroTik OpenVPN Network Diagram

In this network, MikroTik Router (RouterOS v6.46) is connected to internet through ether1 interface having IP address 117.58.247.198/30. In your network, this IP address should be replaced with public IP address. MikroTik Router’s ether2 interface is connected to local network having IP network 10.10.11.0/24. We will configure OpenVPN server in this router and OpenVPN client in a Windows Operating System. After OpenVPN Server and Client configuration, the router will create a virtual interface (OpenVPN Tunnel) across public network where VPN Gateway IP address will be 192.168.2.1 and Client machine will get an IP Address within 192.168.2.0/24 IP Block. We will also declare route in OpenVPN Client so that connected VPN user can access resources of OpenVPN server’s network.

OpenVPN Server and Client Configuration

We will now start OpenVPN Server and Client configuration. Complete OpenVPN configuration can be divided into two parts.

  • Part 1: OpenVPN Server Configuration in MikroTik Router
  • Part 2: OpenVPN Client Configuration in Windows Operating System

Part 1: OpenVPN Server Configuration in MikroTik Router

According to the network diagram, MikroTik Router is our OpenVPN Server. So, we will enable and configure OpenVPN Server in MikroTik Router. It is assumed that your WAN and LAN networks are working without any issue.

Complete MikroTik OpenVPN Server configuration can be divided into the following three steps.

  • Step 1: Creating TLS Certificate for OpenVPN Server and Client
  • Step 2: Enabling and Configuring OpenVPN Server
  • Step 3: Creating OpenVPN Users

Step 1: Creating TLS Certificate for OpenVPN Server and Client

OpenVPN server and client configuration requires TLS certificate because OpenVPN uses TLS certificate for secure communication. MikroTik RouterOS v6 gives ability to create, store and manage certificates in certificate store. So, we will create required OpenVPN certificate from our RouterOS. OpenVPN Server and Client require three types of certificates:

  • CA (Certification Authority) Certificate
  • Server Certificate and
  • Client Certificate

Creating CA certificate

The following steps will show how to create CA certificate in MikroTik RouterOS.

  • From Winbox, go to System > Certificates menu item and click on Certificates tab and then click on PLUS SIGN (+). New Certificate window will appear.
  • Put your CA certificate name (for example: CA) in Name input field. Also put a certificate common name (for example: CA) in Common Name input field.
  • You will find some optional fields in General tab. You can fill those if you wish. All fields are self-defined.
  • Click on Key Usage tab and uncheck all checkboxes except crl sign and key cert. sign checkboxes.
  • Click on Apply button and then click on Sign button. Sign window will appear now.
  • Your created CA certificate template will appear in Certificate dropdown menu. Select your newly created certificate template if it is not selected.
  • Put MikroTik Router’s WAN IP address (example: 117.58.247.198) in CA CRL Host input field.
  • Click on Sign button. Your Signed certificate will be created within few seconds.
  • Click on OK button to close New Certificate window.
  • If newly created CA certificate does not show T flag or Trusted property shows no, double click on your CA certificate and click on Trusted checkbox located at the bottom of General tab and then click on Apply and OK button.
Creating CA Certificate
Creating CA Certificate

CA certificate has been created successfully. Now we will create server certificate.

Creating Server Certificate

The following steps will show how to create server certificate in MikroTik RouterOS.

  • Click on PLUS SIGN (+) again. New Certificate window will appear.
  • Put your server certificate name (for example: Server) in Name input field. Also put a certificate common name (for example: Server) in Common Name input field.
  • If you have put any optional field in CA certificate, put them here also.
  • Click on Key Usage tab and uncheck all checkboxes except digital signature, key encipherment and tls server checkboxes.
  • Click on Apply button and then click on Sign button. Sign window will appear now.
  • Your newly created Server certificate template will appear in certificate dropdown menu. Select newly created certificate template if it is not selected.
  • Also select CA certificate from CA dropdown menu.
  • Click on Sign button. Your Signed certificate will be created within few seconds.
  • Click on OK button to close New Certificate window.
  • If newly created server certificate does not show T flag or Trusted property shows no, double click on your server certificate and click on Trusted checkbox located at the bottom of General tab and then click on Apply and OK button.
Creating Server Certificate
Creating Server Certificate

Server certificate has been created successfully. Now we will create client certificate.

Creating Client Certificate

The following steps will show how to create client certificate in MikroTik RouterOS.

  • Click on PLUS SIGN (+) again. New Certificate window will appear.
  • Put your client certificate name (for example: Client) in Name input field. Also put a certificate common name (for example: Client) in Common Name input field.
  • If you put any optional field in CA certificate, put them here also.
  • Click on Key Usage tab and uncheck all checkboxes except tls client checkbox.
  • Click on Apply button and then click on Sign button. Sign window will appear now.
  • Your newly created Client certificate template will appear in certificate dropdown menu. Select your newly created certificate template if it is not selected.
  • Also select CA certificate from CA dropdown menu.
  • Click on Sign button. Your Signed certificate will be created within few seconds.
  • Click on OK button to close New Certificate window.
  • Client certificate does not require T flag.
Creating Client Certificate
Creating Client Certificate

Client certificate has been created successfully. Created and signed CA, Server and Client certificates will look like the following image in Certificates window.

CA, Server and Client Certificate
CA, Server and Client Certificate

After creating and signing CA, Server and Client certificates, we will now export CA and Client certificates because OpenVPN client will use these certificates.

Exporting CA and Client Certificates

OpenVPN server will use Server certificate from MikroTik RouterOS Certificate store. But client certificate has to supply to the OpenVPN client. So, we need to export client certificate as well as CA certificate from RouterOS certificate store. The following steps will show how to export CA certificate and Client certificate from MikroTik certificate store.

  • Select and make Right Click on your CA certificate and then click on Export option. Export window will appear.
  • Choose CA certificate from Certificate dropdown menu.
  • Click on Export button now. Your CA certificate will be exported and Export window will be closed.
  • Similarly, select and make right click on Client certificate and then click on Export option. Choose client certificate from Certificate dropdown menu. Put a password in Export Passphrase input field. The password should be strong enough and must remember because the password has to provide when OpenVPN client will be connected. Click on Export button now.
Exporting CA and Client Certificates
Exporting CA and Client Certificates

Exported CA and Client certificates with key will be found in Winbox File List window. The following steps will show how to download exported certificates file from File directory.

  • Click on Files menu from Winbox menu panel. You will find two certificate files (.crt) and one key file (.key) is exported here.
  • Drag and Drop these three files in a folder on your Desktop. We will use these files when OpenVPN Client will be configured.
Downloading CA and Client Certificates
Downloading CA and Client Certificates

TLS certificates for OpenVPN Server and Client are ready. Now we will configure our OpenVPN Server in MikroTik Router.

Step 2: OpenVPN Server Configuration in MikroTik Router

After creating TLS certificate, we are now eligible to enable and configure OpenVPN Server in MikroTik Router. The following steps will show how to enable and configure OpenVPN Server in MikroTik Router.

  • Click on PPP menu item from Winbox and then click on Interface tab.
  • Click on OVPN Server button. OVPN Server window will appear.
  • Click on Enabled checkbox to enable OpenVPN Server.
  • Put your desired TCP Port (example: 443) on which you want to run OpenVPN Server in Port input field.
  • Make sure ip option is selected in Mode dropdown menu.
  • From Certificate dropdown menu, choose server certificate that we created before. Also click on Require Client Certificate checkbox.
  • From Auth. Panel, uncheck all checkboxes except sha1.
  • From Cipher panel, uncheck all checkboxes except aes 256.
  • Now click on Apply and OK button.
Configuring OpenVPN in MikroTik RouterOS
Configuring OpenVPN in MikroTik RouterOS

OpenVPN Server is now running in MikroTik Router. As MikroTik OpenVPN is limited to use username and password for successful VPN connection, we will now create PPP user who will be able to connect MikroTik OpenVPN Server and get IP information.

Step 3: Creating OpenVPN Users

MikroTik OpenVPN uses username and password to validate legal connection. So, we have to create username and password to allow any user. The complete user configuration for OpenVPN Server can be divided into three parts.

  • IP Pool Configuration
  • User Profile Configuration and
  • User Configuration

IP Pool Configuration

Usually multiple users can connect to OpenVPN Server. So, it is always better to create an IP Pool from where connected user will get IP address. The following steps will show how to create IP Pool in MikroTik Router.

  • From Winbox, go to IP > Pool menu item. IP Pool Window will appear.
  • Click on PLUS SIGN (+). New IP Pool window will appear.
  • Put a meaningful name (vpn_pool) in Name input field.
  • Put desired IP Ranges (192.168.2.2-192.168.2.250) in Addresses input filed. Make sure not to use VPN Gateway IP (192.168.2.1) and the last IP (192.168.2.154) because last IP will be used as DHCP Server IP.
  • Click Apply and OK button.
OpenVPN User IP Pool
OpenVPN User IP Pool

User Profile Configuration

After creating IP Pool, we will now configure profile so that all users can have similar characteristics. The following steps will show how to configure user profile for OpenVPN User.

  • From Winbox, go to PPP menu item and click on Profile tab and then click on PLUS SIGN (+). New PPP Profile window will appear.
  • Put a meaningful name (vpn_profile) in Name input field.
  • Put VPN Gateway address (192.168.2.1) in Local Address input field.
  • Choose the created IP Pool (vpn_pool) from Remote Address dropdown menu.
  • Click Apply and OK button.
OpenVPN User Profile Configuration
OpenVPN User Profile Configuration

OpenVPN Users Configuration

After creating user profile, we will now create users who will be connected to OpenVPN Server. The following steps will show how to create OpenVPN users in MikroTik RouterOS.

  • From PPP window, click on Secrets tab and then click on PLUS SIGN (+). New PPP Secret window will appear.
  • Put username (For example: sayeed) in Name input field and put password in Password input field.
  • Choose ovpn from Service dropdown menu.
  • Choose the created profile from Profile dropdown menu.
  • Click on Apply and OK button.
Creating OpenVPN Users
Creating OpenVPN Users

We have created a user for OpenVPN Server. Similarly you can create more users that you require.

OpenVPN Server configuration in MikroTik Router has been completed. In the next part we will configure OpenVPN client in Windows Operating System.

Part 2:  OpenVPN Client Configuration in Windows Operating System

After configuring OpenVPN Server in MikroTik Router, we will now configure OpenVPN Client. OpenVPN Client configuration can be divided into two steps.

  • OpenVPN Client Download and Installation
  • OpenVPN Client Configuration

Steps 1: OpenVPN Client Download and Installation

OpenVPN.net provides OpenVPN Client software for all Operating Systems. OpenVPN Client software is found in OpenVPN Community Download page. So, visit to community download page and download OpenVPN Client that matches with your Operating System. I am using Windows 10. So, I downloaded WINDOWS 10/SERVER 2016/SERVER 2019 INSTALLER (NSI) package. At the time of this article, the OpenVPN client installer version was 2.4.8.

OpenVPN Client Installer
OpenVPN Client Installer

If you face any confusion to download OpenVPN client from OpenVPN Community Download, you can Download OpenVPN Client Software Package from this link where I have attached my tested OpenVPN Client Software and Client Configuration file.

After getting OpenVPN Client installer, install OpenVPN client in your operating system following the instructions. Installation process is as simple as installing other software in Windows operating system.

OpenVPN Client Installation
OpenVPN Client Installation

After OpenVPN Client installation, make sure that TAP Virtual Ethernet Adapter has been installed. If it is installed successfully, you will find a new Network Adapter named as TAP-Windows Adapter in Network Connections window.

Virtual TAP-Windows Adapter
Virtual TAP-Windows Adapter

If don’t find this TAP-Windows Adapter in Network Connections panel, uninstall the false installation from Windows Program and Features panel and then download my OpenVPN Client Package where I have attached another TAP-Windows installer and install that installer. I hope you will now find the TAP-Windows Adapter. Without TAP-Windows Adapter OpenVPN Client cannot be able to connect to OpenVPN Server.

Step 2: OpenVPN Client Configuration

After installing OpenVPN client software, we need to configure OpenVPN Client according to our OpenVPN Server requirements. OpenVPN Client configuration file is a UNIX like configuration file. The default OpenVPN configuration directory is C:\Program Files\OpenVPN. This directory looks like the below image.

OpenVPN Client Default Directory
OpenVPN Client Default Directory

In this directory, a folder named sample-config will be found where a sample OpenVPN Client configuration file named client.ovpn is provided. Copy this sample configuration file into config folder and then open the client configuration file with a text editor such as WordPad, NotePad ++ or any editor that you like. Make sure the editor is opened with administrator privilege otherwise you cannot save the file when you make change.

Configuration Parameters Those We Need to Change

In the client.ovpn file, some parameters are required to change according to our OpenVPN Server configuration. The following parameters are required to change in client configuration file.

Protocol

By default OpenVPN client uses UDP protocol but MikroTik OpenVPN Server supports only TCP protocol. So, enable proto tcp and disable proto udp which may be found at line 36 and 37.

Note: To disable any option just put a semicolon (;) before that option and to enable any option remove the semicolon (;) from that option.

IP and Port

We must specify OpenVPN Server IP and Port in Client configuration file. IP and Port are declared with remote option which may be found at line 42 and the IP and Port should be declared in a line like below. Make sure to change your WAN IP with the example IP (117.58.247.198) and port (443) with your define port.

remote 117.58.247.198:443

SSL/TLS Parameters

In client configuration file, we need to declare CA and Client certificates and Client Key file. These options may be found at line 88, 89 and 90. So, assign ca, cert and key file like below.

ca CA.crt

cert Client.crt

key Client.key 

Make sure to rename exported and downloaded ca, client and key file according to the above options and then copy your renamed CA.crt, Client.crt and Client.key files into config directory.

We are not using any server key file. So we have to disable tls-auth option which is enabled by default. The tls-auth option may be found at line 108. So, disable this option by putting a semicolon (;) before it.

Configuration Options Those We Need to Add

There are some options those we need to declare in client configuration file because by default these options are not included in sample configuration file but MikroTik Router requires those options. The following options are required to include in client configuration to work with MikroTik OpenVPN Server properly.  

User Authentication

MikroTik OpenVPN Server is limited to work with user verification. So we have to provide username and password with auth-user-pass option. Add this option at the bottom of the client configuration file and declare a file name where username and password are stored like below.

auth-user-pass secret.cfg   

Now create a file named secret.cfg in config directory and specify username and password in this file. Username must be declared at the first line and password must be declared at the second line like below.

sayeed

password

Routing Information

By default OpenVPN Client will only be able to communicate with the same network IP Addresses. But remote network resources (Servers, Printers etc.) may have another network. In this case we have to declare routing with route option otherwise OpenVPN Client cannot reach to other network.

For example, Our VPN Gateway Address is 192.168.2.1 and Server network is 10.10.11.0/24. So, to reach this network we have to add route option like below.

route 10.10.11.0 255.255.255.0 192.168.2.1

If you have multiple networks, you have to add multiple route options but each route option per line.

Download Demo OpenVPN Client Configuration File

If you face any confusion to edit the above configuration option, Download OpenVPN Client Configuration File which has been prepared for this article configuration and cross check with your configuration file. Hope your confusion will be reduced.

After coping CA.crt, Cleint.crt, Client.key and client.ovpn files, your config directory will look like the below image.

OpenVPN Client Config Directory
OpenVPN Client Config Directory

Connecting OpenVPN Client

After completing client configuration, run OpenVPN Client by clicking OpenVPN GUI desktop shortcut icon. You will now find a new OpenVPN icon in Taskbar or System tray like below image.

OpenVPN Connection Icon
OpenVPN Connection Icon

Click mouse right button on this icon and then click Connect option. OpenVPN Connection window will appear and it will ask to put client certificate password that you have entered at the time of client certificate exportation.

OpenVPN Client Asking for Client Certificate Password
OpenVPN Client Asking for Client Certificate Password

After verifying Client Certificate Password as well as username and password, OpenVPN Client will be connected and an IP address will be assigned to TAP-Windows Adapter. At successful OpenVPN connection, the OpenVPN Client icon will be turned into green.

OpenVPN Client Connection Status in Windows 10
OpenVPN Client Connection Status in Windows 10

Now you will be able to access your remote office resources such as File Server, Printers and so on without any issue.

How to Configure OpenVPN Server on TCP Port 443 in MikroTik with Windows 10 Operating System has been discussed in this article. I hope you will now be able to configure MikroTik OpenVPN Server and can be connected across public network from remote location securely. However, if you face any confusion to configure MikroTik OpenVPN Server and OpenVPN Client, feel free to discuss in comment or contact me from Contact Page. I will try my best to stay with you.

Бывают случаи, когда необходимо настроить удалённый доступ на mikrotik или даже на несколько.
Особенно это актуально, если вы обслуживаете несколько объектов и нет возможности физически постоянно присутствовать возле оборудования.
В этом статье мы разберём, как настроить OpenVPN сервер на mikrotik, а также клиенты на mikrotik и компьютере под управлением Windows.

Для работы нам понадобится Белый IP адрес (он и будет адресом сервера в наших настройках) для доступа к серверу из интернета и сертификаты безопасности.

Краткий план данной статьи:

  • Создание сертификатов и ключей OpenVPN
  • Создание сервера OpenVPN на Mikrotik
  • Создание клиента OpenVPN на ПК
  • Создание клиента OpenVPN на Mikrotik

1) Скачаем программу OpenVPN с официального сайта.

OpenVPN страница сайта

2) Устанавливаем, выбрав все галочки.

EasyRSA Certificate Management Scripts нам обязательно понадобится для генерации ключей и сертификатов.

Openvpn Установка

3) Указываем путь. В дальнейшем он нам понадобится. В нашем случае используем стандартный C:\Program Files\OpenVPN

4) После установки заходим в C:\Program files\OpenVPN\easy-rsa

Открываем vars.bat (если его нет, то vars.bat.sample) блокнотом или NotePad++ и редактируем его.

set KEY_COUNTRY=RU
set KEY_PROVINCE=MoscowRegion
set KEY_CITY=MOSCOW
set KEY_ORG=OpenVPN
set KEY_EMAIL=mail@mail.com
set KEY_CN=server
set KEY_NAME=server
set KEY_OU=OU
set PKCS11_MODULE_PATH=changeme
set PKCS11_PIN=1234

В строках  set KEY_CN и set KEY_NAME указываем server
Последние 2 строки — параметры по умолчанию. Остальное можете редактировать под себя.

Сохраняем файл как vars.bat на рабочий стол, а затем копируем в папку C:\Program files\OpenVPN\easy-rsa
Чаще всего сохранить напрямую в исходную папку не получится — не хватает прав.

5) Отредактируем файл openssl-1.0.0.cnf
Так же открываем с помощью блокнота или notepad++

Нас интересует строка:
default_days = 3650 # how long to certify for
Она отвечает за время жизни сертификата. Если значение отличается — то указываем 3650 (10 лет).
Сохраняем.

6) Запускаем командную строку от имени администратора:
Пуск — Все программы — Стандартные 
Правой кнопкой мыши на «Командная строка» и в меню — Запустить от имени администратора.
Командную строку не закрываем до конца процесса генерации сертификатов.

Запуск командной строки с правами администратора

7) Поочередно выполняем следующие три команды:
cd C:\Program files\OpenVPN\easy-rsa
vars
clean-all

В итоге мы должны увидеть сообщение «Скопировано файлов: 1» дважды.

easy-rsa vars clean-all

В папке C:\Program files\OpenVPN\easy-rsa появится папка keys с двумя файлами index.txt и serial.

easy-rsa 2 файла в папке с ключами

8) Генерируем ключ Диффи Хельмана — команда build-dh
Генерация займёт некоторое время. Дождитесь окончания.

9) Генерируем ключ центра сертификации (CA) — build-ca

Нажимаем Enter, пока не закончатся вопросы.
Вы увидите в командной строке путь C:\Program files\OpenVPN\easy-rsa

Генерируем ключ центра сертификации

Нет смысла менять заданные значения. Вы ранее прописали эти параметры в файле vars.bat

10) Генерируем сертификат сервера — команда build-key-server server
Нажимаем Enter (оставляем параметры по умолчанию, прописанные в vars.bat), пока не дойдём до вопросов.
Sign the certificate? (Создание сертификата на 3650 дней)
1 out of 1 certificate requests certified, commit? (Запись сертификата в базу)
На вопросы отвечаем нажатием Y

Генерируем сертификат сервера

11) Генерируем сертификат клиента build-key client
Нажимаем Enter (оставляем параметры по умолчанию, прописанные в vars.bat), пока не дойдём до вопросов Common Name и Name.
На эти вопросы отвечаем client — это название создаваемого сертификата.

На вопросы Sign the certificate? и 1 out of 1 certificate requests certified, commit? отвечаем нажатием Y

12) Генерация сертификатов окончена.
В папке C:\Program files\OpenVPN\easy-rsa\keys можно увидеть следующие файлы:

 Генерация сертификатов окончена. Список готовых файлов

Сертификаты для сервера и клиентов готовы.

Настройка OpenVPN сервера на Mikrotik

Подключимся к Mikrotik с помощью программы Winbox.
Загрузим 3 файла: ca.crt, server.crt, server.key
Для этого в меню нажмём Files и перетащим их из папки C:\Program files\OpenVPN\easy-rsa\keys

Загрузим в микротик ca.crt, server.crt, server.key

13) Далее необходимо их импортировать.
Откроем System – Certificates — Import и поочерёдно выберем сертификаты в этом порядке:
ca.crt
server.crt
server.key

Импортируем в микротик сертификаты

После импорта появятся две записи:

После импорта появятся сертификаты

14) Создадим пул адресов для VPN клиентов:

IP — Pool — add (+)
Введём название openvpn-pool
Диапазон 172.30.0.2-172.30.0.253

Добавим пул адресов

15) Создадим PPP профиль.

PPP — Profiles — add (+)
Введём название openvpn
Локальный адрес 172.30.0.1
Созданный Пул openvpn-pool
Остальные настройки оставляем по умолчанию.
Нажимаем ОК.

Микротик профиль PPP

16) Создадим непосредственно сам OpenVPN сервер
PPP — Interface — OVPN Server
Включаем Enable
Указываем порт 1194
Выбираем наш профиль openvpn
Поставим галочку Require Client Certificate
Выберем наш сертификат server.crt

Создаём на микротике сервер openvpn

17) Создадим пользователя для подключения.
PPP — Secrets — add (+)
Введём имя пользователя и пароль ovpn_user1
Выбираем Сервис ovpn и профиль openvpn

Микротик пользователь для подключения VPN

Создадим 2 пользователя:

ovpn_user1 для клиента на компьютере

ovpn_mikrotik1 для клиента на Mikrotik

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

18) Настроим фаервол
IP — Firewall — add(+)
Во вкладке General указываем:
Chain — input
Protocol — tcp
Порт 1194
Интерфейс — ether1 (Если интернет идёт через него)
Вкладка Action:
Action — accept
Затем ОК

Настройка фаервола для VPN микротика

Сервер настроен, теперь приступим к настройке VPN клиентов.

Настройка VPN клиента на компьютере под управлением Windows

19) Копируем в папку C:\Program files\OpenVPN\config\

из C:\Program files\OpenVPN\easy-rsa\keys следующие файлы
ca.crt, client.crt, client.key.

из C:\Program files\OpenVPN\simple-config\
client.ovpn

Создадим текстовый файл pass, где укажем логин и пароль от созданного VPN клиента на сервере.
В нашем случае это ovpn_user1

Укажем логин и пароль пользователя для подключения

20) Откроем файл client.ovpn с помощью блокнота или notepad++
Изменяем следующие строки:
#Протокол
proto tcp
#Адрес и порт сервера
remote ваш.ip.адрес.сервера 1194

#Проверяем правильность названия ключей
ca ca.crt
cert client.crt
key client.key

И в самом конце добавим строчку
auth-user-pass «C:\\Program files\\OpenVPN\\config\\pass.txt»
В итоге у нас получатся следующие настройки в этом файле:
client
dev tun
proto tcp
remote адрес_сервера 1194
resolv-retry infinite
nobind
persist-key
persist-tun
ca ca.crt
cert user.crt
key user.key
remote-cert-tls server
cipher AES-128-CBC
verb 3
auth-user-pass «c:\\Program Files\\OpenVPN\\config\\pass.txt»

Остальные настройки закомментированы решеткой «#» или точкой с запятой «;»

21) Сохраняем файл. Если сохранить в папку не получается — сохраняем на рабочий стол, а затем копируем с заменой.

Запускаем OpenVPN и подключаемся.

Подключение к OpenVPN

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

Удачное подключение к VPN, получен IP

Настройка VPN клиента на Mikrotik

Имея настроенный OpenVPN сервер, можно настроить доступ на Mikrotik даже там, где нет белого IP адреса.

22) Подключимся к Mikrotik с помощью программы Winbox.
Загрузим 2 файла:  client.crt, client.key

Для этого в меню нажмём Files и перетащим их из папки C:\Program files\OpenVPN\easy-rsa\keys

Загрузка сертификата и ключа клиента на микротик
23) Далее необходимо их импортировать.
Откроем System – Certificates — Import и поочерёдно выберем сертификаты в этом порядке:
client.crt
client.key

Импорт в микротик клиентского ключа и сертификата

24) Настроим параметры сервера:
PPP — add(+) — OVPN client

OVPN клиент на микротике
Во вкладке General указываем имя
Name — openVPN1 (любое, на ваше усмотрение)
Вкладка Dial Out:
Connect To — Адрес сервера(Внешний IP адрес главного роутера Mikrotik)
Port 1194
Указываем пользователя и пароль, который мы создали на VPN сервере
В нашем случае это пользователь ovpn_mikrotik1
Сертификат Client.crt

Нажимаем ОК

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

25) В терминале набираем /interface ovpn-client monitor openVPN1
Должно появиться сообщение со статусом connected

Микротик статус VPN подключения в консоле

Теперь к этому mikrotik можно подключиться через VPN по адресу, который он получил от VPN сервера

Подключение к VPN серверу через Винбокс
Посмотреть адрес можно:
В Mikrotik-клиенте в IP-Adresses строка с нашим интерфейсом openVPN1

Микротик назначенный IP VPN сервером

В Mikrotik-сервере PPP-Active Connections 

Полученный адрес в активных подключениях микротика

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

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

Предварительная подготовка устройства

Для начала необходимо убедиться, что время устройстве установлено верно, раздел System -> Clock. При необходимости настраиваем синхронизацию часов устройства, как это сделать описано в статье: Настройка маршрутизатора MikroTik с нуля, раздел Настройка синхронизации времени.

Сертификаты

Корневой сертификат. Для генерации сертификатов воспользуемся встроенными средствами устройства. Раздел System -> Certificates, создаем новый корневой сертификат (CA), поля Name, Common Name и Days Valid обязательны для заполнения. Размер ключа (Key Size) на ваше усмотрение.

Настройка OpenVPN сервера на MikroTik new Certificates

Переходим на вкладку Key Usage, оставляем только crl sign и key cert. sign. Нажимаем кнопку Apply.

Mikrotik generate new CA

Не закрывая окна сертификата нажимаем кнопку Sign для его подписания. В открывшемся окне подписания сертификата в поле CA CRL Host пишем loopback адрес 127.0.0.1, нажимаем кнопку Start.

MikroTik sign CA certificate OpenVPN

В консоли команда будет выглядеть так:

/certificate add name="ca.crt_mikrotik" country="ru" organization="-" common-name="microtik-ca" key-size=4096 days-valid=3650 key-usage=crl-sign,key-cert-sign
/certificate sign ca.crt_mikrotik ca-crl-host=127.0.0.1

После подписания, в списке, сертификат будет иметь атрибуты KLAT (K — Private key, L — crl, A — Authority, T — Trusted).

MikroTik CA Certificate

Сертификат сервера. Создаем сертификат OpenVPN сервера. Процедура аналогична выпуску корневого сертификата.

mikrotik openvpn server certificate

Переходим на вкладку Key Usage, выбираем digital signature, key encipherment и tls server. Нажимаем кнопку Apply.

mikrotik openvpn server certificate create

Не закрывая окна сертификата нажимаем кнопку Sign для его подписания. В открывшемся окне подписания сертификата в поле CA выбираем созданный ранее корневой сертификат (CA), нажимаем кнопку Start.

mikrotik openvpnt server certificate sign

В консоли команда будет выглядеть так:

/certificate add name="openvpn-server.crt_mikrotik" country="ru" organization="-" common-name="mikrotik-openvpn-server" key-size=4096 days-valid=3650 key-usage=digital-signature,key-encipherment,tls-server
/certificate sign openvpn-server.crt_mikrotik ca=ca.crt_mikrotik

После подписания, в списке, сертификат будет иметь атрибуты KI (K — Private key, I — Issued).

mikrotik openvpn server certificate

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

При создании пользовательских сертификатов указываем максимально понятное имя для упрощения его идентификации в будущем.

mikrotik openvpn client certificate create

Переходим на вкладку Key Usage, выбираем tls client. Нажимаем кнопку Apply.

mikrotik openvpn client certificate keys

Не закрывая окна сертификата нажимаем кнопку Sign для его подписания. В открывшемся окне подписания сертификата в поле CA выбираем созданный ранее корневой сертификат (CA), нажимаем кнопку Start.

mikrotik openvpn client certificate sign

В консоли команда будет выглядеть так:

/certificate add name="openvpn-client-oukitelk10000max.crt_mikrotik" country="ru" organization="-" common-name="oukitelk10000max-openvpn-client" key-size=4096 days-valid=1095 key-usage=tls-client
/certificate sign openvpn-client-oukitelk10000max.crt_mikrotik ca=ca.crt_mikrotik

После подписания, в списке, сертификат будет иметь атрибуты KI (K — Private key, I — Issued).

mikrotik openvpn server clients certificates

Экспорт сертификатов. Экспортируем корневой сертификат, правой клавишей на сертификате -> Export.

mikrotik openvpn export certificate

Тип (Type) выбираем PEM, поскольку для корневого сертификата закрытый ключ не экспортируется, то Export Passphrase не указываем. Export.

mikrotik openvpn export ca

Экспортируем клиентские сертификаты. Поочередно на каждом клиентском сертификате нажимаем правой клавишей -> Export. Тип (Type) выбираем PEM. Клиентские сертификаты будут экспортироваться с закрытым ключом, для этого необходимо указать Export Passphrase, для каждого сертификата клиента указываем свой пароль!

mikrotik openvpn export client certificate

В консоли команды экспорта сертификатов будут выглядеть так:

/certificate export-certificate ca.crt_mikrotik type=pem
/certificate export-certificate openvpn-client-oukitelk10000max.crt_mikrotik type=pem export-passphrase="1234567890"

Во второй команде указан параметр export-passphrase="1234567890" — это пароль для доступа к закрытому ключу сертификата.

Файлы экспортированных сертификатов и закрытых ключей можно теперь скачать из раздела Files.

mikrotik openvpn exported certificates

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

Создаем новый пул адресов для VPN клиентов, адресацию пула и диапазон задаем произвольно, но первый адрес будет задействован сервером OpenVPN поэтому в пул он попадать не должен. Пул создаем в IP -> Pool -> +, либо из консоли:

/ip pool add name="dhcp_pool-OpenVPN" ranges="10.10.10.11-10.10.10.250"

mikrotik openvpn server dhcp pool

Создаем новый PPP профиль, в поле Local Address указываем адрес OpenVPN сервера, в поле Remote Address указываем созданный ранее пул адресов. PPP -> Profiles -> +, либо из консоли:

/ppp profile add name="profile-OpenVPN-server" local-address="10.10.10.1" remote-address=dhcp_pool-OpenVPN

mikrotik openvpn server profile

OpenVPN в устройствах MikroTik требуется обязательная аутентификация по пользователю и паролю. Создаем пользователей OpenVPN, в поле Service указываем, что пользователь может аутентифицироваться только на сервере OpenVPN, в поле Profile указываем созданный ранее профиль PPP. Создаваемые пользователи никак не привязаны к выданным сертификатам, в связке они образуют подобие двухфакторной авторизации. Пользователи создаются в разделе PPP -> Secrets -> +, либо из консоли:

/ppp secret add name="oukitelk10000pro" password="qwerty12345" service=ovpn profile=profile-OpenVPN-server

mikrotik openvpn new user

Включаем сервис OpenVPN Server, PPP -> Interface -> OVPN Server. В настройка выбираем:

  • Enable — включаем сервис.
  • Port — по умолчанию используется порт 1194. Если с доступом на этом порту возникают проблемы, то его можно сменить на более распространенный, например, 443, если он не используется другими сервисами.
  • Mode — оставляем по умолчанию ip, это режим работы на уровне layer3 модели osi, в OpenVPN это режим tun. Если к серверу OpenVPN будут подключаться конечные устройства (компьютеры, планшеты, телефоны), то выбираем его.
  • Default Profile — выбираем созданный ранее профиль PPP.
  • Certificate — выбираем созданный ранее сертификат сервера.
  • Require Client Certificate — включаем обязательную проверку пользовательского сертификата.
  • Auth — sha1.
  • Chipher — blowfish 128.

Сохраняем настройки OpenVPN Server.

mikrotik openvpn server enable

Включение OpenVPN сервера из консоли:

/interface ovpn-server server set enabled=yes port=1194 mode=ip default-profile=profile-OpenVPN-server certificate=openvpn-server.crt_mikrotik require-client-certificate=yes auth=sha1 cipher=blowfish128

Настройка Firewall

В IP -> Firewall добавляем разрешающее правило для входящих подключений на порт сервера OpenVPN на интерфейсах, смотрящих в сеть интернет. Не забываем расположить правило выше запрещающих. В консоли добавление правила будет выглядеть так:

/ip firewall filter add chain=input protocol=tcp dst-port=1194 in-interface-list=lst-if-WAN action=accept

mikrotik openvpn firewall

где: lst-if-WAN — список WAN интерфейсов, раздел Interfaces -> Interface List.

Для межсетевых экранов, работающих по схеме: закрыть всё, разрешить только необходимое, придется настроить хождение трафика.

1. Трафик до MikroTik и обратно:

/ip firewall filter add chain=input src-address=10.10.10.0/24 dst-address=10.10.10.1/32 action=accept
/ip firewall filter add chain=output src-address=10.10.10.1/32 dst-address=10.10.10.0/24 action=accept

Если необходимо, что бы трафик ходил между клиентами OpenVPN, то в обоих предыдущих правилах меняем src-address и dst-address, вместо 10.10.10.1/32 указываем 10.10.10.0/24, где 10.10.10.0/24 подсеть из адресного пространства которой раздаются адреса для OpenVPN клиентов.

Если доступ к маршрутизатору по данному адресу не нужен, то эти правила не добавляем, либо ограничиваемся списками.

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

2. Трафик между подсетью OpenVPN и домашней/рабочей подсетью:

/ip firewall filter add chain=input src-address=10.10.10.0/24 dst-address=192.168.10.1/32 action=accept
/ip firewall filter add chain=output src-address=192.168.10.1/32 dst-address=10.10.10.0/24 action=accept
/ip firewall filter add chain=forward src-address=10.10.10.0/24 dst-address=192.168.10.0/24 action=accept
/ip firewall filter add chain=forward src-address=192.168.10.0/24 dst-address=10.10.10.0/24 action=accept

Цепочки input и output описаны для доступа к маршрутизатору, если доступ к маршрутизатору по данному адресу не нужен, то эти правила не добавляем, либо ограничиваемся списками.

Цепочки forward предоставляют полный доступ клиентам, подключенным к OpenVPN, в сеть 192.168.10.0/24, кроме адреса маршрутизатора, для доступа к нему задействована цепочка input и output. Обратное правило разрешает полный доступ устройствам из сети 192.168.10.0/24 полный доступ к устройствам в сети OpenVPN. Для ограничения доступа рекомендуется использовать списки.

3. Доступ в интернет для клиентов OpenVPN:

/ip firewall filter add chain=forward src-address=10.10.10.0/24 out-interface-list=lst-if-WAN action=accept
/ip firewall filter add chain=forward dst-address=10.10.10.0/24 in-interface-list=lst-if-WAN action=accept

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

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

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

На клиентском устройстве MikroTik в раздел Files копируем экспортированные ранее корневой и клиентский сертификаты + закрытый ключ к клиентскому сертификату.

mikrotik openvpn client

Импортируем сертификаты в разделе System -> Certificates -> Import. Корневой сертификат выгружался без закрытого ключа, Passphrase для него не указываем.

mikrotik openvpn import ca certificate

Импортируем сертификат клиента, не забываем указать Passphrase указанный при экспорте сертификата.

mikrotik openvpn import client certificate

Импортируем закрытый ключ к клиентскому сертификату, так же указываем Passphrase.

mikrotik openvpn import private key

Импорт сертификатов из командной строки:

/certificate import file-name=flash/cert_export_ca.crt_mikrotik.crt
/certificate import file-name=flash/cert_export_openvpn-client-mi9t.crt_mikrotik.crt passphrase="1234567890"
/certificate import file-name=flash/cert_export_openvpn-client-mi9t.crt_mikrotik.key passphrase="1234567890"

Создаем новое подключение в PPP -> Interface -> + -> OVPN Client. В настройках указываем:

  • Connect To — адрес OpenVPN сервера, к которому необходимо подключиться.
  • Port — как установлено в настройках сервера.
  • Mode — как установлено в настройках сервера.
  • User — имя пользователя, созданного на сервере.
  • Password — пароль пользователя.
  • Profile — default.
  • Certificate — созданный ранее сертификат клиента.
  • Verify Server Certificate — проверка сертификата сервера, включаем.
  • Auth — как в настройках сервера. Для нашей конфигурации sha1.
  • Cipher — как в настройках сервера. Для нашей конфигурации blowfish128.
  • Add Defaul Route — добавление маршрута по умолчанию определяется поставленными задачами.

mikrotik openvpn client

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

Скачиваем OpenVPN Connect с официального сайта. Создаем новую папку, в которую складываем экспортированные ранее корневой и клиентский сертификаты + закрытый ключ к клиентскому сертификату. В этой же папке создаем файлы auth.cfg и config.ovpn (для удобства лучше называть файл настроек .ovpn по имени пользователя, для которого создается конфигурация, например, для нашего тестового пользователя назвать файл mi9tpro.ovpn). В итоге в созданной папке должно быть 5 файлов:

  1. Корневой сертификат
  2. Сертификат клиента
  3. Закрытый ключ к клиентскому сертификату
  4. Файл auth.cfg
  5. Файл config.ovpn

mikrotik openvpn connect windows

Текстовым редактором открываем файл auth.cfg, первой строчкой пишем имя пользователя, созданного на сервере OpenVPN, второй строчкой пароль. Для нашей тестовой конфигурации будет так:

mikrotik openvpn user auth.cfg

Текстовым редактором открываем файл config.ovpn, вносим настройки клиента:

client
dev tun
topology subnet
proto tcp
remote openvpn_server_address 1194
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
tls-client
tls-cipher TLS-RSA-WITH-AES-256-CBC-SHA
auth SHA1
auth-user-pass auth.cfg

ca ca.crt
cert client.crt
key client.key

route-delay 5
redirect-gateway def1

openvpn_server_address — адрес вашего OpenVPN сервера

ca.crt — Корневой сертификат

client.crt — Сертификат клиента

client.key — Закрытый ключ

Устанавливаем и запускаем программу OpenVPN Connect. В разделе Import Profile выбираем File -> Browse.

mikrotik openvpn server windows client

Выбираем файл config.ovpn. Вносим последние настройки, понятное имя профиля, и пароль для расшифровки закрытого ключа (по желанию). Нажимаем кнопку Add.

mikrotik openvpn server windows client setup

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

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

mikrotik openvpn server windows client connect

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

Из Play Market скачивается приложение OpenVPN. Интерфейс и настройки такие же, как и у программы OpenVPN Connect для Windows. Ранее была проблема, что файл приватного ключа должен был быть заранее расшифрован, но похоже, что эта проблема уже решена.

Поиск проблем

При возникновении проблем с подключением, на стороне MikroTik добавляем вывод логов OpenVPN, System -> Logging -> Rules -> + ovpn, открываем вкладку Log и изучаем.

Отзыв сертификатов

Отзыв сертификатов производится в System -> Certificates, выбирается нужный сертификат кнопка Revoke.

mikrotik openvpn certificate revoke

  • Windows server ntp time server
  • Windows server migration tools 2019
  • Windows server nano что это
  • Windows server message to all users
  • Windows server mount nfs share