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

Обновлено и опубликовано Опубликовано:

Роутеры Mikrotik позволяют поднять различные сервер VPN. В данной инструкции мы рассмотрим настройку OpenVPN. Мы выполним:

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

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

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

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

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

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

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

Сертификаты мы можем создать несколькими способами. Разберем 2 — на роутере 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. Нужные нам файлы окажутся на роутере.

Переходим в System - Certificates:

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

Кликаем по Import:

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

На вкладке 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

# Сети # Интернет # Безопасность
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет