Поднимаем виртуальную частную сеть (VPN) на базе технологии OpenVPN на программном маршрутизаторе VyOS
Загрузка EasyRSA-3
В стабильном релизе VyOS используется EasyRSA-2, поэтому для использования 3-ей версии её необходимо загрузить.
Загружаем актуальную версию EasyRSA-3
Актуальную версию можно взять с GitHub.
wget в VyOS умеет только HTTP или FTP, поэтому ищите альтернативные способы загрузки архива.
# wget https://github.com/OpenVPN/easy-rsa/releases/download/v3.0.6/EasyRSA-unix-v3.0.6.tgz |
Переходим в распакованную директорию и приступаем к созданию ключей.
Создание ключей и сертификатов
Создаем инфраструктуру открытых ключей
Следующая команда создаст директорию pki
с конфигурационным файлом и директориями под ключи и сертификаты.
# ./easyrsa init-pki |
Создаем корневой сертификат
На данном этапе потребуется придумать кодовую фразу для дальнейшей подписи сертификатов, а так же имя для нового центра сертификации (ЦС):
# ./easyrsa build-ca |
Сертификат ЦС будет создан по пути /config/auth/ca/pki/ca.crt
Создание сертификата сервера
При создании сертификата появится запрос на подпись центром сертификации, вводим пароль с предыдущего шага. Ключ nopass
можно не использовать, если есть задача повысить безопасность.
# ./easyrsa build-server-full dev.bogachev nopass |
Формируем ключ Диффи Хеллмана
Генерация может занять какое-то время, наберитесь терпения :)
./easyrsa gen-dh |
Ключ будет создан по пути /config/auth/ca/pki/dh.pem
Генерируем клиентский сертификат
При выполнении запроса потребуется ввести пароль для клиентского сертификата, а так же пароль для подписи центром сертификации.
Можно использовать ключ nopass
, если не требуется пароль.
./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
:
set interfaces openvpn vtun0 mode 'server' |
Подтверждаем и сохраняем конфигурацию:
commit |
Проверяем статус:
$ show interfaces openvpn |
По умолчанию трафик будет ходить только на маршрутизатор и между клиентами VPN.
Для того, чтобы разрешить клиентам VPN доступ во внутреннюю сеть, к примеру 10.0.10.0/24, необходимо добавить в конфигурацию:
set interfaces openvpn vtun0 server push-route 10.0.10.0/24 |
Настраиваем клиент OpenVPN
Настройка OpenVPN клиента будет выполняться под MacOS используя клиент Shimo. Принципиальной разницы между классическим OpenVPN нет.
Создаём новое подключение
Вносим базовую конфигурацию
Вводим IP-адрес подключения, имя подключения, а так же подгружаем сертификаты.
Выполняем расширенную конфигурацию
Отключаем пропуск всего трафика через VPN. Прочие параметры по-своему усмотрению.
Экспертные настройки
Обязательно указываем алгоритм шифрования и тип хэширования. Параметры должны совпадать между клиентом и сервером.
Выполняем подключение
Если для клиентского сертификата была указана кодовая фраза, то при первом подключении система запросит её.
Проверяем подключение клиента со стороны сервера: