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

Справочник системного администратора

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 завершена.

Tags: