VyOS. Настройка OpenVPN Server

OpenVPN это еще одна из реализаций VPN туннелей. У нее есть некоторые преимущества. Например возможность работы по произвольному порту и использование TCP или UDP на выбор, а так же возможность использования Proxy. Но и есть относительные минусы, например требуется установка своего клиента.

Программный маршрутизатор VyOS помимо L2TP, DMVPN, IPsec так же поддерживает OpenVPN.

Для настройки будем считать, что:
eth0 — внешний интерфейс;
192.168.123.1 — внутренний IP адрес маршрутизатора;
255.255.255.0 (/24) — маска внутренней сети;
172.16.0.0/24 — виртуальная сеть для OpenVPN клиентов;
1.1.1.2 — внешний IP адрес.

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

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

cp -rv /usr/share/doc/openvpn/examples/easy-rsa/2.0/ /config/rsa2

После копирования, изменим параметры создаваемых сертификатов, для этого отредактируем файл /config/rsa2/vars:

nano /config/rsa2/vars

Полезные параметры в vars:

export KEY_SIZE=1024
export CA_EXPIRE=3650
export KEY_EXPIRE=3650
export KEY_COUNTRY="RU"
export KEY_PROVINCE="Moscow"
export KEY_CITY="Moscow"
export KEY_ORG="BlackDiver.Net"
export KEY_EMAIL="admin@blackdiver.net"

Описание параметров:
KEY_SIZE — длина ключа;
CA_EXPIRE — время жизни корневого сертификата (в днях);
KEY_EXPIRE — время жизни пользовательских сертификатов;
KEY_COUNTRY — страна, указываемая в сертификате;
KEY_PROVINCE — область, указываемая в сертификате;
KEY_CITY — город;
KEY_ORG — организация;
KEY_EMAIL — адрес электронной почты;

Теперь нужно загрузить переменные (это нужно делать перед каждым началом создания сертификатов):

source /config/rsa2/vars

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

Перейдем в скопированную папку:

cd /config/rsa2

Очистим все текущие сертификаты:

./clean-all

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

./build-ca

Создадим Diffie-Hellman key exchange:

./build-dh

Создадим сертификат сервера (в примере сертификат будет иметь имя blackdiver-server):

./build-key-server blackdiver-server

Создадим пользовательские сертификаты ( в примере создаваемый пользовательский сертификат будет иметь имя user1):

./build-key user1

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

При запросе пароля просто нажимаем Enter:

A challenge password []:

При запросе подписи сертификата вводим y и нажимаем Enter:

Sign the certificate? [y/n]:
1 out of 1 certificate requests certified, commit?

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

Настройка OpenVPN

Нужные сертификаты созданы. Теперь перейдем к настройке OpenVPN сервера на VyOS.

Проведем базовую настройку:
set interfaces openvpn vtun0 mode server
set interfaces openvpn vtun0 server subnet 172.16.0.0/24
set interfaces openvpn vtun0 server name-server 192.168.123.1
set interfaces openvpn vtun0 server domain-name blackdiver.net
set interfaces openvpn vtun0 tls cert-file /config/rsa2/keys/blackdiver-server.crt
set interfaces openvpn vtun0 tls key-file /config/rsa2/keys/blackdiver-server.key
set interfaces openvpn vtun0 tls ca-cert-file /config/rsa2/keys/ca.crt
set interfaces openvpn vtun0 tls dh-file /config/rsa2/keys/dh1024.pem

Описание команд:
Создаем OpenVPN сервер и назначаем ему виртуальный интерфейс vtun0:

set interfaces openvpn vtun0 mode server

Создаем виртуальную сеть 172.16.0.0/24 для OpenVPN клиентов:

set interfaces openvpn vtun0 server subnet 172.16.0.0/24

Передаем OpenVPN клиентам адрес DNS сервера:

set interfaces openvpn vtun0 server name-server 192.168.123.1

Указываем локальный домен для OpenVPN клиентов:

set interfaces openvpn vtun0 server domain-name blackdiver.ovpn

Настройка сертификатов для сервера:

set interfaces openvpn vtun0 tls cert-file /config/rsa2/keys/blackdiver-server.crt
set interfaces openvpn vtun0 tls key-file /config/rsa2/keys/blackdiver-server.key
set interfaces openvpn vtun0 tls ca-cert-file /config/rsa2/keys/ca.crt
set interfaces openvpn vtun0 tls dh-file /config/rsa2/keys/dh1024.pem

Настройка маршрутизации

Если требуется, чтобы клиенты выходили в интернет через VPN канал:

set interfaces openvpn vtun0 replace-default-route

и разрешаем трансляцию адресов для подсети 172.16.0.0/24:

set nat source rule 110 outbound-interface eth0
set nat source rule 110 source address 172.16.0.0/24
set nat source rule 110 translation address masquerade

Если только требуется доступ к локальной сети за маршрутизатором:

set interfaces openvpn vtun0 server push-route 192.168.123.0/24

Дополнительные настройки

Если используется DNS-forwarder на маршрутизаторе VyOS, то нужно его включить на интерфейсе vtun0:

set service dns forwarding listen-on vtun0

Если у маршрутизаторе несколько IP адресов и требуется разрешить подключение к VPN только на один из адресов:

set interfaces openvpn vtun0 local-host 1.1.1.2

Изменить порт OpenVPN на 80-й (по умолчанию используется 1194 порт):

set interfaces openvpn vtun0 local-port 80

Использовать TCP протокол (по умолчанию используется UDP):

set interfaces openvpn vtun0 protocol tcp-passive

Настройка VyOS закончена.
Сохраняем конфигурацию:

commit
save

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

Для настройки OpenVPN клиентов нам потребуются корневой сертификат, сертификат и ключи пользователя user1:

user1.crt;
user1.key;
ca.crt.

Эти сертификаты находятся в каталоге /config/rsa2/ и их можно скопировать себе с помощью утилиты SCP или WinSCP с маршрутизатора.

Далее создаем текстовый файл конфигурации (например blackdiver-openvpn.ovpn) и записываем в него настройки подключения:

Конфигурация для подключения по протоколу UDP:
client
proto udp
remote-cert-tls server
verb 2
dev tun0
cert user1.crt
key user1.key
ca ca.crt
remote 1.1.1.2 1194

Конфигурация для подключения по протоколу TCP:
client
proto tcp
remote-cert-tls server
verb 2
dev tun0
cert user1.crt
key user1.key
ca ca.crt
remote 1.1.1.2 1194

где:
1.1.1.2IP адрес сервера;
1194 — порт, на котором работает OpenVPN сервер.

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

http-proxy 2.2.2.2 8080

где:
2.2.2.2IP адрес прокси сервера;
8080 — порт, на котором работает прокси.

после этого, помещаем все файлы (ca.crt, user1.crt, user1.key, blackdiver-openvpn.ovpn) в каталог config на клиенте и инициируем подключение.

Отзыв клиентских сертификатов

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

cd /config/rsa2/

Отзываем сертификат пользователя user1:

./revoke-full user1

При первом отзыве, создастся файл crl.pem в котором будет храниться список отозванных сертификатов. Этот файл нужно прописать в настройках сервера:

set interfaces openvpn vtun0 tls crl-file /config/rsa2/keys/crl.pem

Команды для диагностики

Посмотреть подключенных клиентов:

show openvpn server status

Перезапустить OpenVPN сервер:

reset openvpn interface vtun0

Посмотреть список отозванных сертификатов:

openssl crl -in /config/rsa2/crl.pem -text
cat /config/rsa2/keys/index.txt

Настройка OpenVPN на VyOS закончена. Из нюансов можно отметить, что сервер OpenVPN можно настроить на 443/TCP или 80/TCP порт и тогда можно будет инициировать подключение даже если в сети доступен только просмотр Web страниц и используется прокси.

Заказать создание и поддержку безопасной IT-инфраструктуры любой сложности

Быть уверенным в своей IT-инфраструктуре — это быть уверенным в завтрашнем дне.

Для того, чтобы сделать заказ:

Заполните форму обратной связи и мы обязательно с вам свяжемся:
Форма обратной связи
Позвоните нам по телефону:
+7(909)952-44-33
Напишите нам на электронную почту:
order@blackdiver.net
Напишите нам в Telegram:
Telegram
Другие способы связи Вы сможете найти в разделе Контакты.