OpenVPN в Docker за 5 минут
Всем привет!
Два с половиной года назад я писал пост о том как быстро поднять OpenVPN на своем сервере при помощи Docker. Это было сильно быстрее чем устанавливать и конфигурировать OpenVPN вручную, но есть вариант настроить все еще быстрее при помощи Docker-compose.
Предполагается что вы установили Docker и Docker-compose.
Создаем директорию docker-compose-openvpn и создаем внутри нее файл docker-compose.yml с вот таким содержанием:
docker-compose.yml
1 | version: '2' |
Это копипаст из доки автора решения - https://github.com/kylemanna/docker-openvpn/blob/master/docs/docker-compose.md
Затем инициализируем конфигурацию
1 | docker-compose run --rm openvpn ovpn_genconfig -u udp://VPN.SERVERNAME.COM |
Тут вместо VPN.SERVERNAME.COM можете просто указать IP своего сервера.
В процессе генерации конфига OpenVPN попросит задать пароль. Задаем его и сохраняем. Он понадобится для управления пользователями.
Затем необходимо создать новых пользователей VPN и сгенерировать им клиентские конфиги.
Тут я для удобства запилил 2 bash-скрипта. Конфиги создаю менее секьюрные, без запроса пароля. За это отвечает параметр nopass.
new.sh
1 | #!/bin/bash |
remove.sh
1 | #!/bin/bash |
Не забудьте сделать chmod +x new.sh && chmod +x remove.sh
Затем создаем первого пользователя с именем test.
1 | ./new.sh test |
Здесь нам пригодится ранее заданный пароль на управление сертификатами. В итоге в директории появится конфиг test.ovpn который теперь необходимо скачать с сервера и импортировать в свой VPN-клиент.
Стартуем VPN
1 | docker-compose up -d |
Вот собственно и все!
UPD: Скомпоновал все это в отдельный репозиторий и добавил удобный мейкфайл
Теперь для того чтобы развернуть OpenVPN достаточно на сервере выполнить:
- git clone https://github.com/rhamdeew/docker-compose-openvpn.git
- cd docker-compose-openvpn/
- make genconfig host=vpn.example.com
- make initpki
- make new username=example
- make up
Копируем example.ovpn из client_configs/example.ovpn к себе в OpenVPN-клиент и пользуемся)