Настройка openvpn сервера на роутере mikrotik

mikrotik-openvpn-server-000.pngOpenVPN является одной из самых популярных технологий для построения VPN-сетей и это вполне справедливо, данный продукт сочетает в себе безопасность с простой настройкой и мощными возможностями конфигурирования и управления сетью. В роутерах Mikrotik возможности OpenVPN существенно ограничены, что требует серьезно взвесить все за и против перед развертыванием, тем не менее в ряде случаев настройка OpenVPN выглядит оправданной и сегодня мы расскажем как это сделать.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Данная статья предназначена для RouterOS 6.x, для настройки OpenVPN сервера в RouterOS 7.x воспользуйтесь обновленным материалом.

Подготовка роутера

OpenVPN, как и любой другой использующий SSL-шифрование продукт, чувствителен к расхождению времени между клиентом и сервером. Поэтому в первую очередь правильно настроим время на Mikrotik. Прежде всего откроем System — Clock и установим правильное значение часового пояса, его автоматическое определение лучше отключить.

mikrotik-openvpn-server-001.pngВ консоли это можно сделать командой:

/system clock
set time-zone-autodetect=no time-zone-name=Europe/Moscow

В качестве параметра опции time-zone-name следует указать наименование вашего часового пояса согласно tz database.

Затем установим пакет NTP, для этого вам потребуется скачать с официального сайта архив Extra packages для вашей архитектуры и версии RouterOS, оттуда следует извлечь пакет ntp и поместить его на роутер, для установки достаточно перезагрузить устройство.

mikrotik-openvpn-server-002.pngПосле чего перейдем в System — NTP Client, включим его и укажем адреса NTP-серверов, в нашем случае это сервера из пула ru.pool.ntp.org.

mikrotik-openvpn-server-003.pngВ командной строке это можно сделать так:

/system ntp client
set enabled=yes primary-ntp=185.209.85.222 secondary-ntp=37.139.41.250

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

Аналогичные манипуляции следует выполнить на всех роутерах-участниках VPN-сети. Для ПК и других устройств-клиентов также следует настроить синхронизацию времени.

Создание ключей и сертификатов

Некоторые руководства в сети предполагают создание ключей и сертификатов при помощи сторонних утилит, например, Easy-RSA, мы же будем использовать собственные средства Mikrotik. Перейдем в System — Certificate и создадим новый корневой сертификат нашего центра сертификации (CA).

mikrotik-openvpn-server-004.pngОбязательные поля отмечены нами красным, это Name и Common Nameca, размер ключа — Key Size2048, и срок действия — Days Valid3650 или 10 лет, для локального центра сертификации это вполне оправдано. Выделенные зеленым поля содержат информацию о владельце сертификата и к заполнению не обязательны, но их заполнение является правилом хорошего тона и при наличии большого количества сертификатов позволяет быстро понять, что это за сертификат и кому он принадлежит.

Затем перейдем на закладку Key Usage и укажем только crl sign и key cert. sign и нажмем кнопку Apply, теперь подпишем сертификат нажав Sign. В появившемся окне заполним поле CA CRL Host адресом локальной петли — 127.0.0.1, после чего нажимаем Start и дожидаемся окончания подписи сертификата.

mikrotik-openvpn-server-005.pngЭти же действия в консоли:

/certificate 
add name=ca country="RU" state="31" locality="BEL" organization="Interface LLC" unit="IT" common-name="ca" key-size=2048 days-valid=3650 key-usage=crl-sign,key-cert-sign
sign ca ca-crl-host=127.0.0.1

Следующим создадим сертификат и закрытый ключ сервера. Закладка General нового сертификата заполняется аналогично, только в полях Name и Common Name указываем ovpn-server (можете выбрать на собственное усмотрение). На вкладке Key Usage укажите digital-signature, key-encipherment и tls-server. Затем подпишем сертификат ключом нашего CA, для этого в поле CA выберите только что созданный нами сертификат ca.

mikrotik-openvpn-server-006.pngДля выпуска сертификата в консоли выполните:

/certificate 
add name=ovpn-server country="RU" state="31" locality="BEL" organization="Interface LLC" unit="IT" common-name="ovpn-server" key-size=2048 days-valid=3650 key-usage=digital-signature,key-encipherment,tls-server
sign ovpn-server ca="ca"

Теперь создадим клиентские сертификаты, в полях Name и Common Name на закладке General указываем имя сертификата, его следует давать осмысленно, чтобы всегда можно было определить какому клиенту принадлежит сертификат. Также следует подумать над сроком действия сертификата, если клиентом будет роутер в удаленном офисе, то можно также выпустить сертификат на 10 лет, а вот если клиентом будет ноутбук сотрудника на испытательном сроке, то лучше выдать его на срок испытательного срока. Выпустить новый сертификат не представляет проблемы, в то время как не отозванный вовремя сертификат может привести к несанкционированному доступу и утечке данных.

На вкладке Key Usage указываем только tls-client и также подписываем сертификат ключом нашего CA. Можно сразу выпустить все необходимые клиентские сертификаты, можно создавать из по мере необходимости.

mikrotik-openvpn-server-007.png

Получение клиентского сертификата в консоли:

/certificate 
add name=mikrotik country="RU" state="31" locality="BEL" organization="Interface LLC" unit="IT" common-name="mikrotik" key-size=2048 days-valid=365 key-usage=tls-client
sign mikrotik ca="ca"

Обратите внимание, в данном случае мы выпустили сертификат со сроком действия в 1 год: days-valid=365.

Если все сделано правильно, то у вас будут следующие сертификаты, обратите внимание, что корневой сертификат должен иметь флаги KLAT, остальные KI:

mikrotik-openvpn-server-008.png

Для использования на клиента нам необходимо экспортировать закрытый ключ и сертификат клиента, а также корневой сертификат центра сертификации. Удобнее всего использовать для этого формат PKCS12, который содержит все необходимые компоненты в одном файле (сертификат, ключ и сертификат CA). Для этого щелкните на нужном сертификате правой кнопкой и выберите Export, в открывшемся окне укажите формат Type — PKCS12 и парольную фразу для экспорта (минимум 8 символов) в поле Export Passphrase. Без указания пароля закрытые ключи выгружены не будут, и вы не сможете использовать такой сертификат для клиента.

