Как быстро поднять сервер OpenVPN на своем VPS

Если вам нужен личный VPN-сервис как прокси или для создания приватной сети между своими устройствами, вы можете использовать этот рецепт и запустить OpenVPN на своем сервере, особо не вчитываясь в особенности его конфигурации.
Этот пост - упрощение инструкций к установке образа Docker kylemanna/openvpn, ничего нового здесь нет. Но мне было бы удобно иметь все конфиги на одной странице, как здесь, чтобы быстро копировать и вставлять, и может быть, вам тоже будет удобно.
Предварительная подготовка
У вас на сервере должны быть установлены Docker и Docker Compose прежде, чем мы начнем. Инструкции по их установке в вашей ОС вы можете найти в сети. Например, eсли вы используете Ubuntu, инструкцию можно найти здесь: Установка и настройка Docker в Ubuntu (см. заголовки "Установка Docker на Ubuntu" и "Установка Docker Compose на Ubuntu").
После установки того и другого создайте где-нибудь на сервере папку и зайдите в нее:
mkdir vpn
cd vpn
Здесь мы будет создавать нужные конфиги и скрипты.
Создайте файл docker-compose.yml
И заполните следующим содержимым:
version: "3"
services:
ovpn:
image: kylemanna/openvpn:2.4
restart: always
volumes:
- ./ovpn-data:/etc/openvpn:rw
ports:
- 1194:1194/udp
cap_add:
- NET_ADMIN
Создайте файл init.sh
И заполните:
#!/bin/bash -x
docker-compose run --rm ovpn ovpn_genconfig -u udp://ВАШIP
docker-compose run --rm ovpn ovpn_initpki
Вместо ВАШIP
напишите публичный IP-адрес своего сервера (тот, к которому можно подключиться из интернета).
Сделайте созданный скрипт исполняемым следующей командой:
chmod +x init.sh
Сгенерируйте ключи CA
(CA - Certificate Authority - удостоверяющий центр сертификатов).
Выполните команду:
./init.sh
Скрипт попросит вас ввести кодовую фразу - "passphrase". Сгенерируйте случайный пароль (например, с помощью генератора паролей 1Password), вставьте и сохраните на будущее. Эта кодовая фраза потребуется при генерации новых клиентских сертификатов.
Когда скрипт попросит "Common Name", введите что угодно.
Запустите VPN-сервер
Командой:
docker-compose up -d
Процесс будет запущен в фоне. Кроме того, он будет автоматически запускаться после перезагрузки машины: об этом позаботится Docker.
Чтобы остановить VPN-сервер, выполните:
docker-compose down
Вы также можете посмотреть последние логи:
docker-compose logs --tail 100
Создайте файл create_client.sh
И заполните следующим содержимым:
#!/bin/bash -e
if [ "$#" -ne 1 ]
then
echo "Введите название сертификата!"
exit 1
fi
docker-compose run --rm ovpn easyrsa build-client-full $1 nopass
docker-compose run --rm ovpn ovpn_getclient $1 > $1.ovpn
Сделайте его исполняемым:
chmod +x create_client.sh
Вот и все
Теперь у вас есть рабочий VPN-сервер.
Читайте дальше о том, как к нему подключиться.
Генерация клиентских сертификатов
Скрипт create_client.sh
принимает один аргумент: название сертификата. Вы можете запустить его следующим образом:
./create_client.sh myvpn-me
Он создаст файл myvpn-me.ovpn
в той же папке: это конфигурация для клиента OpenVPN. Скачайте этот файл с сервера и импортируйте в OpenVPN на своем ПК или мобильном устройстве, чтобы подключиться.
Все подключенные клиенты будут выходить в интернет через этот сервер. Кроме того, они получат локальные IP-адреса в этой сети и смогут подключаться друг к другу (чтобы играть в сетевые игрушки, например).
Материал подготовлен с ❤️ редакцией Кухни IT.