- Поднимаем на Mikrotik OpenVPN сервер
- Что нужно знать до установки OpenVPN на Mikrotik
- Установка сервера OpenVPN на Mikrotik
- Подготовка Mikrotik
- Часовой пояс
- Синхронизация времени
- Создание сертификатов
- Корневой сертификат CA
- Сертификат для OpenVPN сервера Mikrotik
- Сертификат для клиента
- Экспортируем сертификат пользователя
- Настройка OpenVPN сервера
- Назначаем IP-адреса для OpenVPN
- Диапазон адресов
- Статические адреса
- Создаем профиль пользователей
- Создаем пользователей
- Запуск OpenVPN-сервера
- Открываем порт для OpenVPN
- Настройка клиентов
- Проблемы
- duplicate packet, dropping
- Комментарии
- Manual:Interface/OVPN
- Contents
- Summary
- OVPN Client
- Properties
- Quick example
- OVPN Server
- Server configuration
- Monitoring
- Application Examples
- Setup Overview
- Creating Certificates
- Server Config
- Client Config
Поднимаем на Mikrotik OpenVPN сервер
OpenVPN — это одна из самых современных технологий VPN на сегодняшний день. Основное достоинство OpenVPN — это бесперебойная работа вне зависимости от качества канала интернет и заблокированных портов провайдерских маршрутизаторов. OpenVPN это своего рода «танк», который работает несмотря ни на что.
Поднимем сервер OpenVPN на маршрутизаторе Mikrotik любой модели. Самое главное, чтобы была RouterOS.
Что нужно знать до установки OpenVPN на Mikrotik
В Mikrotik OpenVPN немного урезан. Главные особенности:
- нет поддержки UDP . Только TCP ;
- нет LZO -компрессии;
По слухам, разработчики Mikrotik не хотят добавлять эти пункты, так как компания настаивает на использовании SSTP . По другим слухам UDP и LZO добавят в RouterOS 7.x.
Установка сервера OpenVPN на Mikrotik
Подготовка Mikrotik
Любой OpenVPN сервер требует точного времени всех узлов сети. Нужно настроить синхронизацию времени как клиента, так и сервера. Если синхронизация времени на всех десктопных операционных системах работает из коробки, то Mikrotik, на котором будет установлен OpenVPN сервер, нуждается в дополнительной настройке.
Часовой пояс
Первым делом устанавливаем правильный часовой пояс. Для этого нужно перейти в System — Clock и указать часовой пояс.
Синхронизация времени
Указываем NTP -сервера для синхронизации времени:
Сами адреса можно взять отсюда – www.ntp-servers.net
В примере используются эти:
Через консоль это будет выглядеть так:
Создание сертификатов
Нам нужно создать минимум 3 сертификата:
- самоподписанный корневой сертификат для центра сертификации;
- сертификат для нашего роутера Mikrotik, который выступает OpenVPN-сервером;
- сертификат для клиента.
Для клиентов можно выпустить требуемое количество сертификатов.
Позднее, если потребуется вынести OpenVPN-сервер на другое устройство, их с легкостью можно перенести.
Корневой сертификат CA
Создаем корневой сертификат для нашего центра сертификации. Переходим в System — Certificate
- Name и Common Name — название, которое обычно именуется ca;
- Country, State, Locality, Organization — это произвольные поля, которые заполняются для удобства опознавания сертификатов в будущем;
- Days Valid — это время действия сертификата. Ставим 3650 дней = 10 лет.
На вкладке Key Usage отмечаем только:
Нажимаем кнопку Apply и затем Sign. В поле CA CRL Host указываем сами на себя – 127.0.0.1. Для запуска генерации сертификата, кликаем на Start. После окончания закрываем все окна.
Сертификат для OpenVPN сервера Mikrotik
Создание всех сертификатов очень похожи между собой. Для сертификата сервера OpenVPN Mikrotik, в полях Name и Common Name указываем ovpn-serv, а на вкладке Key Usage выбираем:
- digital signature;
- key encipherment;
- tls server.
Нажимаем кнопку Apply и затем Sign. В поле CA выбираем – ca. Для запуска генерации сертификата, кликаем на Start. После окончания закрываем все окна.
Сертификат для клиента
Настало время выпускать клиентские сертификаты. Процедура та же самая. На вкладке Key Usage выбираем:
Нажимаем кнопку Apply и затем Sign. В поле CA выбираем – ca. Для запуска генерации сертификата, кликаем на Start. После окончания закрываем все окна.
В результате у нас должно получиться минимум 3 сертификата:
Если у Вас будет больше клиентов, то сертификатов будет больше.
Можно выпустить 1 клиентский сертификат и раздать всем пользователям OpenVPN сервера на Mikrotik. Это будет работать, но так делать не нужно. В случае, если Вам нужно будет отозвать один из клиентских сертификатов для уволенного сотрудника, то сделать это будет невозможно. У вас останется возможность только заблокировать учетную запись.
Экспортируем сертификат пользователя
Для экспорта клиентских сертификатов лучше всего использовать формат PKCS12, так как в результате вы получите 1 файл, который проще передать пользователю. Если нужно настроить подключение на телефонах с Android или IOS , то лучше экспортировать в формате PEM , так как далее нужно будет объединять сертификаты в конфигурационный файл.
Если использовать «устаревший» формат PEM , то будет 2 файла:
- user1.crt – открытая часть ключа пользователя;
- user1.key – закрытая часть ключа пользователя.
К ним нужно будет экспортировать корневой сертификат ca.crt. Без него работать не будет.
При формате PKCS12 файл всего один. Разница между PKCS12 и PEM только в удобстве.
При экспорте обязательно указываем 8-значный пароль. Если этого не сделать, в файл при экспорте не добавится закрытая часть ключа и пользоваться будет невозможно.
Через консоль с паролем 12345678:
Настройка OpenVPN сервера
Назначаем IP-адреса для OpenVPN
Всем подключаемым пользователям необходимо назначить IP-адрес. Сделать это можно либо вручную, либо автоматически используя DHCP . В большинстве случаев используйте второй вариант.
Диапазон адресов
Для автоматической выдачи адресов vpn-клиентам достаточно создать pool-адресов. Для этого переходим в раздел IP — Pool .
Статические адреса
В исключительных случаях нужно выдать статический IP-адрес. Сделать это можно в разделе PPP — Secret при создании пользователей:
- Local Address — адрес Mikrotik;
- Remote Address — статический адрес клиента.
Более подробнее о создании пользователей пойдет ниже.
Создаем профиль пользователей
Профили в Mikrotik позволяют облегчить дальнейшее добавление пользователей. В профиле можно указать общие параметры для всех пользователей. Это избавит от необходимости указывать одни и те же данные для каждого пользователя отдельно.
В разделе PPP — Secret переходим на вкладку Profiles и создаем новый профиль.
На вкладке General:
- Name — название профиля;
- Local Address — адрес Mirotik;
- Remote Address — созданный ранее pool для OpenVPN. Если подразумевается использовать статические IP, то поле оставляем незаполненным;
- Bridge — выбираем мост сети;
- Change TCP MSS = yes — автоматическая подстройка размера MSS ;
- Use UPnP = no — автоматическая настройка сетевых устройств;
На вкладке Protocols:
- Use MPLS = yes — передача пакетов с помощью меток. В теории ускоряет прохождение пакетов между маршрутизаторами;
- Use Compression = yes — компрессия Mikrotik;
- Use Encryption = yes — базовое щифрование.
На вкладке Limits:
- Only One = yes — указываем для монопольного входа пользователей.
Создаем пользователей
В разделе PPP — Secret нужно включить возможность аутентификации по пользователю. Для этого кликаем на кнопку PPP Authentication&Accounting и проверяем, чтобы была установлена галочка напротив Accounting.
Делаем через консоль:
После этого можно приступать к созданию пользователей:
- Name — имя клиента (только латинские буквы и цифры, спец. символы не всегда работают корректно);
- Password — пароль. Пароль, после создания пользователя, будет скрыт звездочками, но есть способ узнать пароль MikroTik;
- Service = ovpn — сервис, указав который ограничиваем возможность подключения только к OpenVPN;
- Profile = ovpn — созданный ранее профиль;
- Remote Address — статический адрес. Если это не требуется, оставляем поле пустым.
Тоже самое можно сделать через консоль:
Запуск OpenVPN-сервера
В разделе PPP — Interface кликаем на кнопке OVPN Server и настраиваем как на скриншоте:
- Default Profile = ovpn — созданный профиль;
- Certificate = ovpn-serv — выбираем сертификат, который создавали для сервера;
- Require Client Certificate — обязательное наличие сертификата при авторизации;
- Auth = sha1 — хеширование пароля при его первой передаче по незащищенному каналу при аутентификации;
- Cipher = aes 256 — шифрование передачи данных.
И не забываем поставить галочку напротив Enabled, чтобы включить сервер.
Открываем порт для OpenVPN
В разделе IP — Firewall на первой вкладке Filter Rules добавляем новое правило:
- Chain = input — так как мы хотим дать доступ извне к самому маршрутизатору, то выбираем цепочку input;
- Protocol = 6 (tcp) — протокол TCP , так как только этот протокол поддерживает Mikrotik для OpenVPN;
- Dst.Port = 1194 — удаленный порт, который будет открыт на маршрутизаторе.
Настройка клиентов
Более подробнее о настройке клиентов на разных ОС можно прочитать здесь:
Проблемы
duplicate packet, dropping
Сама фраза в log`ах duplicate packet, dropping не является ошибкой, если при этом происходит подключение.
Если подключение не происходит, причина чаще всего в несоответствии логина или пароля. Подробнее нужно смотреть логи клиента.
Комментарии
- Денис Юрьевич прокомментировал MultiKey не устанавливается, отозван сертификат
- Павел Urman прокомментировал Как закрыть крышку часов Tissot?
- AdminWay прокомментировал kernel_task грузит проц на 100% на MacOS BigSur
- Лев прокомментировал kernel_task грузит проц на 100% на MacOS BigSur
- AdminWay прокомментировал kernel_task грузит проц на 100% на MacOS BigSur
Увидеть скрытые пароли PPP-Secret в MikroTik
Проброс портов 4G-модема Yota на Mikrotik с подключенной услугой «Статический IP»
Объединение сертификаторов и файла авторизации в конфигурационный файл клиента OpenVPN
Поднимаем сервер DHCP на Cisco 3750
Как использовать Li-ion батарейку правильно?
Если Вы используете материал моего блога, то будьте добры поставьте ссылку.
Источник
Manual:Interface/OVPN
Applies to RouterOS: v5+
Contents
Summary
Currently unsupported OpenVPN features:
- UDP mode
- LZO compression
- TLS authentication
- authentication without username/password
Note: OpenVPN username is limited to 27 characters and password to 233 characters
OVPN Client
Sub-menu: /interface ovpn-client
Properties
Property | Description |
---|---|
add-default-route (yes | no; Default: no) | Whether to add OVPN remote address as a default route. |
auth (md5 | sha1; Default: sha1) | Allowed authentication methods. |
certificate (string | none; Default: none) | Name of the client certificate imported into certificate list. |
cipher (aes128 | aes192 | aes256 | blowfish128; Default: blowfish128) | Allowed ciphers. |
comment (string; Default: ) | Descriptive name of an item |
connect-to (IP; Default: ) | Remote address of the OVPN server. |
disabled (yes | no; Default: yes) | Whether interface is disabled or not. By default it is disabled. |
mac-address (MAC; Default: ) | Mac address of OVPN interface. Will be auto generated if not specified. |
max-mtu (integer; Default: 1500) | Maximum Transmission Unit. Max packet size that 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) | Used PPP profile. |
user (string; Default: ) | User name used for authentication. |
Quick example
This example demonstrates how to set up OVPN client with username «test», password «123» and server 10.1.101.1
OVPN Server
Sub-menu: /interface ovpn-server
This sub-menu shows interfaces for each connected OVPN clients.
An interface is created for each tunnel established to the given server. There are two types of interfaces in 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 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.
Note: in both cases PPP users must be configured properly — static entries do not replace PPP configuration.
Server configuration
Sub-menu: /interface ovpn-server server
Property | Description |
---|---|
auth (sha1 | md5; Default: sha1,md5) | Authentication methods that server will accept. |
certificate (name | none; Default: none) | Name of the certificate that OVPN server will use. |
cipher (aes128 | aes192 | aes256 | blowfish128; Default: aes128,blowfish128) | Allowed ciphers. |
default-profile (name; Default: default) | Default profile to use. |
enabled (yes | no; Default: no) | Defines whether OVPN server is enabled or not. |
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 has came for that period of time (i.e. 2 * keepalive-timeout), not responding client is proclaimed disconnected |
mac-address (MAC; Default: ) | Auto Generated MAC address of the server. |
max-mtu (integer; Default: 1500) | Maximum Transmission Unit. Max packet size that 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 client. |
port (integer; Default: 1194) | Port to run server on. |
require-client-certificate (yes | no; Default: no) | If set to yes, then server checks whether client’s certificate belongs to the same certificate chain. |
Warning: 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 server and client.
Monitoring
Monitor command can be used to monitor the status of the tunnel on both client and server.
Property | Description |
---|---|
status ( ) | Current status. Value other than «connected» indicates that there are some problems establishing tunnel. |
uptime (time) | Elapsed time since tunnel was established. |
idle-time (time) | Elapsed time since last activity on the tunnel. |
user (string) | Username used to establish the tunnel. |
mtu (integer) | Negotiated and used MTU |
caller-id (IP:ID) | Source IP and Port of client. |
Application Examples
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 office gateway.
Creating Certificates
All certificates can be created on RouterOS server using certificate manager. See example >>.
For simplest setup you need only ovpn server certificate.
Server Config
First step is to create ip pool from which client addresses will be assigned and some users
Assume that server certificate is already created and named «server»
Client Config
Since RouterOS does not support route-push you need to add manually which networks you want to access over the tunnel.
Источник