mikrotik-openvpn-server-009.png

Либо используйте команды:

/certificate
export-certificate mikrotik type=pkcs12 export-passphrase=12345678

В данном случае мы использовали парольную фразу 12345678. Экспортированные сертификаты можно скачать в разделе Files.

mikrotik-openvpn-server-010.pngКак видим, возможности RouterOS легко позволяют управлять сертификатами без привлечения дополнительных инструментов.

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

Начнем с создания пула адресов для выдачи OpenVPN клиентам, так как назначать адреса вручную во втором десятилетии 21 века — дурной тон. Для этого перейдем в IP — Pool и создадим новый пул: Name — ovpn_pool0 — произвольное имя пула, Addresses — 10.8.8.100-10.8.8.199 — диапазон адресов для выдачи клиентов, также можете выбрать по собственному усмотрению.

mikrotik-openvpn-server-011.pngЭти же действия в консоли:

/ip pool
add name=ovpn_pool0 ranges=10.8.8.100-10.8.8.199

Теперь перейдем в PPP — Profiles и создадим новый профиль. Укажем его имя Name — ovpn, локальный и удаленный адреса: Local Address — 10.8.8.1, Remote Address — ovpn_pool0. На всякий случай напомним, что локальный адрес должен принадлежать той-же /24 сети, что и диапазон пула адресов.

mikrotik-openvpn-server-012.pngБыстро создать профиль в терминале:

/ppp profile
add local-address=10.8.8.1 name=ovpn remote-address=ovpn_pool0

Затем перейдем в PPP — Secrets и убедимся, что включена аутентификация по пользователю. Для этого нажмем PPP Authentication&Accounting, где должен стоять флаг Accounting:

mikrotik-openvpn-server-013.pngХотя гораздо быстрее выполнить команду:

/ppp aaa
set accounting=yes

Здесь же создадим учетные записи для клиентов. Особенностью реализации OpenVPN в RouterOS 6 является обязательное использование аутентификации по имени и паролю. При создании учетной записи указываем ее имя — Name, рекомендуем дать ей то же самое имя, которое вы использовали при создании сертификата, чтобы избежать путаницы. Password — пароль, так как основная аутентификация производится по сертификату особых требований к нему нет. Service — какие службы могут использовать данную учетную запись — ограничиваем только OpenVPN выбрав ovpn, затем указываем созданный нами профиль Profile — ovpn.

mikrotik-openvpn-server-014.png

В терминале для создания учетной записи выполните:

/ppp secret
add name=mikrotik password=123 profile=ovpn service=ovpn

В данном случае мы создали запись для пользователя mikrotik с паролем 123.

После создания пользователей перейдем в PPP — Interface и нажмем на кнопку OVPN Server, в открывшемся окне включим службу установив флаг Enabled, Default Profile — ovpn, в поле Certificate укажем созданный нами сертификат сервера. Для дополнительной безопасности включим Require Client Certificate, в этом случае сервер будет проверять сертификат клиента на принадлежность к цепочке сертификатов локального CA. Затем укажем параметры шифрования: Auth — безальтернативно sha1, Cipher — здесь есть возможность выбора, для роутеров с аппаратной поддержкой AES следует выбирать шифры только из этого семейства, однако чем сильнее шифр — тем больше он нагружает оборудование.

mikrotik-openvpn-server-015.pngВ терминале эти же действия выполняются командами:

/interface ovpn-server server
set auth=sha1 certificate=ovpn-server cipher=aes256 default-profile=ovpn enabled=yes require-client-certificate=yes

Также не забудьте разрешить входящие подключения к вашему OpenVPN серверу. Откроем IP — Firewall и добавим правило: Chain — input, Protocol — tcp, Dst. Port — 1194. Действие можно не указывать, так как по умолчанию применяется accept.

mikrotik-openvpn-server-016.png

В терминале выполните:

/ip firewall filter
add action=accept chain=input dst-port=1194 protocol=tcp

Данное правило должно располагаться выше запрещающего в цепочке INPUT.

mikrotik-openvpn-server-017.pngНа этом настройка OpenVPN сервера на базе роутера Mikrotik закончена.

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

Прежде всего закачаем на устройство файл сертификатов в формате PKCS12, который мы экспортировали на сервере. Для этого перейдем в System — Certificate и воспользуемся кнопкой Import, в открывшемся окне укажем файл сертификата и парольную фразу, которую мы установили при экспорте.

mikrotik-openvpn-server-018.pngВ консоли выполните:

/certificate
import file-name=mikrotik.p12 passphrase=12345678

В результате у вас появятся два сертификата: сертификат клиента с закрытым ключом, о чем говорит флаг KT, и корневой сертификат удостоверяющего центра с флагом LAT (K — означает наличие ключа). Запомним наименование сертификатов, либо переименуем их.

mikrotik-openvpn-server-019.pngЗатем перейдем в PPP — Interface и создадим новый интерфейс типа OVPN Сlient. В поле Connect To указываем адрес или FQDN-имя вашего OpenVPN сервера, Port — 1194, Mode — ip. Ниже указываем учетные данные, созданные для этого пользователя на сервере в полях User и Password, еще ниже указываем параметры шифрования: Auth — sha1, Cipher — аналогично тому, что вы указали на сервере. В поле Certificate выберите сертификат клиента, флаг Verify Server Certificate следует снять.

mikrotik-openvpn-server-020.pngВ терминале следует выполнить:

/interface ovpn-client
add certificate=mikrotik.p12_0 cipher=aes256 connect-to=192.168.3.115 name=ovpn-out1 password=123 user=mikrotik

Если все было сделано правильно, то соединение будет установлено сразу как вы создадите интерфейс.

Чтобы клиенты сети за клиентом имели доступ в сеть за сервером и наоборот необходимо настроить маршрутизацию. Перейдем в IP — Routes и добавим новый маршрут. В поле Dst. Address укажем сеть за сервером, в нашем случае это 192.168.186.0/24, в поле Gateway укажем интерфейс нашего OpenVPN подключения — ovpn-out1.

mikrotik-openvpn-server-021.pngЛибо выполните команду:

/ip route
add distance=1 dst-address=192.168.186.0/24 gateway=ovpn-out1

Теперь перейдем на сервер и посмотрим каким образом выглядит подключение данного клиента. Как видим, был создан динамический интерфейс ovpn-mikrotik, настраивать маршрутизацию с таким интерфейсом нельзя, так как маршрут «сломается» при отключении клиента.

mikrotik-openvpn-server-022.pngПоэтому создадим для этого клиента постоянный интерфейс. Перейдем в Interfaces и создадим новый интерфейс типа OVPN Server Binding. В настройках укажем имя, рекомендуется давать интерфейсам понятные имена, Name — ovpn-mikrotik, в поле User — укажем пользователя, подключение которого будет привязано к этому интерфейсу — mikrotik.

mikrotik-openvpn-server-023.pngЭто же можно сделать командой:

/interface ovpn-server
add name=ovpn-mikrotik user=mikrotik

После чего можно добавить на сервере маршрут к сети за клиентом, настройки здесь аналогичные, Dst. Address — сеть за клиентом, Gateway — интерфейс OpenVPN подключения. В нашем случае 192.168.111.0/24 — сеть за клиентом.

mikrotik-openvpn-server-024.pngВ терминале следует выполнить:

/ip route
add distance=1 dst-address=192.168.111.0/24 gateway=ovpn-mikrotik

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

Настройка стандартного клиента OpenVPN на ПК

Немного изменим задачу, будем считать, что у нас есть ноутбук сотрудника с установленным клиентом OpenVPN, которому необходимо обеспечить доступ в корпоративную сеть через OpenVPN сервер на роутере Mikrotik. Будем считать, что OpenVPN установлен в C:\OpenVPN, а для хранения ключей используется директория C:\OpenVPN\keys.

Прежде всего разместим файл сертификатов в формате PKCS12 в директории для хранения ключей, а также создадим файл с учетными данными C:\OpenVPN\auth.cfg и разместим в нем в разных строках логин и пароль:

win10
123

Где win10 — имя пользователя, 123 — пароль которые мы задали для этой учетной записи на сервере.

Теперь создадим файл C:\OpenVPN\keypass.cfg в котором разместим парольную фразу для сертификата:

12345678

За основу конфигурационного файла мы примем стандартный шаблон client.ovpn, который расположен в C:\OpenVPN\sample-config. Его следует скопировать C:\OpenVPN\config, ниже будут приведены только ключевые опции, а также те, которые мы изменяем или добавляем.

Укажем, что у это клиент, тип туннеля — tun и протокол tcp:

client
dev tun
proto tcp

Адрес и порт сервера:

remote 192.168.3.115 1194

Убедимся в наличии опций:

persist-key
persist-tun

Затем заменим весь блок с указанием путей к ключам и сертификатам:

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

единственной строкой:

pkcs12 C:\\OpenVPN\\keys\\win10.p12

где укажем путь к нашему файлу сертификатов в формате PKCS12.

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

auth-user-pass C:\\OpenVPN\\auth.cfg
askpass C:\\OpenVPN\\keypass.cfg

Проверим наличие опции:

remote-cert-tls server

и закомментируем:

#tls-auth ta.key 1

Сразу добавим маршрут к сети за сервером:

route 192.168.186.0 255.255.255.0 10.8.8.1

Укажем выбранный нами на сервере шифр:

cipher AES-256-CBC

и отключим сжатие:

#comp-lzo

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

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

Данная инструкция также полностью подходит для ПК на Linux, вам потребуется только откорректировать пути в конфигурационном файле и раскомментировать в нем опции:

user nobody
group nogroup

Как видим, настройка OpenVPN сервера на роутерах Mikrotik достаточно проста, но требует учитывать особенности и ограничения реализации этой технологии в RouterOS.

Научиться настраивать MikroTik с нуля или систематизировать уже имеющиеся знания можно на углубленном курсе по администрированию MikroTik. Автор курса, сертифицированный тренер MikroTik Дмитрий Скоромнов, лично проверяет лабораторные работы и контролирует прогресс каждого своего студента. В три раза больше информации, чем в вендорской программе MTCNA, более 20 часов практики и доступ навсегда.

Overview

The OpenVPN security model is based on SSL, the industry standard for secure communications via the internet. OpenVPN implements OSI layer 2 or 3 secure network extensions using the SSL/TLS protocol. 

Introduction

OpenVPN has been ported to various platforms, including Linux and Windows, and its configuration is likewise on each of these systems, so it makes it easier to support and maintain. OpenVPN can run over User Datagram Protocol (UDP) or Transmission Control Protocol (TCP) transports, multiplexing created SSL tunnels on a single TCP/UDP port. OpenVPN is one of the few VPN protocols that can make use of a proxy, which might be handy sometimes.

Limitations

Currently, unsupported OpenVPN features:

  • LZO compression
  • TLS authentication
  • authentication without username/password

OpenVPN username is limited to 27 characters and the password to 233 characters.

OVPN Client

