OpenVPN and Docker
Быстрое разворачивание OpenVPN в Docker контейнере Запуск OpenVPN сервера за пять минут, используя базовый образ Alpine при помощи Docker
Как использовать!
Кратко
cd /var/tmp/ git clone https://github.com/Freezl/OpenVPN_Docker cd ./OpenVPN_Docker ./init.sh
Запустить OpenVPN контейнер
docker run -d --name=openvpn -v /var/tmp/OpenVPN_Docker/volumes:/etc/openvpn --privileged -p 1194:1194/udp --net=host openvpn
Немного описания
Решил не помещать easy-rsa внутрь контейнера, а выполнять действия с ключами на хост системе. При запуске init.sh билдится контейнер, скачивается easy-rsa, инициализируется хранилище ключей, создаются все ключи для сервера и копируются в рабочий каталог OVPN. Конфиг, логи и созданные ключи хранятся в каталоге volumes на хост системе. В ходе создания ключей будет задано несколько вопросов. Обращаю внимание, что все ключи создаются в параметром nopass, это значит они не защищены паролем.
Для создания клиентских ключей использовать команду:
cd /var/tmp/OpenVPN_Docker/easy-rsa/easyrsa3/ ./easyrsa build-client-full User nopass
Собираем конфиг для клиента
Заготовка в файле /var/tmp/OpenVPN_Docker/volumes/client.conf
. Необходимо добавить с файл содержимое файлов
/var/tmp/OpenVPN_Docker/easy-rsa/easyrsa3/pki/issued/User.crt /var/tmp/OpenVPN_Docker/easy-rsa/easyrsa3/pki/private/User.key /var/tmp/OpenVPN_Docker/easy-rsa/easyrsa3/pki/ca.crt /var/tmp/OpenVPN_Docker/volumes/keys/ta.key
Заключённых в тэги <cert>, <key>, <ca> и <tls-auth> соответственно.