Установка и настройка OpenVPN сервера с помощью docker-compose / Хабр

Всем привет, последнее время все сложней чувствовать себя комфортно в интернете, большинство полезных ресурсов недоступны рядовому пользователю. В эти темные времена — VPN единственное стабильно работающие решение для обхода любых ограничений в сети.

OpenVPN одна из самых популярных программ для организации VPN туннеля, а docker-compose отличный инструмент для установки и настройки программ с помощью одного docker-compose.yml файла.

В статье я расскажу как быстро и просто настроить OpenVPN сервер на собственном VPS используя docker-compose. За основу возьмем образ kylemanna/docker-openvpn.

Заинтересовавшихся прошу под кат.

Установка OpenVPN сервера

Итак, для работы нам понадобятся: собственный VPS сервер, установленный docker и docker-compose.

Создаем новый docker-compose.yml

touch docker-compose.yml

Копируем следующие строчки в созданный docker-compose.yml

version: '2'  
services:  
  openvpn:
    cap_add:
     - NET_ADMIN
    image: kylemanna/openvpn
    container_name: openvpn
    ports:
     - "1194:1194/udp"
    restart: always
    volumes:
     - {path_to_save_openvpn_config}:/etc/openvpn

Меняем {path_to_save_openvpn_config} на путь где OpenVPN будет хранить свои настройки, у меня это /home/administrator/openvpn/.

Docker-compose файл готов. Запустим следующие команды для инициализации OpenVPN и создания сертификата сервера. Замените {vpn_server_address} на адрес вашего сервера,

это может быть как IP адрес (10.10.10.8), так и доменное имя (vpn.server.com).

docker-compose run --rm openvpn ovpn_genconfig -u udp://{vpn_server_address}
docker-compose run --rm openvpn ovpn_initpki

Во время генерации сертификата введите контрольную фразу (Enter PEM pass phrase) и имя сертификата (Common Name).

Советую не забывать контрольную фразу, т.к. она понадобится на следующем шаге при создании клиентских сертификатов.

Генерирование серверного сертификата

Генерирование сертификата обычно занимает некоторое время, так что откиньтесь на спинку стула и расслабьтесь.

Когда сертификат готов, можно запускать наш OpenVPN сервер.

docker-compose up -d openvpn

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

Чтобы соединиться с вашим OpenVPN сервером понадобится клиентский сертификат.

Для создания клиентского сертификата используем следующую команду:

docker-compose run --rm openvpn easyrsa build-client-full {client_name} nopass  

Не забываем заменить {client_name} на имя клиента, например my_phone.

Во время создания сертификата вас попросят ввести контрольную фразу (Enter passpharse) из предыдущего шага.

Если вы хотите максимальной безопасности, рекомендую убрать опцию nopass из предыдущей команды, чтобы назначить клиентскому сертификату контрольную фразу.

Когда клиентский сертификат сгенерирован давайте экспортируем его в .ovpn файл и отправим клиенту

docker-compose run --rm openvpn ovpn_getclient {client_name} > certificate.ovpn  

На этом все, надеюсь кому-то это статья поможет вновь ощутить свободу в интернете.

Дополнительную информацию вы можете найти на официальном сайте образа kylemanna/docker-openvpn.

Источник