Property Description
add-default-route (yes | no; Default: no) Whether to add OVPN remote address as a default route.
auth (md5 | sha1 | null | sha256 | sha512; Default: sha1) Allowed authentication methods.
certificate (string | none; Default: none) Name of the client certificate
cipher (null | aes128-cbc | aes128-gcm | aes192-cbc | aes192-gcm | aes256-cbc | aes256-gcm | blowfish128; Default: blowfish128) Allowed ciphers. In order to use GCM type ciphers, the «auth» parameter must be set to «null», because GCM cipher is also responsible for «auth», if used.
comment (string; Default: ) Descriptive name of an item
connect-to (IP; Default: ) Remote address of the OVPN server.
disabled (yes | no; Default: yes) Whether the interface is disabled or not. By default it is disabled.
mac-address (MAC; Default: ) Mac address of OVPN interface. Will be automatically generated if not specified.
max-mtu (integer; Default: 1500) Maximum Transmission Unit. Max packet size that the OVPN interface will be able to send without packet fragmentation.
mode (ip | ethernet; Default: ip) Layer3 or layer2 tunnel mode (alternatively tun, tap)
name (string; Default: ) Descriptive name of the interface.
password (string; Default: «») Password used for authentication.
port (integer; Default: 1194) Port to connect to.
profile (name; Default: default) Specifies which PPP profile configuration will be used when establishing the tunnel.
protocol (tcp | udp; Default: tcp) indicates the protocol to use when connecting with the remote endpoint.
verify-server-certificate (yes | no; Default: no)

Checks the certificates CN or SAN against the «connect-to» parameter. The IP or hostname must be present in the server’s certificate.

tls-version (any | only-1.2; Default: any) Specifies which TLS versions to allow
use-peer-dns (yes | no; Default: no) Whether to add DNS servers provided by the OVPN server to IP/DNS configuration.

route-nopull (yes | no; Default: no)

Specifies whether to allow the OVPN server to add routes to the OVPN client instance routing table.
user (string; Default: ) User name used for authentication.

Also, it is possible to import the OVPN client configuration from a .ovpn configuration file. Such a file usually is provided from the OVPN server side and already includes configuration so you need to worry only about a few parameters.

/interface/ovpn-client/import-ovpn-configuration ovpn-password=securepassword \
key-passphrase=certificatekeypassphrase ovpn-user=myuserid skip-cert-import=no 

OVPN Server

An interface is created for each tunnel established to the given server. There are two types of interfaces in the OVPN server’s configuration

  • Static interfaces are added administratively if there is a need to reference the particular interface name (in firewall rules or elsewhere) created for the particular user.
  • Dynamic interfaces are added to this list automatically whenever a user is connected and its username does not match any existing static entry (or in case the entry is active already, as there can not be two separate tunnel interfaces referenced by the same name).

Dynamic interfaces appear when a user connects and disappear once the user disconnects, so it is impossible to reference the tunnel created for that use in router configuration (for example, in the firewall), so if you need a persistent rule for that user, create a static entry for him/her. Otherwise, it is safe to use dynamic configuration.

In both cases PPP users must be configured properly — static entries do not replace PPP configuration.

Properties

Property Description
auth (md5 | sha1 | null | sha256 | sha512; Default: sha1,md5,sha256,sha512) Authentication methods that the server will accept.
certificate (name | none; Default: none) Name of the certificate that the OVPN server will use.
cipher (null | aes128-cbc | aes128-gcm | aes192-cbc | aes192-gcm | aes256-cbc | aes256-gcm | blowfish128; Default: aes128-cbc,blowfish128) Allowed ciphers.
default-profile (name; Default: default) Default profile to use.
enabled (yes | no; Default: no) Defines whether the OVPN server is enabled or not.
protocol (tcp | udp; Default: tcp) indicates the protocol to use when connecting with the remote endpoint.
keepalive-timeout (integer | disabled; Default: 60) Defines the time period (in seconds) after which the router is starting to send keepalive packets every second. If no traffic and no keepalive responses have come for that period of time (i.e. 2 * keepalive-timeout), not responding client is proclaimed disconnected
mac-address (MAC; Default: ) Automatically generated MAC address of the server.
max-mtu (integer; Default: 1500) Maximum Transmission Unit. Max packet size that the OVPN interface will be able to send without packet fragmentation.
mode (ip | ethernet; Default: ip) Layer3 or layer2 tunnel mode (alternatively tun, tap)
netmask (integer; Default: 24) Subnet mask to be applied to the client.
port (integer; Default: 1194) Port to run the server on.
require-client-certificate (yes | no; Default: no) If set to yes, then the server checks whether the client’s certificate belongs to the same certificate chain.
redirect-gateway (def1 | disabled | ipv6; Default: disabled

Specifies what kind of routes the OVPN client must add to the routing table. 

def1 – Use this flag to override the default gateway by using 0.0.0.0/1 and 128.0.0.0/1 rather than 0.0.0.0/0. This has the benefit of overriding but not wiping out the original default gateway.
disabled — Do not send redirect-gateway flags to the OVPN client.
ipv6 — Redirect IPv6 routing into the tunnel on the client side. This works similarly to the def1 flag, that is, more specific IPv6 routes are added (2000::/4 and 3000::/4), covering the whole IPv6 unicast space.

enable-tun-ipv6 (yes | no; Default: no)

Specifies if IPv6 IP tunneling mode should be possible with this OVPN server.

ipv6-prefix-len (integer; Default: 64)

Length of IPv6 prefix for IPv6 address which will be used when generating OVPN interface on the server side.

tun-server-ipv6 (IPv6 prefix; Default: ::)

IPv6 prefix address which will be used when generating the OVPN interface on the server side.

Also, it is possible to prepare a .ovpn file for the OVPN client which can be easily imported on the end device.

/interface/ovpn-server/server/export-client-configuration ca-certificate=myCa.crt \
client-certificate=client1.crt client-cert-key=client1.key server-address=192.168.88.1 

It is very important that the date on the router is within the range of the installed certificate’s date of expiration. To overcome any certificate verification problems, enable NTP date synchronization on both the server and the client.

Example

Setup Overview

Assume that Office public IP address is 2.2.2.2 and we want two remote OVPN clients to have access to 10.5.8.20 and 192.168.55.0/24 networks behind the office gateway. 

Creating Certificates

All certificates can be created on the RouterOS server using the certificate manager. See example >>.

For the simplest setup, you need only an OVPN server certificate.

Server Config

The first step is to create an IP pool from which client addresses will be assigned and some users.

/ip pool add name=ovpn-pool range=192.168.77.2-192.168.77.254

/ppp profile add name=ovpn local-address=192.168.77.1 remote-address=ovpn-pool
/ppp secret
add name=client1 password=123 profile=ovpn
add name=client2 password=234 profile=ovpn

Assume that the server certificate is already created and named «server» 

/interface ovpn-server server set enabled=yes certificate=server

Client Config

Since RouterOS does not support route-push you need to add manually which networks you want to access over the tunnel. 

/interface ovpn-client
add name=ovpn-client1 connect-to=2.2.2.2 user=client1 password=123 disabled=no
/ip route 
add dst-address=10.5.8.20 gateway=ovpn-client1
add dst-address=192.168.55.0/24 gateway=ovpn-client1
/ip firewall nat add chain=srcnat action=masquerade out-interface=ovpn-client1

В данной статье будет рассмотрена очередная разновидность 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 позволяют настроить различные варианты VPN сервисов. В данной инструкции мы рассмотрим настройку OpenVPN. Будет выполнено:

  • Генерирование сертификатов.
  • Настройка сервера OpenVPN.
  • Тестовое подключение к серверу.

Подключение к Mikrotik осуществим при помощи Winbox, однако ход настройки через веб-интерфейс аналогичен.

Настройка времени на Mikrotik
Создание сертификатов
    Средствами Mikrotik
    На компьютере с Windows
Настройка сервера VPN
    Создание пула адресов
    Настройка профиля
    Создание пользователя
    Включение OpenVPN
    Настройка брандмауэра
Настройка клиента
    Создание сертификатов
    Установка и настройка OpenVPN
Доступ в Интернет через VPN-сервер

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

Для правильной работы роутера с сертификатами, необходимо корректно настроенное время. Переходим в SystemClock:

Переходим в System - Clock

Проверяем правильность установки времени и часового пояса.

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

/system ntp client

set enabled=yes primary-ntp=[:resolve time.nist.gov] secondary-ntp=[:resolve time.windows.com]

* в данном примере мы активируем синхронизацию времени с серверами time.nist.gov и time.windows.com.

Создаем сертификаты для OpenVPN

Сертификаты мы можем создать несколькими способами. Разберем два — на роутере Mikrotik и с помощью утилиты на компьютере с Windows.

Способ 1. На Mikrotik’е.

Проще и быстрее всего сгенерировать сертификаты на самом роутере.

1. Открываем терминал и создаем последовательность для центра сертификации:

> /certificate add name=template-ca country=»RU» state=»Sankt-Petersburg» locality=»Sankt-Petersburg» organization=»Organization» unit=»DMOSK» common-name=»CA» key-size=2048 days-valid=3650 key-usage=crl-sign,key-cert-sign

> /certificate sign template-ca ca-crl-host=127.0.0.1 name=»ca»

* первая команда создает файл-шаблон запроса, на основе которого мы генерируем сертификаты второй командой. В шаблоне мы указываем опции для сертификата — так как сам сертификат самоподписанный, можно указать любые значения и это никак не отразится на его использовании (стоит только указать корректные значения для стойкости шифрования key-size и срока действия сертификата days-valid).

2. Генерируем сертификат сервера OpenVPN:

> /certificate add name=template-server country=»RU» state=»Sankt-Petersburg» locality=»Sankt-Petersburg» organization=»Organization» unit=»DMOSK» common-name=»SERVER» key-size=2048 days-valid=3650 key-usage=digital-signature,key-encipherment,tls-server

> /certificate sign template-server ca=»ca» name=»server»

* как и в примере выше, мы сначала создали файл запроса и на его основе — сам сертификат. В качестве центра сертификации мы указываем созданный ранее сертификат ca.

Способ 2. На Windows.

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

Нам нужно будет установить утилиту для генерирования сертификатов, создать их и скопировать на роутер.

Генерация сертификатов

И так, заходим на сайт OpenVPN и переходим на страницу загрузки. Скачиваем openvpn-install для нашей операционной системы, например, Windows 7 или 10:

Загрузка OpenVPN клиента

Запускаем установку клиента — снимаем все галочки, оставляем EasyRSA 2 Certificate Management Scripts:

Установка клиента OpenVPN

Завершаем установку. После чего в папке C:\Program Files\OpenVPN\easy-rsa создаем файл vars.bat со следующим содержимым:

set «PATH=%PATH%;%ProgramFiles%\OpenVPN\bin»
set HOME=%ProgramFiles%\OpenVPN\easy-rsa
set KEY_CONFIG=openssl-1.0.0.cnf
set KEY_DIR=keys
set KEY_SIZE=2048
set KEY_COUNTRY=RU
set KEY_PROVINCE=Sankt-Petersburg
set KEY_CITY=Sankt-Petersburg
set KEY_ORG=Organization
set KEY_EMAIL=master@dmosk.ru
set KEY_CN=DMOSK
set KEY_OU=DMOSK
set KEY_NAME=server.domain.ru
set PKCS11_MODULE_PATH=DMOSK
set PKCS11_PIN=12345678

* где для нас имеют значение:

  • HOME оставляем, если не меняли путь установки программы по умолчанию.
  • KEY_DIR — каталог, куда будут генерироваться сертификаты.
  • KEY_CONFIG может быть разным — его лучше посмотреть в файле vars.bat.sample или по названию соответствующего файла в папке easy-rsa.
  • KEY_NAME желательно, чтобы соответствовал полному имени VPN-сервера; остальные опции можно заполнить произвольно.
  • опции KEY_COUNTRY, KEY_PROVINCE, KEY_CITY, KEY_ORG, KEY_EMAIL, KEY_CN, KEY_OU — атрибуты для сертификата. Их можно оставить, как в данном примере или задать свои собственные.

В этой же папке C:\Program Files\OpenVPN\easy-rsa создаем каталог keys — в нем будут создаваться сертификаты.

Запускаем командную строку от имени администратора:

Запускаем командную строку от администратора, чтобы сгенерировать сертификат

Переходим в каталог easy-rsa:

cd %ProgramFiles%\OpenVPN\easy-rsa

Запускаем vars.bat:

vars.bat

Чистим каталоги от устаревшей информации:

clean-all.bat

Снова запускаем vars.bat (после clean переопределяются некоторые переменные):

vars.bat

Теперь генерируем последовательность центра сертификации:

build-ca.bat

На все запросы нажимаем Enter (по умолчанию, будут подставлены значения, которые мы указали в файле vars.bat).

Генерируем сертификат для сервера:

build-key-server.bat server

* где server — имя сертификата; на все запросы нажимаем Enter. В конце подтверждаем два раза корректность информации вводом y.

Готово — в каталоге C:\Program Files\OpenVPN\easy-rsa\keys мы найдем 3 сертификата — ca.crt, server.crt. server.key:

Запускаем командную строку от администратора, чтобы сгенерировать сертификат

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

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

Заходим в настройки роутера — переходим в раздел Files — кликаем по Upload и выбираем наши 3 сертификата:

Загрузка сертификатов на Mikrotik

Кликаем по OK. Нужные нам файлы окажутся на роутере.

Переходим в SystemCertificates:

Переходим к сертификатам в микротике

Кликаем по Import:

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

… и по очереди импортируем:

  1. ca.crt
  2. server.crt
  3. server.key

* импорт делаем именно в такой последовательности.

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

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

1. Создаем пул IP-адресов

Пул адресов нужен для выдачи клиентам сетевых адресов. Для его настройки переходим в IPPool:

Переходим в IP - Pool

Переходим к добавлению нового пула:

Добавляем новый пул

Введем настройки для нашего пула:

Настройка пула адресов для OpenVPN

* где Name просто указывает название для идентификации пула (openvpn); Addresses — стартовый и конечный адреса, которые будет назначаться клиентам при подключении к VPN. В данном примере мы указываем последовательность от 176.16.10.10176.16.10.250.

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

В профиле мы задаем настройки IP-адреса интерфейса для VPN и ранее созданный пул.

Переходим в PPP — открываем вкладку Profiles — создаем новый профиль — указываем название для профиля, IP-адрес сервера VPN и пул, из которого будут выдаваться IP-адреса клиентам — OK:

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

* как видим, мы указали название профиля profile-openvpn, выбрали наш пул openvpn и назначили адрес 176.16.10.1 для сервера.

3. Создание пользователя

Для каждого, кто будет подключаться к VPN необходимо создать свою учетную запись. В том же PPP переходим на вкладку Secrets — создаем нового пользователя — задаем ему имя, пароль, указываем сервис ovpn и выбираем профиль, из которого пользователю будет назначен адрес при подключении — нажимаем OK:

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

* мы создадим учетную запись client1 для сервиса ovpn и профиля, созданного нами ранее.

4. Включаем и настраиваем сервер OpenVPN

Для включение сервиса OpenVPN в том же PPP переходим на вкладку Interface — кликаем по кнопке OVPN Server — включаем сервис (Enabled) и задаем настройки — кликаем по OK:

Включение OpenVPN на Mikrotik

* в данном примере примененные настройки пометились синим цветом. Мы указали профиль для PPP (profile-openvpn), выбрали сертификат сервера (server), включили требование клиентского сертификата (Require Client Certificate) и расширили число алгоритмов для шифрования.

5. Настройка брандмауэра

Мы активировали наш сервер OVPN на порту 1194 и нам нужно открыть данный порт на фаерволе. Переходим в раздел IPFirewall:

Переходим к настройке брандмауэра

На вкладке Filter Rules создаем новое правило:

Настройка правила на брандмауэре для разрешения порта 1194

* мы должны выбрать для ChainInput, указать протокол (tcp) и задать порт, на котором слушает сервер OpenVPN (1194).

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

OpenVPN сервер готов к работе.

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

Теперь убедимся, что наш серер работает. Настроим клиентское подключение с компьютера на Windows. Для этого необходимо сгенерировать клиентские сертификаты и настроить клиентское подключение.

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

Ранее мы рассмотрели 2 способа создания сертификатов для сервера — рассмотрим также два способа и для клиентов.

Способ 1. С помощью консоли на Mikrotik

В консоли на роутере создаем общий шаблон, на основе которого будем генерировать все сертификаты для клиентов:

/certificate add name=template-clients country=»RU» state=»Sankt-Petersburg» locality=»Sankt-Petersburg» organization=»Organization» unit=»DMOSK» common-name=»clients-template» key-size=2048 days-valid=3650 key-usage=tls-client

Теперь создадим сертификат для первого клиента:

/certificate add name=template-client-to-issue copy-from=»template-clients» common-name=»client1″

/certificate sign template-client-to-issue ca=»ca» name=»client1″

* принцип, во многом, схож с процессом создания ключенй для сервера.

Для создания сертификата второго клиента вводим:

/certificate add name=template-client-to-issue copy-from=»template-clients» common-name=»client2″

/certificate sign template-client-to-issue ca=»ca» name=»client2″

… и так далее.

После экспортируем сертификаты:

/certificate export-certificate ca export-passphrase=»»

/certificate export-certificate client1 export-passphrase=12345678

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

Теперь переходим в раздел Files и скачиваем сертификат для ca и клиентов:

Загрузка экспортированных сертификатов

После переименовываем их в client1.crtclient1.keyca.crt.

Способ 2. На Windows

Снова запускаем от администратора командную строку. Переходим в каталог easy-rsa:

cd %ProgramFiles%\OpenVPN\easy-rsa

Запустим скрипт vars.bat:

vars.bat

Создадим сертификат для первого пользователя:

build-key.bat client1

* на все запросы наживаем Enter, кроме Common Name — в данном поле вводим имя клиента (в нашем случае, просто client1). В конце подтверждаем введенную информацию — y.
** На каждого клиента нужно сгенерировать свой сертификат, в противном случае, могут быть проблемы идентификации клиентов с последующей выдачей одинаковых IP.

Теперь из папки keys копируем файлы client1.crtclient1.keyca.crt и переносим их на клиентский компьютер.

2. Установка и настройка OpenVPN

Рассмотрим конфигурирование клиента для Windows и Linux. Подробнее процесс описан в статье Настройка OpenVPN клиента — в ней можно найти подробное описание опций настройки, а также пример конфигурирования клиента на Android.

Windows

Заходим на сайт OpenVPN и переходим на страницу загрузки. Скачиваем openvpn-install для нашей операционной системы:

Загрузка OpenVPN клиента

Запускаем установку клиента — оставляем галочки, как есть. Продолжаем установку и дожидаемся ее окончания.

Открываем текстовый редактор и создаем конфиг:

client
dev tun
proto tcp
remote xxx.xxx.xxx.xxx 1194
auth-nocache
ca ca.crt
cert client1.crt
key client1.key
remote-cert-tls server
cipher AES-256-CBC
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
auth-nocache
auth-user-pass
route 192.168.0.0 255.255.255.0

* в данном конфиге нас интересуют опции:

  • remote — адрес нашего VPN-сервера; 
  • cert и key — имена файлов с сертификатами; 
  • route — адрес маршрута для доступа к локальной сети, которая находится за роутером и куда нужно пустить пользователей.

* подробнее опции описаны в инструкции Настройка OpenVPN клиента.

Сохраняем файл с настройками в каталоге C:\Program Files\OpenVPN\config (или другом, где установлен клиент). В этот же каталог поместим наши сертификаты.

Запускаем OpenVPN GUI от имени администратора — в правом нижнем углу появится иконка программы:

После запуска программы ее значок появится в правом нижнем углу

Кликаем по ней правой кнопкой мыши и выбираем Подключиться:

Подключаемся к OpenVPN серверу

Программа попросит нас авторизоваться — вводим логин и пароль, созданные ранее на роутере (client1); после мы должны будем ввести пароль для сертификата — вводим тот, что использовали при выгрузке.

Дожидаемся подключения — значок должен стать зеленым:

Подключенный к серверу клиент OpenVPN

Если мы хотим запускать клиента без пароля (без необходимости его вводить), в конфиге правим опцию auth-user-pass на:


auth-user-pass auth.txt

Создаем текстовый файл auth.txt в той же папке, где находится файл конфигурации со следующим содержимым:

username
password

* где username — логин пользователя, а password — пароль.

Linux

Приведем примеры установки клиента для систем на базе deb и RPM.

а) на deb (Debian, Ubuntu, Mint):

