UNIXAWESOME

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

April 24, 2021

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

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

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

Можно использовать сторонные средства для создания ключей и сертификатов, например Easy-RSA, но я буду это делать средствами роутера Mikrotik.

Заходим System > Certificates
Создаём корневой сертификат нашего центра сертификации (СА).

Поля которые обязательно заполнить выделены красным цветом, а зелёным которые желательно.
Name - Имя нашего сертификата. Обычно делают одинаковыми с Common Name
Common Name - Имя нашего центра сертификации
Key size - Размер ключа. Больше - лучше, но и соответственно нагрузка на железо больше.
Days Valid - Срок действия

Дальше во вкладке Key Usage отмечаем crl sign и key cert. sign и нажимаем Apply
Потом подписываем наш сертификат нажав Sign. В окне которое появится заполняем CA CRL Host

CA CRL Host - нужно указать IP адрес по которому будем доступен наш VPN сервер, или даже лучше если у вас есть доменное имя, которое ссылается на этот IP.

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

Добавляем ещё один сертификат. Во вкладке General, заполняем поля как и для CA сертификата, только меняем Name и Common Name

Переходим во вкладку Key Usage
Отмечаем digital signature, key encipherment и tls server. Нажимаем Apply и Sign, в поле CA выбираем созданный ранее наш сертификат и жмём кнопку Start

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

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

Во вкладке Key Usage оставляем только tls client, дальше Apply и Sign, потом указываем CA и жмём Start

Если всё сделано правильно, то список сертификатов должен выглядеть примерно так:

Экспортируем сертификаты для клиента

Нажимаем правой клавишей на клиентском сертификате, выбираем Export. В окне экспорта обязательно указываем пароль(не менее 8 символов).

Без указания пароля закрытые ключи не выгрузятся.


Таким же образом экспортируем CA сертификат, только без указания пароля.

Переходим в Files и видим наши сертификаты

Для дальнейшей настройки клиентов нам необходимо будет их загрузить с роутера. Для этого выделяем сертификаты и нажимаем правой клавишей мышки > Download

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

Создадим пул адресов.
Диапазон в котором клиенты будут получать айпишники.
Заходим IP > Pool и добавляем новый

Далее создадим профиль для наших VPN клиентов.

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

Заходим в PPP > Profiles и добавляем новый

Также есть дополнительные интересные опции:

  • Вкладка Protocol
    Use Encryption - Использовать шифрование. Ставим yes
    Use Compression - Использовать сжатие. Ставим No. Есть смысл использовать только если у вас низкоскоростной канал связи. Но нагрузка на процессор будет больше.

  • Вкладка Limits
    Only One - Одновременно с одним логином и паролем, который мы укажем далее. Можно будет подключатся к серверу только один раз, для одного клиента.

Создадим учётную запись для клиентов.

Здесь нужно придумать Имя, Пароль, а также указать наш сервис ovpn и профиль ovpn, который мы создали

Включаем OpenVPN сервер

PPP > Interface и нажимаем OVPN Server

Отмечаем галочкой Enabled
Port - порт меняем при необходимости, или оставляем по дефолту
Mode - Режим работы. ethernet - tap, ip - tun
Default Profile - Указываем профиль который мы создали
Certificate - Выбираем наш сертификат сервера
Require Client Certificate - Включаем проверку клиентских сертификатов сервером.
Auth - Оставляем только sha1
Cipher - Шифр. Оставляем aes 256

Настройка Firewall

Открываем порт

Для подключения к VPN серверу необходимо открыть порт. В нашем случае это 1194 tcp

IP > Firewall

На вкладке Action, Action соответственно Accept

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

Загрузим на устройство наши сертификаты.

Открываем Files жмём Upload

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

System > Certificates

Для начала импортируем CA сертификат

Хотя CA сертификат для настройки OpenVPN клиента на Mikrotik роутере не нужен. Необходим только клиентский сертификат. Но пусть будет на всякий случай.

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

Флаги возле импортированых сертификатов должны быть как у меня(LAT для CA и KT для клиентского сертификата).

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

Открываем PPP

Connect To - IP адрес или доменное имя нашего VPN сервера
Port - Порт
Mode - Режим работы
User - Пользователь
Password - Пароль
Profile - Профиль
Certificate - Импортированный сертификат клиента
Auth - sha1
Cipher - aes 256
Use Peer DNS - Использование DNS сервера
Add Default Route - Использовать как маршрут по умолчанию

Проверяем доступность VPN сервера.
Для этого открываем терминал на клиенте и запускаем пинг на сервер. В нашем случае это 10.1.1.1

Если пинг есть, то клиент подключился к серверу.

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

Для настройки клиента в linux системе необходимо для начала установить openvpn пакет, если его нет.

Debian/Ubuntu

apt update
apt install openvpn

Теперь ложим наши сертификаты в директорию /etc/openvpn/client

Создаем в этой же папке конфиг для клиента client.conf. Между тегов вставляем содержимое наших сертификатов.

client
tls-client
dev tun
proto tcp                               ### Mikrotik uses TCP only
remote 192.168.87.32                    ### or IP address
port 1194                               ### If you use defult port
resolv-retry infinite
nobind
persist-key
persist-tun

<ca>
</ca>

<key>
</key>

<cert>
</cert>

askpass /etc/openvpn/client/user.conf
auth-user-pass /etc/openvpn/client/auth.conf

auth SHA1
verb 3
cipher AES-256-CBC

;route 192.168.1.0 255.255.255.0

Так же создаём файл auth.conf и пишем в него наш логин/пароль который создавали на роутере во вкладке Secrets.

<username>
<password>

И ещё один файл user.conf, в котором будет содержатся наш пароль заданый при экспорте ключей.

<password>

Теперь пробуем запустить наш OpenVPN клиент.

systemctl start openvpn-client@client

И сразу смотрим статус нашего сервиса на наличие ошибок.

systemctl status openvpn-client@client

Если ошибок нет, пробуем пинговать 10.1.1.1

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

Скачиваем VPN клиент https://openvpn.net/community-downloads/

Конфиг файл делаем немного другой.

client1.ovpn

client
tls-client
dev tun
proto tcp                               #### Mikrotik uses TCP only
remote 192.168.87.32                    ### or IP address
port 1194                               ####If you use defult port
resolv-retry infinite
nobind
persist-key
persist-tun
auth-user-pass


<ca>
</ca>

<key>
</key>

<cert>
</cert>


auth SHA1
verb 3
cipher AES-256-CBC

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

Для настройки на телефоне, сначала скачиваем и ставим офф. OpenVPN клиент, потом берём конфиг как для Windows и в клиенте импортируем. Дальше запускаем.