Начало работы

Для выполнения этого урока сначала необходимо установить Docker на нашем сервере. После его установки нам нужно только выполнить следующие шаги.

Скачиваем репозиторий с контейнером:

git clone https://github.com/kylemanna/docker-openvpn.git

Мы получаем доступ к папке, которую мы скачали:

 cd docker-openvpn 

И создаем образ с именем, которое мы хотим — в моём случае vpn — из контейнера:

 docker build -t vpn . 

Затем нам нужно будет создать каталог, куда мы подключим рабочую нагрузку контейнеров, в моем случае я создам его в /opt :

 mkdir -p /opt/vpn-data 

Конфигурация OpenVPN

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

 docker run -v /opt/vpn-data:/etc/openvpn --rm vpn ovpn_genconfig -u udp://[IP_Publica_Servidor]:3000 

Здесь мы должны добавить наш каталог, имя контейнера, который мы создали ранее, а затем добавить общедоступный IP-адрес нашего сервера.

С этим у нас уже есть наш файл конфигурации, теперь следующим будет создание PKI и CA.

Генерация PKI и CA

Чтобы OpenVPN работал правильно, нам нужно создать закрытый ключ, открытый ключ и сертификат. Для этого мы выполним следующее:

 docker run -v /opt/vpn-data:/etc/openvpn --rm -it vpn ovpn_initpki 

Запускаем контейнер OpenVPN

Наконец, мы запускаем контейнер, который будем использовать в качестве сервера OpenVPN:

 docker run --name vpn -v /opt/vpn-data:/etc/openvpn --restart=always -d -p 3000:1194/udp --cap-add=NET_ADMIN vpn 

Добавить пользователя

Мы можем создавать пользователей или клиентов для доступа к VPN. Для этого нам нужно будет сгенерировать файлы .ovpn для каждого пользователя. Соединения будут выполняться без добавления пароля, поскольку процесс проверки будет проходить через ключ, сертификат и пользователя.

Чтобы создать нового клиента:

 docker run -v /opt/vpn-data:/etc/openvpn --rm -it vpn easyrsa build-client-full USUARIO nopass 

Где USER мы будем указывать имя пользователя, которого мы хотим.

Теперь мы создали пользователя, наконец, мы должны сгенерировать файл для вашего подключения:

 docker run -v /opt/vpn-data:/etc/openvpn --rm vpn ovpn_getclient USUARIO > USUARIO.ovpn 

Его мы уже можем импортировать файл OVPN в любой клиент OpenVPN, и мы можем установить соединение.