apt-get install openvpn

б) на RPM (Red Hat, CentOS, Fedora):

yum install epel-release

yum install openvpn

После установки клиента создаем конфигурационный файл:

vi /etc/openvpn/client.conf

client
dev tun
proto tcp
remote xxx.xxx.xxx.xxx 1194
auth-nocache
ca ca.crt
cert client1.crt
key client1.key
remote-cert-tls server
cipher AES-256-CBC
resolv-retry infinite
nobind
persist-key
persist-tun
verb 3
auth-nocache
auth-user-pass
route 192.168.0.0 255.255.255.0

Также в каталог /etc/openvpn копируем сертификаты.

Выполняем подключение:

openvpn —config /etc/openvpn/client.conf

Доступ в Интернет через VPN-сервер

Если нам нужно, чтобы все запросы, в том числе, к Интернет проходили через сервер VPN, в конфигурационном файле клиента добавим:

route 0.0.0.0 0.0.0.0

Переподключаемся к серверу VPN.

OpenVPN – полнофункциональная реализация VPN с открытым исходным кодом и поддержкой SSL. В данной статье рассмотрим пример как развернуть такой сервер силами RouterOS на MikroTik.

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

В RouterOS версии 6 поддержка OpenVPN реализована только с использованием TCP, когда в RouterOS 7 можно уже использовать UDP.

Данная инструкция по развертыванию сервера OpenVPN будет в целом одинаковой как для RouterOS 6, так и для RouterOS 7, за тем исключением, что в RouterOS 7 мы будем использовать UDP порт для подключения.

Шаг 1. Генерация сертификатов

Самое первое, что нам нужно сделать перед настройкой – это сгенерировать на микротике корневой сертификат, сертификат сервера и клиентский сертификат.

Начинаем с корневого сертификата. Переходим в WinBox в System – Certificates, нажимаем плюсик.

В строке Name пишем имя сертификата, например ,”ca_mikrotik”, повторяем имя в строке Common name. Можно заполнить остальные строки, однако это не обязательно. В строке Days Valid указываем срок действия сертификата, по умолчанию 365 дней, я рекомендую увеличить до 3650 (10 лет).

Переходим на вкладку Key Usage и ставим галочки crl sign и key cert. sign.

Нажимаем ОК, корневой сертификат создан, но он пока не подписан.

Теперь нам необходимо его подписать вашим микротиком, для этого кликаем два раза по созданному сертификату, нажимаем справа кнопку Sign и в появившемся окне, в строке CA CRL Host, вводим адрес localhost микротика, после чего нажимаем кнопку Start.

Когда в строке Progress появится надпись done – закрываем оба окна, видим, что сертификат теперь имеет флаги KLAT.

Флаги KLAT означают следующее:

  • K (private-key) – сертификат имеет связанный с ним закрытый ключ.
  • L (crl) – корневой сертификат содержит адрес списка отозванных сертификатов (CRL).
  • А (authority) – корневой сертификат при помощи которого мы можем подписывать другие сертификаты.
  • T (trusted) – сертификат с которым установлены доверительные отношения.

Теперь создадим сертификат и закрытый ключ OpenVPN-сервера. Нажимаем плюсик и задаем имя сертификату, например, “openvpn_server”, так же продублируем имя в Common Name, срок действия сертификата так же сделаем 3650 дней.

Переходим на вкладку Key Usage и отмечаем галочки digital-signature, key-encipherment и tls-server.

Нажимаем ОК, сертификат сервера создан. Теперь нам необходимо подписать его корневым сертификатом, который мы до этого создали.

Для подписания сертификата сервера, кликаем по нему два раза, справа нажимаем кнопку Sign и в появившемся окне выбираем ваш CA – ca_mikrotik, после чего нажимаем Start.

