Настройка OpenVPN на VyOS с ключами Easy-RSA 3

Настройка OpenVPN на VyOS с ключами Easy-RSA 3

Roman Bogachev VMware Specialist | Drone Pilot | Traveler

Поднимаем виртуальную частную сеть (VPN) на базе технологии OpenVPN на программном маршрутизаторе VyOS

Загрузка EasyRSA-3

В стабильном релизе VyOS используется EasyRSA-2, поэтому для использования 3-ей версии её необходимо загрузить.

Загружаем актуальную версию EasyRSA-3

Актуальную версию можно взять с GitHub.
wget в VyOS умеет только HTTP или FTP, поэтому ищите альтернативные способы загрузки архива.

1
2
3
# wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.6/EasyRSA-unix-v3.0.6.tgz
tar -xzf EasyRSA-v3.0.6
mv EasyRSA-v3.0.6 ca

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

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

Создаем инфраструктуру открытых ключей

Следующая команда создаст директорию pki с конфигурационным файлом и директориями под ключи и сертификаты.

1
2
3
4
# ./easyrsa init-pki

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /config/auth/ca/pki

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

На данном этапе потребуется придумать кодовую фразу для дальнейшей подписи сертификатов, а так же имя для нового центра сертификации (ЦС):

1
2
3
4
5
# ./easyrsa build-ca
Using SSL: openssl OpenSSL 1.0.2l 25 May 2017
Enter New CA Key Passphrase:
...
Common Name (eg: your user, host, or server name) [Easy-RSA CA]: dev.bogachev

Сертификат ЦС будет создан по пути /config/auth/ca/pki/ca.crt

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

При создании сертификата появится запрос на подпись центром сертификации, вводим пароль с предыдущего шага. Ключ nopass можно не использовать, если есть задача повысить безопасность.

1
2
3
4
5
6
# ./easyrsa build-server-full dev.bogachev nopass
...
Certificate is to be certified until Feb 11 15:45:42 2022 GMT (1080 days)

Write out database with 1 new entries
Data Base Updated

Формируем ключ Диффи Хеллмана

Генерация может занять какое-то время, наберитесь терпения :)

1
./easyrsa gen-dh

Ключ будет создан по пути /config/auth/ca/pki/dh.pem

Генерируем клиентский сертификат

При выполнении запроса потребуется ввести пароль для клиентского сертификата, а так же пароль для подписи центром сертификации.
Можно использовать ключ nopass, если не требуется пароль.

1
./easyrsa build-client-full User1

Листинг сертификатов и ключей

Все созданные сертификаты находятся в директории ca:

  • ca.crt/config/auth/Eca/pki/ca.crt
  • dh.pem/config/auth/ca/pki/dh.pem
  • dev.bogachev.key/config/auth/ca/pki/private/dev.bogachev.key
  • dev.bogachev.crt/config/auth/ca/pki/issued/dev.bogachev.crt
  • User1.key/config/auth/ca/pki/private/User1.key
  • User1.crt/config/auth/ca/pki/issued/User1.crt

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

Переходим в конфигурационный режим на маршрутизаторе и настраиваем интерфейс для OpenVPN:

1
2
3
4
5
6
7
8
set interfaces openvpn vtun0 mode 'server'
set interfaces openvpn vtun0 server subnet '10.1.1.0/24'
set interfaces openvpn vtun0 tls ca-cert-file '/config/auth/ca/pki/ca.crt'
set interfaces openvpn vtun0 tls cert-file '/config/auth/ca/pki/issued/dev.bogachev.crt'
set interfaces openvpn vtun0 tls dh-file '/config/auth/ca/pki/dh.pem'
set interfaces openvpn vtun0 tls key-file '/config/auth/ca/pki/private/dev.bogachev.key'
set interfaces openvpn vtun0 encryption aes256
set interfaces openvpn vtun0 hash sha256

Подтверждаем и сохраняем конфигурацию:

1
2
commit
save

Проверяем статус:

1
2
3
4
5
$ show interfaces openvpn
Codes: S - State, L - Link, u - Up, D - Down, A - Admin Down
Interface IP Address S/L Description
--------- ---------- --- -----------
vtun0 10.1.1.1/24 u/u

По умолчанию трафик будет ходить только на маршрутизатор и между клиентами VPN.
Для того, чтобы разрешить клиентам VPN доступ во внутреннюю сеть, к примеру 10.0.10.0/24, необходимо добавить в конфигурацию:

1
set interfaces openvpn vtun0 server push-route 10.0.10.0/24

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

Настройка OpenVPN клиента будет выполняться под MacOS используя клиент Shimo. Принципиальной разницы между классическим OpenVPN нет.

Создаём новое подключение

Вносим базовую конфигурацию

Вводим IP-адрес подключения, имя подключения, а так же подгружаем сертификаты.

Выполняем расширенную конфигурацию

Отключаем пропуск всего трафика через VPN. Прочие параметры по-своему усмотрению.

Экспертные настройки

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

Выполняем подключение

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

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