Дожидаемся сообщения done, после чего видим, что сертификат сервера получил флаги KI.

Флаги KI говорят нам о том, что сертификат имеет связанный с ним закрытый ключ и выпущен центром сертификации расположенном на данном устройстве.

Теперь создадим сертификат для клиента, который будет подключаться к OpenVPN-серверу. Нажимаем плюсик, как в предыдущих случаях в полях Name и Common Name пишем имя, например, “ovpn_client” , ставим срок действия 3650 дней.

На вкладке Key Usage ставим галочку tls client, нажимаем ОК.

Далее, как в предыдущих шагах, подписываем сертификат клиента вашим корневым сертификатом. После подписания сертификат клиента должен получить такие же флаги, как и сертификат сервера – KI.

Сертификаты готовы.

Шаг 2. Создание профиля и пользователя для OpenVPN

Перед созданием профиля нам необходимо создать пул IP-адресов, которые сервер будет назначать своим клиентам. Для этого переходим в IP – Pool и добавляем новый пул, назовем его “ovpn_pool”.

Теперь придумаем подсеть, которая будет использоваться для соединений внутри OpenVPN. Она не должна пересекаться с вашей локальной подсетью, поэтому если у вас подсеть имеет вид 192.168.0.0/24, то для OpenVPN лучше будет выделить подсеть 10.10.0.0/24.

Адрес 10.10.0.1 зарезервируем для самого OpenVPN-сервера, а диапазон 10.10.0.10-10.10.0.100 пропишем в пул.

Нажимаем ОК, пул создан.

Теперь нажимаем в WinBox кнопку PPP и переходим на вкладку Profiles. Нажимаем плюсик, пишем имя создаваемого профиля, например, “main_ovpn”, в поле Local Address указывает IP-адрес 10.10.0.1, в поле Remote Address указываем созданный нами пул.

Нажимаем ОК, профиль создан.

Теперь в этом же окне перейдем на вкладку Secrets и нажмем на кнопку PPP Authentication&Accounting и убедимся, что у нас стоит галочка Accounting.

Если галочка стоит – все хорошо, закрываем данное окно, если не стоит – поставим и нажмем ОК.

На этой же вкладке нажимаем плюсик, откроется окно создания нового пользователя. Указываем имя пользователя, которое будет использоваться для подключения к серверу, пароль, в строке Service выбираем ovpn, в строке Profile выбираем созданный нами профиль.

Нажимаем ОК, пользователь создан.

Шаг 3. Настройка сервера OpenVPN

Далее переходим на вкладку Interfaces и нажмем на кнопку OVPN Server. Необходимо поставить галочку Enabled, это активирует ваш OpenVPN-сервер, далее в строке Certificate выбираем сертификат вашего сервера, ниже проставляем галочки – Require Client Certificate и ниже sha1 и aes256.

В RouterOS 7 на этом этапе можно выбрать порт для OpenVPN – TCP или UDP, я рекомендую использовать UDP.

В RouterOS 6 выбора нет, только TCP. Нажимаем ОК.

Теперь необходимо настроить файрволл, чтобы он пропускал трафик до вашего сервера OpenVPN. Для этого в файрволле создаем разрешающее правило input, укажем тип порта (tcp или udp, в зависимости какой используете), в строке Dst. Port пишем 1194, в строке In. Interface выбираете ваш WAN-порт, или настроенное подключение к интернету (L2TP, PPPoE и т.д.). Теперь это правило надо разместить выше всех запрещающих правил. Файрволл для пропуска трафика в OpenVPN настроен.

Шаг 4. Экспорт сертификатов

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

Переходим в System – Certificates. Щелкаем правой кнопкой мыши на корневой сертификат и выбираем в контекстном меню Export. Вводим имя файла сертификата, можно так же указать “ca_mikrotik” и нажимаем Export.

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

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

Шаг 5. Создание файла конфигурации для подключения к серверу

Теперь нам нужно подготовить шаблон для создания файла конфигурации, вот какой он имеет вид:

client
dev tun
proto tcp
remote 0.0.0.0 1194
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
verb 3
route-delay 5
cipher AES-256-CBC
auth SHA1
auth-user-pass
route 192.168.0.0 255.255.255.0 vpn_gateway
<ca>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</ca>
<cert>
-----BEGIN CERTIFICATE-----
-----END CERTIFICATE-----
</cert>
<key>
-----BEGIN ENCRYPTED PRIVATE KEY-----
-----END ENCRYPTED PRIVATE KEY-----
</key>

В текстовом редакторе создаем новый документ, вставляем в него содержимое, указанное выше.

Далее открываем корневой сертификат в текстовом редакторе и вставляем его содержимое между тегами <ca> и </ca>.

Содержимое клиентского сертификата вставляем между тегами <cert> и </cert>.

Содержимое ключа клиентского сертификата вставляем между тегами <key> и </key>.

Так же обратим внимание на следующие строки:

remote 0.0.0.0 1194 Здесь вместо четырех нулей нужно указать внешний IP-адрес вашего микротика.
proto tcp Устанавливает тип порта, использующегося для подключения к OpenVPN. Выбираете TCP или UDP, в зависимости от ваших настроек.
route 192.168.0.0 255.255.255.0 vpn_gateway Здесь вместо указанных сетевых параметров необходимо прописать параметры вашей сети, к которой будет осуществляться доступ через OpenVPN.

Сохраняем конфигурацию в файл с расширением .ovpn и пробуем импортировать ее в приложение OpenVPN Connect и произвести подключение.

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

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

Клиентский сертификат можно использовать один для нескольких пользователей, или для каждого пользователя создавать свой.

На этом настройка сервера OpenVPN в RouterOS завершена.

  • Настройка openvpn на роутере dd wrt
  • Настройка openvpn сервера на роутере asus
  • Настройка openvpn на роутере tp link archer c6
  • Настройка ntp сервера на роутере asus
  • Настройка openvpn клиента на роутере mikrotik